Собственно, вопрос:
Как передать в контекстный фильтр значение поля текущей ноды (ноды на странице которой выводится блок views). (аргумент который мне нужен не содержится в урле)
копал в сторону:
PHP contextual filter code с значением
<?php
return $content->field_name[0];
?>
field_name - текстовое поле
Комментарии
В "урле" содержится нода, а поле в ней. Т.е. для передачи значения из блока - ему (блоку) достаточно отображаться на странице материала, значение подхватится автоматически (если контекстный фильтр правильно настроен).
Не знаю насколько это правильное решение, наверняка есть правильнее, но можно так:
Контекстный фильтр по этому полю.
Значение по умолчанию, тип php.
<?php
$node = node_load(arg(1));
if (isset($node->field_name['und'][0]['value'])) return $node->field_name['und'][0]['value'];
?>
К сожалению, не сработало
Не сработало только если у тебя не field_name['und'][0]['value'] а например field_name['und'][0]['tid'] или что другое. Зависит от того что за поле. Посмотреть можно через модуль Devil.
И вводится это в раздел "Когда значение фильтра НЕ доступно".
Большое спасибо!
конечный код был таким:
<?php
$node = node_load(arg(1));
if (isset($node->field_name['und'][0]['taxonomy_term']->name)) return $node->field_name['und'][0]['taxonomy_term']->name;
?>
А как сделать если нужно отфильтровать по нескольким полям. Почему-то выводит пустой список. По одному всё ок.
там же написано
Enter PHP code that returns TRUE or FALSE. No return is the same as FALSE, so be SURE to return something if you do not want to declare the argument invalid. Do not use <?php ?>. The argument to validate will be "$argument" and the view will be "$view". You may change the argument by setting "$handler->argument". You may change the title used for substitutions for this argument by setting "$handler->validated_title".
return TRUE;