dimaseo Dimaseo

Drupal 7. Nofollow для всех ссылок в меню

🔎 Drupal 7
5 фев 2011

Говоря простым языком, для правильной перелинковки на сайте, потребовалось присвоить всем ссылкам в Друпаловских меню атрибут NOFOLLOW, т.е. ссылка должна выглядеть так:
<a href="http://dimaseo.ru" rel="nofollow">Блог Dimaseo</a>
Для этого мы немного переделаем функцию theme_menu_link. Изначально она имела вид:

function theme_menu_link(array $variables) {
  $element = $variables['element'];
  $sub_menu = '';
 
  if ($element['#below']) {
    $sub_menu = drupal_render($element['#below']);
  }
 
  $output = l($element['#title'], $element['#href'], $element['#localized_options']);
  return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}

Эту функцию мы вставляем в template.php нашей темы, называем ее моятема_menu_link и заменяем строку:

$output = l($element['#title'], $element['#href'], $element['#localized_options']);

на

$output = l($element['#title'], $element['#href'], array('attributes' => array('rel' => array('nofollow'))));

в конечном итоге получаем:

function zen_menu_link(array $variables) {
  $element = $variables['element'];
  $sub_menu = '';
 
  if ($element['#below']) {
    $sub_menu = drupal_render($element['#below']);
  }
 
  $output = l($element['#title'], $element['#href'], array('attributes' => array('rel' => array('nofollow'))));
  return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}

Сохраняем template.php, чистим кеш темы и получаем искомое, т.е. ссылки с nofollow в меню Drupal7.