Распространённая ситуация — есть ноды, у нод есть теги. Для улучшения 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
Похожие записи
- Изменяем дефолтное значение поля Term reference на значение из последнего созданного материала
- Выводим ссылки на похожие материалы без доп. модулей
- Адаптивные изображения с помощью модуля Responsive image
- Дружим reCAPTCHA v3 и PageSpeed
- Восстанавливаем позицию текстового курсора при ajax обновлении формы
Комментарии
Ай, спасибо. А то пока я в доке пороюсь - стопицот тыщ лет пройдет :)
все работает, супер
У меня почему-то появился в двух экземплярах.
Уважаемые! Подскажите, а для D7 как должен выглядеть подобный код?
добавил вариант для Drupal 7
Спасибо за вариант с D7
В Drupal 7 тоже можно (и по-моему лучше) в
THEMENAME_preprocess_page(&$variables)
И ещё, как вариант, в hook_html_head_alter
А что токены нельзя вставить? В том плане, что модуль метатегов поддерживает токены полей материала, вставляем и все точно так же получается. В чем проблема?
проблем нет, кому надо - пользуются модулем, кому нет - кодом
Здравствуйте, а как для поля дескрипшен организовать нечто подобное - скажем - выводить заголовок и первые например 100 символов или первый абзац, чтоб до точки. А то модуль мета тегов иногда ведет себя не так как хотелось бы))) или я его просто неправильно настроил.
Дискрипшн аналогично:
rupal_add_html_head(array(
'#type' => 'html_tag',
'#tag' => 'meta',
'#attributes' => array(
'name' => 'description',
'content' => 'Текст дескрипшена',
),
), 'meta_description');
Добавить комментарий