Подскажите, пожалуйста, как можно через contemplates достать значение из поля для определенного типа материала?
Поясню: у меня есть тип материала, допустим Event. Там есть поле, из которого выбирается значение города (из словаря "Города" в таксономии). Теперь я создаю шаблон с помощью contemplates. Но там проблема с этим, т.к. для того, чтобы вытащить город в шаблон contemplates предлагает использовать
$node->taxonomy[1702]->name
Но это работает только для примера, на котором contemplates показывает различные значения. Если же я это вставлю в свой шаблон, то все события (Event) будут иметь один город, который в таксономии имеет ID 1702.
Как решить данную проблему?
Комментарии
Не самый простой модуль. Может валить. Очень осторожны будъте.
Вот мне когда такое надо, я делаю просто.
Добавляю в node.tpl.php такой PHP
Потом открываю ноду нужного типа и о-о-о-очень внимательно читаю вывод.
а лучше поставить модуль "devel" и тогда по нажатию одной кнопки вы увидите все поля и их значения.
То же верно.
Попробовал оба способа (и со вставкой php на страницу и с модулем devel). Но пока мои познания в php слабоваты
То, что выдает мне код:
(
[1702] => stdClass Object
(
[tid] => 1702
[vid] => 12
[name] => Владивосток
[description] =>
[weight] => 13
)
)
Как мне из этого что-то полезное можно извлечь?
Долго искал ответ, и пришел к следующему:
if ($item->vid == 12):
print $item->name;
endif;
} ?>
Здесь 12 это ID словаря для ограничения вывода терминов, иначе он будет выводить все термины, связанные с этой нодой.
А настройку словаря можно сделать по примеру модуля forum из базовой поставки!
Пока не дошел до этого модуля...
была подобная проблема с созданием title ноды. Решение нашел такое:
<?php
$massiv = array_keys($node->taxonomy);
$manufacturer = $node->taxonomy[$massiv[0]]->name;
$modelmota = check_plain($node->title);
$bikeyear = check_plain($node->field_year[0]['value']);
$classbike = $node->taxonomy[$massiv[1]]->name;
drupal_set_title( $manufacturer.' '.$modelmota.', '.$bikeyear.' ('.$classbike.')') ?>
в итоге получил HONDA NV 400 STEED, 1996 (ЧОППЕР)
$manufacturer = HONDA
$modelmota = NV 400 STEED
$bikeyear = 1996
$classbike = ЧОППЕР
$manufacturer и $classbike термины разных словарей
[0] и [1] жестко заданы, по причине их постоянного местонахождения там.
Странно, но эта вставка работает только при сохранении
if ($item->vid == 12):
print $item->name;
endif;
} ?>
Когда только создаешь материл, то в предпросмотре пустое поле, а после сохранения все как должно быть... Никто не сталкивался?
потому как таксономия еще не прописана.
пропишется только после сохранения материала
Спасибо, это понял, но опять вопросы... Если по заданным параметрым у ноды несколько терминов, то они выводятся так "термин1термин2термин3...терминn", без пробелов/запятых/других знаков или в виде списка. Как можно вышеуказанный код изменить так, чтобы это нормально отображалось?
выводятся через запятую в порядке в котором они были внесены при добавлении ноды.
вывод/разбор посредсвом contemplate я описал выше..