Как организовать такое на друпал 7?

Главные вкладки

Аватар пользователя Alex_web Alex_web 17 октября 2013 в 20:37

Есть два типа материалов.

Тип A. Поля:

Заголовок
Содержимое
Изображение
Теги (термин таксономии, 10 терминов)

Всего 10 материалов.

Тип B. Поля:

Заголовок
Содержимое
Изображение
Теги (термин таксономии)

Нужно в материалах Типа B вывести изображения материалов Типа A (всегда разное кол-во). Изображения должны быть ссылками на материалы Типа A.
Можно было бы сделать представлением, если бы кол-во изображений всегда было одинаковым. Но создавать 10 представлений как-то глупо. Поэтому и добавил в оба типа термины таксономии, чтобы связать их как то. Но вот что делать дальше не могу понять.

Лучший ответ

Аватар пользователя Bags85 Bags85 18 октября 2013 в 1:39

Если я правильно понял задачу, то проще сделать с помощью модулей Еntity reference + Corresponding Entity References + views

Порядок действий:

1. Типу материала A добавляем поле Entity Reference, машинное имя field_link_b, виджет Флажки/переключатели.
В настройках:
Тип цели Материал
Режим простой
Целевые пакеты Тип B
Количество значений неограничено

2. Создаем views Показать содержимое типа А. Снимаем галочку с Создать страницу. Продолжить. Добавляем дисплей Entity Reference. Удаляем поле Заголовок и добавляем поле Изображение(то что в материале типа А). Жмем Настройки напротив Формат: Список Entity Reference, ставим галочку возле "поля изображения". Сохраняем views.

3. Типу материала B добавляем поле Entity Reference, машинное имя field_link_a, виджет Флажки/переключатели.
В настройках:
Тип цели Материал
Режим Views, в выпадающем списке выбираем views созданный на предыдущем шаге
Количество значений неограничено

4. Открываем admin/config/system/cer
Ставим 2 галочки, напротив field_link_a к field_link_b и field_link_b к field_link_a
Если ноды уже были созданы, то переходим на вкладку Update existing entities -> Выбираем Тип сущности Материал -> Submit

5. Создаем views с дисплеем block. Показать содержимое типа А. Настраиваем вывод нужных полей. Добавляем Контекстный фильтр:
Поле Содержимое: field_link_b. Передать значение по умолчанию ID материала из URL. Далее галочка на Укажите критерии проверки, выбираем Проверка Содержимое, Типы материалов Тип B, Формат значения фильтра ID материала, Действие в случае если значение фильтра недействительно Скрыть представление.
Сохраняем views

6. Настраиваем вывод блока на страницах материалов Тип B

В итоге получаем: в форме создания материала Тип B выводятся чекбоксы с картинками из Тип A. Отмеченные картинки выводятся на страницах материала B

Комментарии

Аватар пользователя grob.82 grob.82 17 октября 2013 в 21:45

Без представления думаю никак!
Делаем "Отношения" по термину таксономии.

Что долго клонов наделать представлений, делом на 5 минут!

Аватар пользователя Alex_web Alex_web 17 октября 2013 в 23:05

Для меня не проблема.
Проблема для заказчика менять где какое представление выводить.
Было бы гораздо удобнее, если бы заказчик просто мог выбирать у материала термины таксономии. Или даже лучше из списка выбрать сколько и какие именно фотки должны быть показаны.

И представлений будет не десять. Всего 10 фоток. А вариантов сочетаний этих фоток может быть гораздо больше.
Если ничего путного не подскажут, то видимо так и сделаю представлением.

Аватар пользователя Bags85 Bags85 18 октября 2013 в 1:39

Если я правильно понял задачу, то проще сделать с помощью модулей Еntity reference + Corresponding Entity References + views

Порядок действий:

1. Типу материала A добавляем поле Entity Reference, машинное имя field_link_b, виджет Флажки/переключатели.
В настройках:
Тип цели Материал
Режим простой
Целевые пакеты Тип B
Количество значений неограничено

2. Создаем views Показать содержимое типа А. Снимаем галочку с Создать страницу. Продолжить. Добавляем дисплей Entity Reference. Удаляем поле Заголовок и добавляем поле Изображение(то что в материале типа А). Жмем Настройки напротив Формат: Список Entity Reference, ставим галочку возле "поля изображения". Сохраняем views.

3. Типу материала B добавляем поле Entity Reference, машинное имя field_link_a, виджет Флажки/переключатели.
В настройках:
Тип цели Материал
Режим Views, в выпадающем списке выбираем views созданный на предыдущем шаге
Количество значений неограничено

4. Открываем admin/config/system/cer
Ставим 2 галочки, напротив field_link_a к field_link_b и field_link_b к field_link_a
Если ноды уже были созданы, то переходим на вкладку Update existing entities -> Выбираем Тип сущности Материал -> Submit

5. Создаем views с дисплеем block. Показать содержимое типа А. Настраиваем вывод нужных полей. Добавляем Контекстный фильтр:
Поле Содержимое: field_link_b. Передать значение по умолчанию ID материала из URL. Далее галочка на Укажите критерии проверки, выбираем Проверка Содержимое, Типы материалов Тип B, Формат значения фильтра ID материала, Действие в случае если значение фильтра недействительно Скрыть представление.
Сохраняем views

6. Настраиваем вывод блока на страницах материалов Тип B

В итоге получаем: в форме создания материала Тип B выводятся чекбоксы с картинками из Тип A. Отмеченные картинки выводятся на страницах материала B