Доброго времени суток! Что-то туплю.
Как вывести "похожие" термины на странице текущего термина на основе одного присвоенного термина словаря?
Например, имеем два словаря: "Марки авто", "модели авто". В словаре моделей имеем поле типа "term reference", где присваиваем термину марку (например, термин "ВАЗ-ТАЗ 2109" имеет термин "ВАЗ-ТАЗ").
Нужно с помощью вьюхи показать другие модели этой же марки на странице определенной модели (по аналогии с нодами - но там все легко).
Пробовал добавлять контекстные фильтры "term id", "my_field_марка_авто" - но безуспешно.
Есть какие-либо идеи?
Комментарии
че то я не понял у тебя материал это не ноды что ли?
Конкретнее пиши..(как на Авито) человек создает ноду(объявление) продам Ваз 2109 и на его странице-объявления должен быть блок с другими объявлениями о продаже Ваз 2109, так?
если да, дам код..
Почти так - вместо ноды термин таксономии.
страница термина?
Артем, да, именно так.
Т.е. по аналогии:
Общий случай: создаем вьюху типа "Материал", добавляем контекстный фильтр "Has taxonomy term: id" > "Load term for show similar nodes (как-то так)"
Мой случай: создаем вьюху типа "Термин таксономии", добавлемм контекстный фильтр "Has taxonomy term: id" > "Load term for show similar nodes (как-то так)".
Т.е. в моем случае показываем на странице термина другие термины этого же словаря, связанные с текущим с помощью термина из совсем другого словаря.
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;
}
}
У меня это работает если я термины протаскиваю через поля в типе материала и вытаскиваю ноды с этим термином в твоем случаи хрен знает поможет или нет, но как вариант можно поиграться в коде с переменными..