Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
grgv

Исключения для rel='nofollow external'

Recommended Posts

При включении опции закрытия ссылок от индексации с помощью nofollow возникает нежелательный эффект, если форум находится на поддомене (forum.site.ru) - при этом сам домен site.ru считается почему-то внешним и ссылки на него тоже помечаются тегом nofollow. Это может быть плохо для SEO, ссылки могут вести и на другие домены (друзей, например), тогда их лучше бы не закрывать от индексации.

 

Можно ли написать простой хук, который бы позволял добавлять в список домены, которые в виде исключения не помечались бы тегом nofollow? Для 3.4.х.

Share this post


Link to post

Можно включить в разделе использование html и внешние ссылки не закрываются.

Но тоже заинтересован этим вопросом.

Share this post


Link to post

Есть, если не ошибаюсь, готовая модификация где можно указать список ссылок к которым не применять nofollow. Насчет самого домена делается очень легко - HTTP_HOST разбивается на части по точке и выбираются два последних элемента. По ним и сравнивается наличие хоста в ссылке.

Share this post


Link to post

При включении опции закрытия ссылок от индексации с помощью nofollow возникает нежелательный эффект, если форум находится на поддомене (forum.site.ru) - при этом сам домен site.ru считается почему-то внешним и ссылки на него тоже помечаются тегом nofollow.

Для 3.4.x

 

Открыть /admin/sources/classes/text/parser/bbcode.php

Найти:

			/* Fetch actual host for better matching */
			$data = @parse_url( $url );

Ниже добавить:

			$http_host = implode( '.', array_slice( explode( '.', $_SERVER['HTTP_HOST'] ), -2 ) );

Найти 2 раза (первый для nofollow, второй для external):

				if ( ! stristr( $data['host'], $_SERVER['HTTP_HOST'] ) )

Заменить на:

				if ( ! stristr( $data['host'], $http_host ) )

 

Для 3.3.x

 

Открыть /admin/sources/classes/bbcode/custom/defaults.php

Найти:

	/* Fetch actual host for better matching */
	$data = @parse_url( $option );

Ниже добавить:

	$http_host = implode( '.', array_slice( explode( '.', $_SERVER['HTTP_HOST'] ), -2 ) );

Найти:

		if ( ! stristr( $data['host'], $_SERVER['HTTP_HOST'] ) )

Заменить на:

		if ( ! stristr( $data['host'], $http_host ) )

  • Upvote 4

Share this post


Link to post

Домены "друзей" к которым не применять nofollow:

 

Открыть:

3.4x - /admin/sources/classes/text/parser/bbcode.php

3.3x - /admin/sources/classes/bbcode/custom/defaults.php

 

Найти:

					$rels[]	= "nofollow";

Заменить на:

					$whiteHosts = array_filter( explode( "\n", $this->settings['white_hosts'] ) );
					$allowHost  = false;

					foreach( $whiteHosts as $v )
					{
						if( stristr( $data['host'], trim( $v ) ) )
						{
							$allowHost = true;
							break;
						}
					}

					if( ! $allowHost )
					{
						$rels[]	= "nofollow";
					}

 

Админцентр -> Системные настройки -> Импортировать файл с настройками (внизу страницы)

settingGroup_temy-soobscheniia-i-oprosy.xml

 

Темы, Сообщения и Опросы -> Белый список доменов

  • Upvote 3

Share this post


Link to post

siv1987, спасибо за приведенный код :) Но, мне кажется всё-таки было бы правильнее сделать готовый хук, а то иначе получается возвращение ко временам 2.х :)

Я разместил такую же тему на IPS и на IBR - реакции пока нет.

 

P.S.: Вообще, по-моему IPB теряет популярность с таким подходом разработчиков к тем, кто пишет хуки. Да и хуков толковых процентов пять, не больше. Остальные - тупые рюшечки. :(

Share this post


Link to post
Но, мне кажется всё-таки было бы правильнее сделать готовый хук, а то иначе получается возвращение ко временам 2.х

Хук не так просто запилить как вам кажется. С правкой файлов вы делаете одну правку в коде и получаете нужный функционал, а с хуком нужно написать стопиццот строк кода, распарсить готовый результат, произвести необходимые модификации, собрать его обратно. Имхо, если человеку нужен именно функционал - он не заморачивается хуком только ради хука. Хук это как правило костыль. Костыль, который можно отключить или включить удобным интерфейсом в АЦ, вот и все. Да, я понимаю, хуком очень удобно оправдать платную модификацию - дополнительная работа для исполнителя, дополнительный индусо код, юзеру удобно - нужно только установить хук, никаких дополнительных телодвижений. Но на халяву и когда редактировать нужно только одну строчку, имхо, можно обойтись и без хука. :) Кому будет интереснее написать, навправление куда копать дальше он уже знает.

Share this post


Link to post

siv1987

Большое спасибо за метод Домены "друзей"! Очень полезная функция, добавил домен друга :)

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...