[РЕШЕНО]Аргументы (Contextual filters) views из cck поля

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

Аватар пользователя osof osof 16 июля 2013 в 23:26

Добрый день. Прошу помощи. Упрощенно задачку можно описать так.
Есть ноды типа "Продукты". У них есть поле reference field, связанное с материалом "Лоток".
Ну, создаешь продукт и указывашь к примеру "лоток №3".

Есть views для конкретного продукта с Contextual filters по NID продукта.
Как в этом отображении вывести все продукты на этом же лотке? По логике ставим фильтры на тип материала = Продукты и фильтр (Лоток = ?). Contextual filters не подходит, так как там сечас приходит NID текущего продукта из URL'а.
Или создавать связь и задавать Contextual filters через связи?

Вроде задача обычная, а побороть не могу. На 6-ке решалось через PHP-выковыривание значения NID связанного поля ноды и передачи его в Аргументы. На 7-ке у меня такой финт не заработал.
Заранее благодарен.

Комментарии

Аватар пользователя osof osof 16 июля 2013 в 23:39

voviko wrote:
1.грузите ноду
2.выковыриваете ид лотка
3.ставите id как аргумент

Вроде бы так и делаю, а не работает.
Contextual filter ставлю id лотка с РНР кодом

$node=node_load(arg(1));
return $node->field_lotok[0]['nid'];

Не хочет Sad

Аватар пользователя voviko voviko 16 июля 2013 в 23:55

"osof" wrote:
return $node->field_lotok[0]['nid'];

return $node->field_lotok['und'][0]['value']; примерно так, проверьте через php блок, или print
хотя не так (['value']), не помню точно.
print_r($node->field_lotok['und'][0]);

Аватар пользователя osof osof 17 июля 2013 в 0:18

voviko wrote:
"osof" wrote:
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 кода в контекстный фильтр фильтр не фильтует. Smile

Аватар пользователя osof osof 17 июля 2013 в 1:28

voviko wrote:
в тпл передаёте аргумент?

ПРостите, недопонял. Тпл? Я в contextual filter во views в пункте default value выбираю php и туда вставляю этот кусок код

Аватар пользователя osof osof 17 июля 2013 в 17:53

В общем-то поборол. Может кому-то пригодится. Причина, по которой не отрабатывал фильтр на код
$node=node_load(arg(1));
return $node->field_lotok[0]['nid'];
вот в чем.
Вьюха вызывалась вложенной в панель. А в панели во вьюху передавался ID материала в виде агрумента. Так вот, передавать надо не ID, а адрес ноды. А вьюха из адреса ноды уже получит для себя ID