Помощь Необходим хак с параметром добавления к ссылкам тега rel="nofollow"

xatinko

Постоялец
Регистрация
24 Май 2015
Сообщения
51
Реакции
7
Всем привет. Шарящие в PHP и DLE. Для редактора bbcode необходим хак, который бы добавлял к ссылкам тег rel="nofollow". Можно даже изменить параметр [leech] под nofollow, но без кодировок и редиректа, что бы формировал как простую ссылку но с параметром Nofollow.

Сам в коде не особо шарю, но задача кажется не сложная. Пишите цену вопроса.
 

AmiGood

Постоялец
Регистрация
22 Окт 2016
Сообщения
68
Реакции
41
Добавьте в functions.php


Код:
// nofollow noopener noreferrer
function add_nofollow_content($content)
{   
  $content = preg_replace_callback(
    '/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
  function($m) {
    if (strpos($m[1], "АДрес сайта.точка ру-сом-юа") === false)
    return '<a href="'.$m[1].'" rel="nofollow noopener noreferrer" target="_blank">'.$m[2].'</a>';
    else
    return '<a href="'.$m[1].'" target="_blank">'.$m[2].'</a>';
  },
  $content);
    return $content;
  }
add_filter('the_content', 'add_nofollow_content');
 

xatinko

Постоялец
Регистрация
24 Май 2015
Сообщения
51
Реакции
7
Добавьте в functions.php


Код:
// nofollow noopener noreferrer
function add_nofollow_content($content)
{ 
  $content = preg_replace_callback(
    '/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
  function($m) {
    if (strpos($m[1], "АДрес сайта.точка ру-сом-юа") === false)
    return '<a href="'.$m[1].'" rel="nofollow noopener noreferrer" target="_blank">'.$m[2].'</a>';
    else
    return '<a href="'.$m[1].'" target="_blank">'.$m[2].'</a>';
  },
  $content);
    return $content;
  }
add_filter('the_content', 'add_nofollow_content');

Неа не фурычит, а по какому принципу этот код должен работать? Он просто в обычный тег [u r l] добавляет nofollow? Или leech заменяет?
 

AmiGood

Постоялец
Регистрация
22 Окт 2016
Сообщения
68
Реакции
41
Неа не фурычит, а по какому принципу этот код должен работать? Он просто в обычный тег [u r l] добавляет nofollow? Или leech заменяет?
а Вы указали адрес сайта ? и какая версия дле ?
 

xatinko

Постоялец
Регистрация
24 Май 2015
Сообщения
51
Реакции
7
а Вы указали адрес сайта ?
Да, обязательно указал. Версия 13.3

Fatal error: Uncaught Error: Call to undefined function add_filter() in D:\OSPanel\domains\test.ru\engine\modules\functions.php:101 Stack trace: #0 D:\OSPanel\domains\test.ru\engine\init.php(26:( require_once() #1 D:\OSPanel\domains\test.ru\index.php(28:( require_once('D:\\OSPanel\\doma...') #2 {main} thrown in D:\OSPanel\domains\test.ru\engine\modules\functions.php on line 101
 
Последнее редактирование:

AmiGood

Постоялец
Регистрация
22 Окт 2016
Сообщения
68
Реакции
41
Да, обязательно указал. Версия 13.3

Fatal error: Uncaught Error: Call to undefined function add_filter() in D:\OSPanel\domains\test.ru\engine\modules\functions.php:101 Stack trace: #0 D:\OSPanel\domains\test.ru\engine\init.php(26:( require_once() #1 D:\OSPanel\domains\test.ru\index.php(28:( require_once('D:\\OSPanel\\doma...') #2 {main} thrown in D:\OSPanel\domains\test.ru\engine\modules\functions.php on line 101
простите но может я не до конца понимаю что Вам нужно напишите мне в скайп pyaterka.90 может помогу Вам разобраться !
 

xatinko

Постоялец
Регистрация
24 Май 2015
Сообщения
51
Реакции
7
простите но может я не до конца понимаю что Вам нужно напишите мне в скайп pyaterka.90 может помогу Вам разобраться !

Простыми словами, мне нужен выбор в bbcode редакторе, что бы публиковать ссылки с тегом rel=nofollow и без. То есть, прямые ссылки на свои внутренние страницы без nofollow, а внешние на другие сайты с nofollow. Есть параметр [leech] для внешних ссылок, который ридеректит и кодирует. Мне он для SEO не подходит.
 

Горбушка

Ищу её...
Регистрация
2 Май 2008
Сообщения
3.444
Реакции
2.523
add_filter - вы с WordPress не перепутали?

xatinko - ковыряй parse.class.php

Где-то примерно тут:
PHP:
				case 'link':
					$html = ( !empty($data->title) ) ? '<a href="' . $this->safeUrl($data->url) . '">' . $this->escapeHTML($data->title) . '</a>' : false;
					break;
 
Сверху