Как добавить изображение термина в узел
У меня есть узлы и несколько словарей для выбора терминов. Я хотел бы показать изображения терминов из определенного словаря в узлах (если узел связан с термином из определенного словаря, он будет отображать изображение из этого поля терминов). Какой был бы лучший (самый "друпальный") подход к этому?:)
1 answers
Один из способов сделать это - если вы не хотите создавать/возиться с файлами шаблонов тем для вашего типа контента, было бы отобразить соответствующее изображение тега через представление.
Вот шаги для этого:
- Я предполагаю, что у вас уже правильно настроен словарный запас и в него добавлено поле изображения (это можно сделать в разделе администратор/структура/таксономия/[ВАШ идентификатор ВОКАБА]/поля), и некоторые термины были заполнены соответствующими изображениями.
- Создайте новый просмотр с отображением блока и установите его для применения только к соответствующим типам контента
- Добавьте связь терминов в свое представление, чтобы вы могли получить доступ к полям vocab/термин, а не только к полям узлов!!
- Как только вы это сделаете, перейдите в поля, которые вы хотите вывести для каждого узла. Я бы удалил поле "Заголовок", добавленное по умолчанию, и добавил только поле, представляющее изображение, связанное с вашим термином. Это должно быть где-то под "термином таксономии:...." раздел списка полей.
- Убедитесь, что вы настроили его на использование отношений, которые вы создали выше
- Наконец, поскольку мы хотим, чтобы этот блок указывал, какое изображение отображать, в зависимости от того, на каком узле он находится, давайте добавим контекстный фильтр. В разделе "Дополнительно" --> "Контекстные фильтры" добавьте "Содержимое: Nid" и убедитесь, что вы настроили его так, чтобы он отображался на странице, на которой он отображается, если фильтр отсутствует в URL-адресе
- Все готово! Перейдите к одному из соответствующие страницы и тест. Конечно, сначала вам придется включить блокировку через контексты или страницу администратора блока (администратор/структура/блок), так как по умолчанию она нигде не размещена. Отобразите блок на второй боковой панели, в разделе "Фактическое содержимое" - в любом месте, где вы хотите.
Дайте мне знать, если это поможет!!
================ РЕДАКТИРОВАТЬ ===================== Решение 2 (по запросу)
Чтобы сделать это с помощью файла шаблона, продолжайте и скопируйте свой обычный node.tlp.php файл и переименуйте его в узел - [ИМЯ КОМПЬЮТЕРА ВАШЕГО ТИПА КОНТЕНТА].tpl.php
Затем, прямо под или над содержимым, вставьте следующий код:
$term=taxonomy_term_load($node->field_thats_term_reference['und'][0]['tid']);
$image_field=field_view_field('taxonomy_term', $term,'field_main_image');
print render($image_field);
Просто замените "field_thats_term_reference" именем поля ссылки на термин и замените "field_main_image" именем поля изображения.
Это сделает распечатку. Вы можете разместить это в любом месте, где захотите. Если вы хотите настроить, как на самом деле выглядит распечатка, просто выполните dpm ($image_field), как только вы это установите переменная (должен быть установлен модуль разработки), и вы можете увидеть все части этого поля и как добраться до них, если вы хотите распечатать их отдельно, в отличие от способа по умолчанию render(), который выводит все это. Я думаю, что эта часть выходит за рамки данного вопроса, но она должна помочь вам начать!