[РЕШЕНО] Мета-теги к ноде через свой модуль

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

Аватар пользователя animan animan 3 июля 2015 в 22:26

Всем привет. Я уже немного времени изучаю друпал, но все же далек от идеала. И вообщем у меня есть такая проблемка. Есть тип материалов который выводится через свой модуль (в ноде есть страницы), и проблема в том что ключевики берутся с главной страницы, а описание берется одно для всех страниц ноды. Плюс таже проблема с title. В результате чего у меня куча дублей и ПС не очень любят такие сайты. Прошу подскажите какие хуки использовать что б переписать под свои нужды вышеописаные теги? На сайте установлен модуль meta tag но он ничего не изменяет, скорее всего как я понимаю из-за самописного модуля.

ПС. Надеюсь что правильно изложил ситуацию.

Комментарии

Аватар пользователя t1mm1 t1mm1 4 июля 2015 в 0:39

модуль metatags_quick

1. устанавливаем.
2. в настройках для модуля ставим поля, которые необходимы.
3. смотрим пример кода.

    $term = taxonomy_term_load($tid);

    $meta_keywords = field_get_items('taxonomy_term', $term, 'meta_keywords');
    field_view_value('taxonomy_term', $term, 'meta_keywords', $meta_keywords[0]);

    $meta_description = field_get_items('taxonomy_term', $term, 'meta_description');
    field_view_value('taxonomy_term', $term, 'meta_description', $meta_description[0]);

это как рабочий пример для кейвердов и дескрипшна. Там же, кстати, можно настроить что откуда тянуть (токенами, например).

---
пример для кастомного тайтла (не н1) ... в head в кастомном модуле

function hook_preprocess_html(&$vars) {
  $title_h1 = 'title here';
  $vars['head_title'] = $title_head;
}

для нод работает аналогично (как и вообще для любой сущности и НЕ сущности, если пое..мучаться).

п.с. я вам дал только удочку, ловить рыбку вы сами будете )

Аватар пользователя animan animan 19 июля 2015 в 17:25

Модуль metatags_quick так и не использовал, ибо пользуюсь metatag. Вообщем я немного подшаманил и вот что получилось. Возможно кому нибуть тоже понадобится подобное решение)

Далее установка мета тегов:

<?php
$meta 
= array (
  
'#theme' => 'metatag',
  
'#tag' => 'meta',
  
'#id' => 'metatag_keywords',
  
'#name' => 'keywords',
  
'#value' => $key,
            
'#type' => 'html_tag',
        );
drupal_add_html_head($meta'meta_keywords');
?>

Для description по аналогии с ключами.

Аватар пользователя animan animan 19 июля 2015 в 17:27

Использовал стандартную функцию drupal_set_title(). Смену тайтла решил путём добавления в модуль строки:

<?php
drupal_set_title
($title);
?>

Но осталась проблема функция заменяет все названия и то что на странице, а мне нужно что б только тайтл. Решил проблему с тем что б заменялся title в DOM страницы, без смены названия самого материала. Спасибо, t1mm1.
Исользовал хук:

<?php
function my_module_preprocess_html(&$vars) {
  
$vars['head_title'] = '$my_title';
}
?>