Контекстный фильтр Views по многозначному полю

Аватар пользователя DrupRain22 DrupRain22 2 ноября 2018 в 1:13

Нужно вывести ноды с контекстным фильтром по полю "телефон" . Вывожу с помощью PHP

<?php
$node 
node_load(arg(1));
if (isset(
$node->field_tel['und'][0]['value'])) return $node->field_tel['und'][0]['value'];
?>

Нормально все выводится, но если совпадение полное. А если в одной ноде указаны 2 номера, а в другой только один, совпадающий с одним из этих двух, то контекст не работает. Как можно подправить код для решения проблемы?

Лучший ответ

Аватар пользователя gun_dose gun_dose 2 ноября 2018 в 9:38
2
<?php
$values 
= [];
foreach (
$node->field_tel['und'] as $value) {
  
$values[] = $value['value'];
}
return 
implode(','$values);
?>

Комментарии

Аватар пользователя gun_dose gun_dose 2 ноября 2018 в 9:38
2
<?php
$values 
= [];
foreach (
$node->field_tel['und'] as $value) {
  
$values[] = $value['value'];
}
return 
implode(','$values);
?>
Аватар пользователя DrupRain22 DrupRain22 2 ноября 2018 в 20:47

Выдает ошибки.

Notice: Undefined variable: node in eval() (line 2 of C:\newsite2\tac\sites\all\modules\views\plugins\views_plugin_argument_default_php.inc(53) : eval()'d code).
Notice: Trying to get property of non-object in eval() (line 2 of C:\newsite2\tac\sites\all\modules\views\plugins\views_plugin_argument_default_php.inc(53) : eval()'d code).
Warning: Invalid argument supplied for foreach() in eval() (line 2 of C:\newsite2\tac\sites\all\modules\views\plugins\views_plugin_argument_default_php.inc(53) : eval()'d code).

Аватар пользователя gun_dose gun_dose 2 ноября 2018 в 20:51
1

Забыл вставить $node = node_load(arg(1));

Вы ж проверяйте код из интернета перед использованием, а то как в том анекдоте:
- странно, я ведь просто скопировал этот код со Stackoverflow.
- Из вопроса или из ответа?