Перейти к публикации

Добавление nofollow к ссылкам в новостях


Рекомендованные сообщения

Мой сайт - http://crypto-mining.ru/

Здравствуйте, задался проблемой закрыть все внешние ссылки в новостях тегом rel="nofollow", на сколько я знаю стандартной функции в настройках dle нет, но помниться уже давно сделан хак - покопавшись я его нашёл и там предлагают в файле parse.class.php заменить

 

return "<a href=\"" . $url['html'] . "\" " . $target . " rel=\"nofollow\">" . $url['show'] . "</a>" . $url['end'];
	else		
return "<a href=\"" . $url['html'] . "\" " . $target . ">" . $url['show'] . "</a>" . $url['end'];


на

return "<noindex><a href=\"" . $url['html'] . "\" " . $target . " rel=\"nofollow\">" . $url['show'] . "</a></noindex>" . $url['end'];
	else
return "<noindex><a href=\"" . $url['html'] . "\" " . $target . " rel=\"nofollow\">" . $url['show'] . "</a></noindex>" . $url['end'];



Но зайдя в parse.class.php я обнаружил чуть ниже этого кода две функции add_rel и remove_rel, которые как я понял есть в более новых версиях движка и отвечают за эти самые релы. Немного отредактировал их - добавив в тех местах где были указаны добавляемые и удаляемые релы ещё и nofollow, вот таким образом:
 

		if( preg_match( "#rel=['\"](.+?)['\"]#i", $params, $match ) ) {
			
			$new_params = array("external", "noopener", "noreferrer", "nofollow");

			$exist_params = trim(preg_replace('/\s+/', ' ', $match[1]));
			
			$exist_params = explode(" ", $exist_params);
			
			foreach ($new_params as $value) {
				if(!in_array( $value, $exist_params ) ) $exist_params[] = $value;
			}
			
			$exist_params = implode(" ", $exist_params);

			$params = str_ireplace($match[0], "rel=\"{$exist_params}\"", $params);

		} else {
			
			$params .= " rel=\"external noopener noreferrer nofollow\"";
			
		}


 

	function remove_rel( $matches=array() ) {
		
		$params = trim( $matches[1] );
		
		if( preg_match( "#rel=['\"](.+?)['\"]#i", $params, $match ) ) {
			
			$remove_params = array("external", "noopener", "noreferrer", "nofollow");
			$new_params = array();

....................................



Перестроил публикации - вроде бы всё нормально, ко всем ссылкам добавился nofollow, но всё же хотелось бы совета - правильно ли я всё сделал или могут быть какие-то соби из-за моих "доработок"?
 

Изменено пользователем user2426
Ссылка на сообщение
Поделиться на других сайтах
24 минуты назад, user2426 сказал:

на сколько я знаю стандартной функции в настройках dle нет

Ошибаетесь это стандартная возможность скрипта, уже как несколько версий. Ничего делать и править не нужно, при использовании актуальных версий скрипта.

Ссылка на сообщение
Поделиться на других сайтах
57 минут назад, celsoft сказал:

Ошибаетесь это стандартная возможность скрипта, уже как несколько версий. Ничего делать и править не нужно, при использовании актуальных версий скрипта.

И правда, криво обновился в прошлый раз похоже - обновился теперь до 12.1, но что-то всё равно не вижу где данная функция включается, подскажите пожалуйса, в каком разделе админпанели её найти.

Ссылка на сообщение
Поделиться на других сайтах
40 минут назад, user2426 сказал:

И правда, криво обновился в прошлый раз похоже - обновился теперь до 12.1, но что-то всё равно не вижу где данная функция включается, подскажите пожалуйса, в каком разделе админпанели её найти.

Она работает автоматически, ее не нужно включать.

Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, celsoft сказал:

Она работает автоматически, ее не нужно включать.

Сейчас попробовал добавить новость после обновление - не ставит nofollow.

Я правильно понимаю, что вот этот кусок кода отвечает за проставление nofollow?
 

if ($this->safe_mode AND !$config['allow_search_link'] AND $target)
				return "<a href=\"" . $url['html'] . "\" " . $target . " rel=\"nofollow\">" . $url['show'] . "</a>" . $url['end'];

allow_search_link у меня выставлен 0, $raget как я понимаю тоже имеется, но вот что за параметр safe_mode? Это переключить серверв нужно в safe_mod чтобы автоматом nofollow выставляло?

Ссылка на сообщение
Поделиться на других сайтах
10 минут назад, user2426 сказал:

Я правильно понимаю, что вот этот кусок кода отвечает за проставление nofollow?

Нет не правильно. Совершенно другой код.

 

11 минуту назад, user2426 сказал:

Сейчас попробовал добавить новость после обновление - не ставит nofollow.

Значит либо ссылка не внешняя, либо вы обновили не все файлы скрипта на сервере и часть у вас осталась от старых версий.

Ссылка на сообщение
Поделиться на других сайтах

Хотя я например вижу на вашем сайте, что все корректно работает для внешних ссылок, например http://crypto-mining.ru/bitcoin_news/975-opera-browser-vnedryaet-anti-mayningovoe-po-dlya-dlya-mobilnyh-ustroystv.html для ссылки cointelegraph.com все атрибуты стоят.

Ссылка на сообщение
Поделиться на других сайтах
В 24.01.2018 в 18:47, celsoft сказал:

Хотя я например вижу на вашем сайте, что все корректно работает для внешних ссылок, например http://crypto-mining.ru/bitcoin_news/975-opera-browser-vnedryaet-anti-mayningovoe-po-dlya-dlya-mobilnyh-ustroystv.html для ссылки cointelegraph.com все атрибуты стоят.

Я дописал вручную nofollow, как в первом посте.

Скорее всего проблема с кривым обновлением, вначале криво (не по инструкции) обновился с нуленой версии до 11.3, теперь обновился до последней и вроде всё нормально, но похоже не до конца, возможно какие-то файлы потерялись при первом обновлении.

В принципе, проблему решил, а это главное :lol:

Изменено пользователем user2426
Ссылка на сообщение
Поделиться на других сайтах
В 24.01.2018 в 09:22, celsoft сказал:

Ошибаетесь это стандартная возможность скрипта, уже как несколько версий. Ничего делать и править не нужно, при использовании актуальных версий скрипта.

Насколько я помню, несколько версий тому назад к внешним ссылкам автоматически был добавлен атрибут rel = "external noopener noreferrer". Параметра nofollow там не было. Или я что-то пропустил?..

И, насколько я понимаю, эти параметры больше для безопасности, а вес они по ссылке вполне себе передают. Поправьте, если я заблуждаюсь.

Изменено пользователем Primary Sphinx
Ссылка на сообщение
Поделиться на других сайтах
14 минуты назад, Primary Sphinx сказал:

Насколько я помню, несколько версий тому назад к внешним ссылкам автоматически был добавлен атрибут rel = "external noopener noreferrer". Параметра nofollow там не было. Или я что-то пропустил?..

И, насколько я понимаю, эти параметры больше для безопасности, а вес они по ссылке вполне себе передают. Поправьте, если я заблуждаюсь.

Вот я external noopener noreferrer тоже заметил, а nofollow не было (по крайней мере у меня).

Изменено пользователем user2426
Ссылка на сообщение
Поделиться на других сайтах
47 минут назад, Primary Sphinx сказал:

Насколько я помню, несколько версий тому назад к внешним ссылкам автоматически был добавлен атрибут rel = "external noopener noreferrer". Параметра nofollow там не было. Или я что-то пропустил?..

И, насколько я понимаю, эти параметры больше для безопасности, а вес они по ссылке вполне себе передают. Поправьте, если я заблуждаюсь.

Вы правы, читая эту тему я писал, держа в голове external noopener noreferrer, а тут то спрашивали про запрет на индексацию nofollow. Нет все верно DLE не ставит запретов на индексацию ссылок. Только параметры безопасности ставит для внешних ссылок. Прошу прощения, не внимательно сообщение в теме прочитал.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...