Добрый день. Прошу помощи. Упрощенно задачку можно описать так.
Есть ноды типа "Продукты". У них есть поле reference field, связанное с материалом "Лоток".
Ну, создаешь продукт и указывашь к примеру "лоток №3".
Есть views для конкретного продукта с Contextual filters по NID продукта.
Как в этом отображении вывести все продукты на этом же лотке? По логике ставим фильтры на тип материала = Продукты и фильтр (Лоток = ?). Contextual filters не подходит, так как там сечас приходит NID текущего продукта из URL'а.
Или создавать связь и задавать Contextual filters через связи?
Вроде задача обычная, а побороть не могу. На 6-ке решалось через PHP-выковыривание значения NID связанного поля ноды и передачи его в Аргументы. На 7-ке у меня такой финт не заработал.
Заранее благодарен.
Комментарии
1.грузите ноду
2.выковыриваете ид лотка
3.ставите id как аргумент
Вроде бы так и делаю, а не работает.
Contextual filter ставлю id лотка с РНР кодом
$node=node_load(arg(1));
return $node->field_lotok[0]['nid'];
Не хочет
return $node->field_lotok['und'][0]['value']; примерно так, проверьте через php блок, или print
хотя не так (['value']), не помню точно.
print_r($node->field_lotok['und'][0]);
Проверил. $node->field_lotok['und'][0]['nid'] дает правильный айди лотка. Но при вставке этого php кода в контекстный фильтр фильтр не фильтует.
в тпл передаёте аргумент?
ПРостите, недопонял. Тпл? Я в contextual filter во views в пункте default value выбираю php и туда вставляю этот кусок код
Дубль
Вариантов нет? Стандартными средствами, через связи и т.д.?
В общем-то поборол. Может кому-то пригодится. Причина, по которой не отрабатывал фильтр на код
$node=node_load(arg(1));
return $node->field_lotok[0]['nid'];
вот в чем.
Вьюха вызывалась вложенной в панель. А в панели во вьюху передавался ID материала в виде агрумента. Так вот, передавать надо не ID, а адрес ноды. А вьюха из адреса ноды уже получит для себя ID