
Задача : отобразить описание термина таксономии на страницах таксономии например. site.com/taxonomy/term/n (где n - ID термина).
Будем использовать функцию taxonomy_get_term (n), где n представляет ID термина.
В page.tpl.php добавляем следующий код перед print $content:
<?php /* Добавить описание таксономии если это страница таксономии */ ?> <?php $page_term = taxonomy_get_term(arg(2)); // путь: site.com/taxonomy/term/n ?> <?php if (arg(0) == 'taxonomy' && $page_term) { ?> <div class="taxonomy-term-info"> <?php print $page_term->description; ?> </div> <?php } ?>
Аргументы пронумерованы от 0 (0 - taxonomy, 1 - term, 2 - n), таким образом для URL site.com/taxonomy/term/n arg (2) даст нам значение n для ID термина таксономии. Тогда функция taxonomy_get_term (arg (2)) возвратит данные термина, содержащиеся в $page_term в вышеупомянутом примере.
Мы можем просто вывести описание в page.tpl.php с <? php print $page_term->description; ?>, но мы смотрим в будущее и стараемся предусмотреть исключительные ситуации и поэтому добавили проверку переменной arg(0) на предмет ее содержимого. Если этого не сделать, могут возникнуть проблемы для таких страниц как site.com/aggregator/categories/n.
Еще к заголовку страницы, мы можем добавить класс:
<h2 <?php if (arg(0) == 'taxonomy') print ' style="taxonomy-title"'; ?>> <?php print $title; ?> </h2>
Заголовок обычной страницы тогда будет обернут в .. тэги, а если мы находимся на странице таксономии .... Вы можете определить стиль отображения заголовка с помощью CSS. Например так:
h2.taxonomy-title { /* стили по вкусу */ } .taxonomy-term-info { /* стили по вкусу */ }
Для arg() не имеет значения, используете ли Вы алиасы или нет — параметры для таксономии и страницы агрегатора для Drupal остаются тем же самым.
Затем добавим некоторые тесты, чтобы видеть, получили мы хоть один ID. В этом случае, я должен переместить код в функцию в template.php и вызвать его вpage.tpl.php.
Есть возможность подменить стандартный вывод описания термина. Для этого в template.php вы должны добавить следующий код:
<?php function MYTHEME_taxonomy_term_page($tids, $result) { // MYTHEME - название вашей темы // Добавить CSS если это страница таксономии drupal_add_css(drupal_get_path('module', 'taxonomy') .'/taxonomy.css'); // Отобразить описание только для одиночного термина if (count($tids) == 1) { $term = taxonomy_get_term($tids[0]); $description = $term- >description; // Проверка на наличие описания if (!empty($description)) { $output = ' <div class="custom-taxonomy-description">'; $output .= filter_xss_admin($description); $output .= ' </div>'; } } $output .= taxonomy_render_nodes($result); return $output; } ?>
Для подмены класса заголовка, в page.tpl.php для формирования заголовка используем следующий код.
<h2<?php print (arg(0) == 'taxonomy') ? ' class="taxonomy-title"' : '';?>> <?php print $title; ?> </h2>
Источник : planken.org
- Информация к размышлению
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
