Добавляем rel="nofollow" ссылкам в профилях и в меню

Главные вкладки

Аватар пользователя T-34 T-34 22 мая 2008 в 1:09

На друпал.ру такого не нашел, а на drupal.org отыскал немного на эту тему. Может кому пригодится

Добавляем ссылкам в профилях пользователей (поле профиля типа "url") атрибут nofollow и заключаем их в noindex

В файле modules/profile/profile.module вносим изменения в 559 строку

return '<a href="'. check_url($value) .'">'. check_plain($value) .'</a>';

=>

return '<noindex><a rel="nofollow" href="'. check_url($value) .'">'. check_plain($value) .'</a><noindex>';

на основе http://drupal.org/node/102468

Добавляем атрибут nofollow определенным ссылкам в меню

В template.php добавляем

function phptemplate_menu_item_link ($item, $link_item) {
  $no_follow_links = array(
    'путь/по_которому/не_хотим_передавать_PR',
    'путь/по_которому/не_хотим_передавать_PR',
  );

  if (in_array($link_item['path'], $no_follow_links)) {
    return l($item['title'], $link_item['path'], !empty($item['description']) ? array('title' => $item['description'], 'rel' => 'nofollow') : array('rel' => 'nofollow'), isset($item['query']) ? $item['query'] : NULL);
  } else {
    return l($item['title'], $link_item['path'], !empty($item['description']) ? array('title' => $item['description']) : array(), isset($item['query']) ? $item['query'] : NULL);
  }
}

на основе http://drupal.org/node/175594

По поводу функции phptemplate_menu_item_link - вместо пути хотелось бы указывать id пункта меню, т.к. пункты с одинаковыми путями могут присутствовать как в меню для гостей, так и в меню для залогиненных, и нет нужды ставить nofollow во втором случае. Как я понял, за id пункта меню отвечает переменная $mid, но я php пока не владею и ниасилил как использовать ее вместо $link_item['path'] в коде. Подскажете?

Комментарии

Аватар пользователя T-34 T-34 22 мая 2008 в 12:06

Тоже об этом хотел написать. Закрытие user в robots - не лучший вариант, т.к. на страницу юзера может идти траф, + юзер может поставить на свой профиль на друпал-сайте ссылку (особенно если сайт - социалка), по которой может прийти PR.

Аватар пользователя pselfin pselfin 20 мая 2010 в 12:15

Насколько правильно патчить ядро?
Модуль не придумали для скрытия ссылок в профиле и модулях(например, в агрегаторе)?
/про модуль Стаса не говорите-знаю и использую/

Аватар пользователя Shift-Web Shift-Web 20 мая 2010 в 12:20

Эм ... Во первых, тут косяк:

<?php
return '<noindex><a rel="nofollow" href="'check_url($value) .'">'check_plain($value) .'</a><noindex>';
?>

конкретно: <noindex> ...ссылка... <noindex> это будет трындец всему, что попадёт после ссылки и чем больше их будет тем больше будет незакрытых ноуиндексов.

Во вторых, щас неактуально ноуиндексить ссылки вообще...

Аватар пользователя Sinkora Sinkora 22 мая 2010 в 17:01

"sadad" wrote:
Насколько правильно патчить ядро?

profile.module - это не из ядра. Это дополнительный модуль-конструктор для тех, кто не умеет создавать поля в профиле своими силами. По большому счету, модуль бесполезный для разработчика.

Аватар пользователя Ater Ater 28 октября 2010 в 17:46

"Shift-Web" wrote:
конкретно: ...ссылка... это будет трындец всему, что попадёт после ссылки и чем больше их будет тем больше будет незакрытых ноуиндексов.

а почему вы решили что ноиндекс не закроется? я у себя протестил и вроде как закрывается все норм...