xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Заполняем мета тег keywords терминами которыми помечена нода

Опубликовано в

Распространённая ситуация — есть ноды, у нод есть теги. Для улучшения SEO, неплоха бы выводить эту информацию в мета-теге keywords.

Для решения задачи — создаём файл template.php в папке темы, если его ещё там нет. Добавляем туда функцию предварительной обработки страницы:

Drupal 6

function phptemplate_preprocess_page(&$vars) {
  if (isset($vars['node']->taxonomy)) {
    $keywords = array();
    foreach ($vars['node']->taxonomy as $tag) {
      $keywords[] = $tag->name;
    }
    if ($keywords) {
      $vars['head'] = '<meta name="keywords" content="' . implode(', ', $keywords) . '" />' . "\n" . $vars['head'];
    }
  }
}

Drupal 7

function THEMENAME_preprocess_node(&$variables) {
  if ($variables['view_mode'] == 'full' && node_is_page($variables['node'])) {
    $keywords = array();
    foreach (field_get_items('node', $variables['node'], 'field_tags') as $item) {
      $keywords[] = check_plain($item['taxonomy_term']->name);
    }
    drupal_add_html_head(array(
      '#type' => 'html_tag',
      '#tag' => 'meta',
      '#attributes' => array(
        'name' => 'keywords',
        'content' => implode(', ', $keywords),
      ),
   ), 'meta_keywords');
  }
}

Очищаем кэш.

Результат можно посмотреть в html коде этой страницы:

<meta name="keywords" content="drupal, seo, полезняшки, таксономия" />

Написанное актуально для Drupal 6, Drupal 7
Похожие записи

Комментарии RSS

Ай, спасибо. А то пока я в доке пороюсь - стопицот тыщ лет пройдет :)

все работает, супер

У меня почему-то появился в двух экземплярах.

Уважаемые! Подскажите, а для D7 как должен выглядеть подобный код?

добавил вариант для Drupal 7

Спасибо за вариант с D7

В Drupal 7 тоже можно (и по-моему лучше) в
THEMENAME_preprocess_page(&$variables)
И ещё, как вариант, в hook_html_head_alter

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

проблем нет, кому надо - пользуются модулем, кому нет - кодом

Здравствуйте, а как для поля дескрипшен организовать нечто подобное - скажем - выводить заголовок и первые например 100 символов или первый абзац, чтоб до точки. А то модуль мета тегов иногда ведет себя не так как хотелось бы))) или я его просто неправильно настроил.

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании