Имеется древний сайт на D6 с модулем Nodewords 6.x-1.15-beta1+0-dev.
Сразу обозначу, что я программист на уровне гугла (могу скопипастить и что-то очень простое сделать).
Интересует есть ли возможность проверить на уровне шаблона (page.tpl.php) какой-нибудь функцией, создан ли для текущей страницы мета-тег description?
Можно, конечно, сделать запросы напрямую к БД зная текущий alias страницы через функцию drupal_get_path_alias($_GET['q']) - с ней идём в таблицу nodewords_custom, где ищем этот path, чтобы получить id, с которым уже можно спросить у таблицы nodewords по этому id есть ли у этой страницы тег description или нет его.
Но это как-то не очень изящно на мой взгляд. У друпала на каждый чих же есть функция.
Пробовал ковыряться с nodewords_load_tags(), но без особого успеха.
Глобально задача следующая: для каждого термина таксономии определенного словаря прописать мета-тег description по умолчанию, но лишь в том случае, если этот тег не был создан через nodewords, то есть пустой.
Ответы
Решено. Выкладываю, авось кому пригодится. Расковыряв модуль nodewords пришел вот к такому решению:
<?php
//проверяем, что находимся на странице термина
if (arg(0) == 'taxonomy' && arg(1) == 'term') {
//загружаем данные термина, чтобы вытащить потом его название
$term = taxonomy_get_term(arg(2));
//определяем тип и id записи в бд nodewords
$meta_data = _nodewords_detect_type_and_id();
//загружаем метатеги страницы из custom pages
$meta_custom = _nodewords_get_custom_pages_data($meta_data['id']);
//загружаем мета теги напрямую из настроек термина
$meta_page = nodewords_load_tags(NODEWORDS_TYPE_TERM, $meta_data['id']);
//мета теги на каждую страницу термина могут быть установлены в двух местах, проверяем, есть ли там заполненный тег description
if (empty($meta_custom->tags['description']['value']) && empty($meta_page['description']['value'])) {
//если description нет, можно вывести здесь свой
}
}
?>
А разве там нет настройки для указания мета-тэга по умолчанию. В 7-ке точно была. И не нужно будет шаманить с темплейтами и функциями.
Да, по умолчанию можно, но эта версия модуля не поддерживает ни токены, ни php в форме описания. А мне надо использовать заголовок страницы в описании, чтобы они не были все одинаковыми, поэтому приходится костылить.
Для примера описание: "Статьи про [название термина]".
В файле модуля nodewords.api.php есть 2 хука, которые тебе могут помочь:
hook_nodewords_tags_alter(&$output, $parameters)er
hook_nodewords_tags_output_alter(&$output, $parameters)
Дальше создаёшь модуль, https://drupalfly.ru/lesson/new_module
внедряешь хук и всё ок!
http://drupalguide.ru/articles/chto-takoe-hook