Показать термины с тем же термином в views (по аналогии нод)

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

Аватар пользователя Айдар Айдар 6 августа 2014 в 18:13

Доброго времени суток! Что-то туплю.

Как вывести "похожие" термины на странице текущего термина на основе одного присвоенного термина словаря?

Например, имеем два словаря: "Марки авто", "модели авто". В словаре моделей имеем поле типа "term reference", где присваиваем термину марку (например, термин "ВАЗ-ТАЗ 2109" имеет термин "ВАЗ-ТАЗ").

Нужно с помощью вьюхи показать другие модели этой же марки на странице определенной модели (по аналогии с нодами - но там все легко).

Пробовал добавлять контекстные фильтры "term id", "my_field_марка_авто" - но безуспешно.

Есть какие-либо идеи?

Комментарии

Аватар пользователя artemrrr artemrrr 9 августа 2014 в 19:27

"Айдар" wrote:
(по аналогии с нодами - но там все легко).

че то я не понял у тебя материал это не ноды что ли?

Конкретнее пиши..(как на Авито) человек создает ноду(объявление) продам Ваз 2109 и на его странице-объявления должен быть блок с другими объявлениями о продаже Ваз 2109, так?

если да, дам код..

Аватар пользователя Айдар Айдар 12 августа 2014 в 10:53

Артем, да, именно так.

Т.е. по аналогии:

Общий случай: создаем вьюху типа "Материал", добавляем контекстный фильтр "Has taxonomy term: id" > "Load term for show similar nodes (как-то так)"

Мой случай: создаем вьюху типа "Термин таксономии", добавлемм контекстный фильтр "Has taxonomy term: id" > "Load term for show similar nodes (как-то так)".

Т.е. в моем случае показываем на странице термина другие термины этого же словаря, связанные с текущим с помощью термина из совсем другого словаря.

Аватар пользователя artemrrr artemrrr 14 августа 2014 в 10:52

0 Вьюха - блок

1 Контекстные фильтры - выбираешь нужный термин по которому будешь вытаскивать похожий материал

2 В настройки - Обеспечить значение по умолчанию - PHP Код - в него вставляешь....

if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
if(isset($node->field_название_своего_поля['und'][0]['tid'])) {
return $node->field_название_своего_поля['und'][0]['tid'];
} else {
return FALSE;
}
}

У меня это работает если я термины протаскиваю через поля в типе материала и вытаскиваю ноды с этим термином в твоем случаи хрен знает поможет или нет, но как вариант можно поиграться в коде с переменными..