[РЕШЕНО]Подскажите как изменить отображение нода в зависимости от принадлежности к термину

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

Аватар пользователя shamra shamra 2 сентября 2014 в 10:52

Есть ноды, содержащие товары.
есть словарь терминов, содержащие разные акции, их описания и необходимые картинки.

Необходимо в списке, формируемом модулем views к некоторым нодам, принадлежащим к конкретной акции, применялся контейнер с фоновым изображением, вытянутым из соответствующей акции (поле термина).

Желательно сохранить гибкость и возможность добавлять новые термины в словарь акции без правки css

Комментарии

Аватар пользователя Ula_Stechkina Ula_Stechkina 2 сентября 2014 в 15:44

А вывести термин таксономии как класс для ноды и затемизоировать в CSS по самое не балуйся религия не позволяет Wink ???

Аватар пользователя shamra shamra 2 сентября 2014 в 16:40

"Ula_Stechkina" wrote:
затемизоировать в CSS по самое не балуйся

Хотелось бы не изменять css файлы при добавлении новой акции а просто прописать строгие рамки для самостоятельного добавления их через админку.

"ХулиGUN" wrote:
токены помогут Вам

С токенами пока не на короткой ноге, не знаю с чего начать.

"ХулиGUN" wrote:
"Заменить выводимое полем значение"

Со значением вместо поля разобрался, в отдельном поле у меня теперь есть номер термина.
Предполагаю, что смогу вывести картинку из термина, имея номер термина. Но в середине ноды, а мне надо бы обернуть ею всю ноду. Подключил шаблон views-view-fields--tovary.tpl.php, но нужна отдельная переменная, которая бы в нужных случаях содержала ссылку на фоновую картинку из термина.

Не могу найти предпроцессор для добавления дополнительной переменной в этот шаблон в template.php. Может есть для вышеуказанного шаблона функция по типу THEME_preprocess_page() только не page, a что-то более подходящее?

Аватар пользователя Ula_Stechkina Ula_Stechkina 2 сентября 2014 в 17:11

Че ты ругаешься, ХулиGUN? Вопрос поначалу звучал по-другому. Потом автор его полностью переписал, раскрыв всю тяжесть его положения. А ты выкатываешь бочку. Не хорошо, парниша!

Аватар пользователя shamra shamra 3 сентября 2014 в 12:10

"ХулиGUN" wrote:
Всё на поверхности...

Спасибо, практически все заработало как надо

Только осталось одно: среди [токенов картинки] нет url, только уже сформированные картинки .
Вроде модуль решающий проблему нашел "Image Link Formatter", но что-то пока не работает

Аватар пользователя drupby drupby 3 сентября 2014 в 12:53

нужно добавить взаимосвязь(relationships) Content: Image (field_image:fid) или File Usage: File
и потом добавить поле File: Path с отмеченной опцией в настройках поля Display download path instead of file storage URI

Аватар пользователя shamra shamra 3 сентября 2014 в 14:55

"drupby" wrote:
нужно добавить взаимосвязь(relationships) Content: Image (field_image:fid) или File Usage: File
и потом добавить поле File: Path с отмеченной опцией в настройках поля Display download path instead of file storage URI

Все получилось, выводит адрес после добавления связей:
(term) Термин таксономии: Фоновое изображение:fid
(image from field_fon) Файл: Термин таксономии using Фоновое изображение
и поля Файл: Адрес

только вот незадача.
<div style="background: url([токен картинки])">... отображается без свойства style
<div title="background: url([токен картинки])">... отображается корректно

Аватар пользователя drupby drupby 3 сентября 2014 в 15:27

"shamra" wrote:
только вот незадача.

потому что теги script, object и аттрибут style обрезаются
в данном случае есть три варианта без применения патчей для вьюса
1- использовать модуль views_php
2- добавить нужную разметку в шаблоне
3- добавлять диву класс на основе имени термина или айди термина и потом в style.css добавлять бэкграунд

Аватар пользователя shamra shamra 3 сентября 2014 в 15:31

"drupby" wrote:
2- добавить нужную разметку в шаблоне

Следовательно возвращаемся к нашим баранам, описанным выше на несколько сообщений...

Буду очень благодарен, если кто подскажет с помощью какой функции можно добавить в шаблон views-view-fields--tovary.tpl.php, дополнительную переменную в template.php, может есть такая по типу THEME_preprocess_???

Аватар пользователя shamra shamra 3 сентября 2014 в 16:09

Большое всем спасибо, кто принял участие в решении.

В вышеуказанном шаблоне нашел возможность получить доступ к адресу через $row->file_managed_field_data_field_fon_uri, которая после некоторой обработки позволила сделать фон!

Аватар пользователя drupby drupby 3 сентября 2014 в 16:18

"shamra" wrote:
если кто подскажет с помощью какой функции можно добавить в шаблон views-view-fields--tovary.tpl.php

file_create_url($fields['uri']->raw) будет урлом нужного изображения
uri - машинное имя поля во вьюс, узнать нужное имя можно вставив в шаблон dpm($fields);(нужен модуль devel)
ну а вставить див я думаю сами сможете
если хотите что то вынести в препроцесс, то в template.php создавайте функцию views_view_fields__tovary(&$variables)