Hi, All!
Создал собственный тип материала "Продукты".
Есть словарь таксономии "Контакты", где перечислены имена продавцов, а в описаниях терминов - контактная информация.
Добавил поле field_manager к типу материала, указал его в отображении. Но у меня выводится только имя термина, а мне хотелось бы еще и описание (с контактной информацией) выводить. Возможно ли это реализовать в моем случае?
Комментарии
В шаблоне материала (товара) вручную вывести описание термина. Думаю самый простой вариант.
Если так, то получается, что при изменении контактных данных какого-либо менеджера, придется вручную изменять это в каждом материале. Неудобно же!
Или я не так что-то понял?
Нет конечно же. Что касается d7: при выводе термина на странице материала доступна значение в $node:
$node->FIELD_NAME[und][ELEMENT_NUMBER]['taxonomy_term']
у которой определены поля:
tid
vid
name
description
format
weight
vocabulary_machine_name
Как видите все тут. осталось только темизировать шаблон типа материала:
?><dl><?php
?><dt><?php
print $FIELD_NAME[und][ELEMENT_NUMBER]['taxonomy_term']['name']; // имя менеджера
?></dt><?php
?><dd><?php
print $FIELD_NAME[und][ELEMENT_NUMBER]['taxonomy_term']['description']"; // поле описания менеджера
?></dd><?php
?></dl><?php
И повторюсь: действительно для drupal 7 и поля типа "ссылка на термин". Для 6 все будет похоже, но чуток не так!
mrBF, спасибо вам огромное, буду разбираться!
не соображу, а [und] и [ELEMENT_NUMBER] - это что?
с und - тут я ошибся:
['und']
-кавычки нужны - индекс ассоциативного массива.А вод ELEMENT_NUMBER - номер, в данном случае, элемента поля (0,1,2,3...), если в поле более одного значения.
А вообще чтобы увидеть все картину: посмотрите xDebuger (или еще чем), или просто распечатайте переменную $node:
<?php print_r($node);?>
Огромнейшее, спасибо! Все получилось!
Небольшая поправка, только - $node->FIELD_NAME[und][ELEMENT_NUMBER]['taxonomy_term'] - это stdClass Object, поэтому я использовал такую конструкцию:
<?php
$fmanager_name = $node->field_manager['und'][0]['taxonomy_term'];
print $fmanager_name->name; // имя менеджера
?>
<?php
$fmanager_desc = $node->field_manager['und'][0]['taxonomy_term'];
print $fmanager_desc->description; // поле описания менеджера
?>
Молодец. Про field_get_items() не в курсе?
field_get_items() это + выполнение кучи дополнительных строк кода и запросы к БД? Для одноязычного сайта может просто print? Как считаете?
Я считаю, что field_get_items(), потому что на одном из проектов мы полгода ломали голову как на одноязычном сайте могут быть одновременно поля und и ru.
А скуль-запросы, я их где-то предложил или я чего-то не знаю?
Бегло просмотрел, получил такую иерархию вызовов(на одно поле):
field_get_items -> field_language -> field_valid_language -> language_list(тут уже начинаются запросы) -> language_default(продолжаются) ...
Так выходит? мог ошибиться, конечно. Если что поправьте.
Не начинаются, static-кеширование, по-русски говоря - 1 раз за сеанс
Нет, не в курсе. Освоение друпала у меня пока что в начальной стадии - я многого не слышал