Как добавить изображение термина в узел


У меня есть узлы и несколько словарей для выбора терминов. Я хотел бы показать изображения терминов из определенного словаря в узлах (если узел связан с термином из определенного словаря, он будет отображать изображение из этого поля терминов). Какой был бы лучший (самый "друпальный") подход к этому?:)

Author: Łukasz Zaroda, 2012-07-16

1 answers

Один из способов сделать это - если вы не хотите создавать/возиться с файлами шаблонов тем для вашего типа контента, было бы отобразить соответствующее изображение тега через представление.

Вот шаги для этого:

  1. Я предполагаю, что у вас уже правильно настроен словарный запас и в него добавлено поле изображения (это можно сделать в разделе администратор/структура/таксономия/[ВАШ идентификатор ВОКАБА]/поля), и некоторые термины были заполнены соответствующими изображениями.
  2. Создайте новый просмотр с отображением блока и установите его для применения только к соответствующим типам контента enter image description here
  3. Добавьте связь терминов в свое представление, чтобы вы могли получить доступ к полям vocab/термин, а не только к полям узлов!! enter image description hereenter image description here
  4. Как только вы это сделаете, перейдите в поля, которые вы хотите вывести для каждого узла. Я бы удалил поле "Заголовок", добавленное по умолчанию, и добавил только поле, представляющее изображение, связанное с вашим термином. Это должно быть где-то под "термином таксономии:...." раздел списка полей.
  5. Убедитесь, что вы настроили его на использование отношений, которые вы создали выше enter image description here
  6. Наконец, поскольку мы хотим, чтобы этот блок указывал, какое изображение отображать, в зависимости от того, на каком узле он находится, давайте добавим контекстный фильтр. В разделе "Дополнительно" --> "Контекстные фильтры" добавьте "Содержимое: Nid" и убедитесь, что вы настроили его так, чтобы он отображался на странице, на которой он отображается, если фильтр отсутствует в URL-адресе enter image description here
  7. Все готово! Перейдите к одному из соответствующие страницы и тест. Конечно, сначала вам придется включить блокировку через контексты или страницу администратора блока (администратор/структура/блок), так как по умолчанию она нигде не размещена. Отобразите блок на второй боковой панели, в разделе "Фактическое содержимое" - в любом месте, где вы хотите.

Дайте мне знать, если это поможет!!

================ РЕДАКТИРОВАТЬ ===================== Решение 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(), который выводит все это. Я думаю, что эта часть выходит за рамки данного вопроса, но она должна помочь вам начать!

 14
Author: Boriana Ditcheva, 2012-07-16 19:09:14