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
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

При включении опции закрытия ссылок от индексации с помощью 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
Share on other sites

Домены "друзей" к которым не применять 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
Share on other sites

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

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

 

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

Share this post


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

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

Share this post


Link to post
Share on other sites

siv1987

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

Share this post


Link to post
Share on other sites

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...