nofollow к внешним ссылкам viewtopic.php

V

VIP

Гость
Dr_Brown, абсолютно верно, только те, которые нужно пропускать. По существу можно сделать следущее
PHP:
$bb_cfg['allowed_url'] = array($domain_name,'URL1','URL2',...,'URLn');
А URL1-URLn возможно url смежных проектов
внутренние ссылки тоже попадают в nofollow
 

Nightmare

Легенда
Позже гляну если будет время. В принципе
// Замена добавленных не через bb_code ссылок (прописать только global)
Найти
PHP:
return "<a href=\"$href\" class=\"postLink\">$name</a>";
Заменить
PHP:
return (in_array(parse_url($href,PHP_URL_HOST), $bb_cfg['allowed_url'])) ? "<a href=\"$href\" class=\"postLink\">$name</a>" : "<a rel=\"nofollow\" href=\"$href\" class=\"postLink\">$name</a>";

Работает. Есть пару идей еще
 
V

VIP

Гость
Позже гляну если будет время. В принципе
// Замена добавленных не через bb_code ссылок (прописать только global)
Найти
PHP:
return "<a href=\"$href\" class=\"postLink\">$name</a>";
Заменить
PHP:
return (in_array(parse_url($href,PHP_URL_HOST), $bb_cfg['allowed_url'])) ? "<a href=\"$href\" class=\"postLink\">$name</a>" : "<a rel=\"nofollow\" href=\"$href\" class=\"postLink\">$name</a>";

Работает. Есть пару идей еще
Код:
<td class="row1"><div class="post_wrap post_body"><a rel="nofollow" href="http://сайт/viewtopic.php?t=683" class="postLink">74</a></div></td>
 

Nightmare

Легенда
А если просто без вставить ссылку без использования bb_code. Эта часть именно за это отвечает. а судя по ссылке, что тут выложена использовался тег
Код:
[url=URL]74[/url]
 
V

VIP

Гость
Nightmare,
без использования bb_code
Код:
<span id="pp_705"><a href="http://сайт/viewtopic.php?t=683" class="postLink">http://сайт/viewtopic.php?t=683</a></span>
без
Код:
return (in_array(parse_url($href,PHP_URL_HOST), $bb_cfg['allowed_url'])) ? "<a href=\"$href\" class=\"postLink\">$name</a>" : "<a rel=\"nofollow\" href=\"$href\" class=\"postLink\">$name</a>";
 

Nightmare

Легенда
К сожалению здесь отсутствует один замечательный смайлик, прекрасно описывающий эту ситуацию.
Берем ссылку вставляем в сообщение отправляем, без всяких бб-кодов.
а не
без
Код:
return (in_array(parse_url($href,PHP_URL_HOST), $bb_cfg['allowed_url'])) ? "<a href=\"$href\" class=\"postLink\">$name</a>" : "<a rel=\"nofollow\" href=\"$href\" class=\"postLink\">$name</a>";
Хоть посмотрели бы в какую функцию вставляете код, и что она делает

А та часть, с использованием тегов бб кодов работать к сожалению не будет. И еще желательно почистить bb_posts_html, если проверка идет на старых постах
 
V

VIP

Гость
К сожалению здесь отсутствует один замечательный смайлик, прекрасно описывающий эту ситуацию.
Берем ссылку вставляем в сообщение отправляем, без всяких бб-кодов.
а не
Хоть посмотрели бы в какую функцию вставляете код, и что она делает
:Dя имел ввиду что я не делал это http://torrentpier.com/threads/nofollow-к-внешним-ссылкам-viewtopic-php.10612/#post-38834
 

Nightmare

Легенда
includes/bb_code.php
Найти и удалить
PHP:
$url_exp    = '[\w\#!$%&~/.\-;:=,?@а-яА-Я\[\]+]+?';
Найти и удалить
PHP:
            "#\[url\](https?://$url_exp)\[/url\]#isu"                => '<a href="$1" class="postLink">$1</a>',
            "#\[url\](www\.$url_exp)\[/url\]#isu"                    => '<a href="http://$1" class="postLink">$1</a>',
            "#\[url=(https?://$url_exp)\]([^?\n\t].*?)\[/url\]#isu"  => '<a href="$1" class="postLink">$2</a>',
            "#\[url=(www\.$url_exp)\]([^?\n\t].*?)\[/url\]#isu"      => '<a href="http://$1" class="postLink">$2</a>',
Найти
PHP:
// Tag replacements
$text = preg_replace($this->preg_search, $this->preg_repl, $text);
$text = str_replace($this->str_search, $this->str_repl, $text);
Вставить после
PHP:
// [url]
$url_exp    = '[\w\#!$%&~/.\-;:=,?@а-яА-Я\[\]+]+?';
$text = preg_replace_callback("#\[url\](https?://$url_exp)\[/url\]#isu", array(&$this, 'url_callback'), $text);
$text = preg_replace_callback("#\[url\](www\.$url_exp)\[/url\]#isu", array(&$this, 'url_callback'), $text);
$text = preg_replace_callback("#\[url=(https?://$url_exp)\]([^?\n\t].*?)\[/url\]#isu", array(&$this, 'url_callback'), $text);
$text = preg_replace_callback("#\[url=(www\.$url_exp)\]([^?\n\t].*?)\[/url\]#isu", array(&$this, 'url_callback'), $text);
Найти
PHP:
function code_callback ($m)
{
$code = trim($m[2]);
$code = str_replace('  ', '&nbsp; ', $code);
$code = str_replace('  ', ' &nbsp;', $code);
$code = str_replace("\t", '&nbsp; ', $code);
$code = str_replace(array('[', ']', ':', ')'), array('&#91;', '&#93;', '&#58;', '&#41;'), $code);
return $this->tpl['code_open'] . $code . $this->tpl['code_close'];
}
Вставить после
PHP:
/**
* [url] callback
*/
function url_callback ($m)
{
global $bb_cfg;
$url = trim($m[1]);
$url_name = (isset($m[2])) ? trim($m[2]) : $url;
return (in_array(parse_url($url,PHP_URL_HOST),$bb_cfg['allowed_url'])) ? "<a href=\"$url\" class=\"postLink\">$url_name</a>" : "<a rel=\"nofollow\" href=\"$url\" class=\"postLink\">$url_name</a>";
}
Найти
PHP:
return "<a href=\"$href\" class=\"postLink\">$name</a>";
Заменить
PHP:
return (in_array(parse_url($href,PHP_URL_HOST), $bb_cfg['allowed_url'])) ? "<a href=\"$href\" class=\"postLink\">$name</a>" : "<a rel=\"nofollow\" href=\"$href\" class=\"postLink\">$name</a>";
config.php
PHP:
$bb_cfg['allowed_url'] = array($domain_name); // 'allowed.site','allowed2.site','www.allowed.site','www.allowed2.site'

На работоспособность проверил. Если у всех все будет хорошо оформлю модом. Так что тестите на здоровье.
Есть одно замечание на локалке у меня $domain_name не проглатывает, поэтому рекомендую вписывать ссылки ручками, варианты с www и без.
Скрин: Без-имени-1.jpg
 
Сверху