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

20.12.2009

Распространённая ситуация — есть ноды, у нод есть теги. Для улучшения 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
Похожие записи

Комментарии

Жорик
09.08.2010, 05:17

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

Вячеслав
08.12.2011, 05:05

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

Гость
23.12.2012, 15:18

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

Игорь
08.04.2014, 11:09

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

Гость
23.10.2014, 03:57

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

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

Гость
17.03.2016, 01:54

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

Гость
20.11.2018, 18:13

Дискрипшн аналогично:

rupal_add_html_head(array(
'#type' => 'html_tag',
'#tag' => 'meta',
'#attributes' => array(
'name' => 'description',
'content' => 'Текст дескрипшена',
),
), 'meta_description');

Добавить комментарий