Помогите пожалуйста прикрутить проверку для аргумента Views!

Аватар пользователя artemrrr artemrrr 20 марта 2014 в 20:39

Мне нужно вывести в блоке Views похожие материалы, код ниже при подстановки в контекстный фильтр (форма PHP) нужного мне поля позволяет делать, то что надо, НО

<?php return node_load(arg(1))->field_имя['und'][0]['tid']; ?>

Если у данной ноды нет такого поля или оно пустое то ошибка. Помогите, надо проверку прикрутить, у самого знаний не хватает.

Лучший ответ

Аватар пользователя voviko voviko 20 марта 2014 в 21:42

<?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;
    }
}
?>

Комментарии

Аватар пользователя drupby drupby 20 марта 2014 в 20:49

"artemrrr" wrote:
Помогите, надо проверку прикрутить, у самого знаний не хватает.

какая помощь нужна - учебник по php подарить или дать ссылку на php.net ?

Аватар пользователя NaZg NaZg 20 марта 2014 в 21:05

if ->
дальше яснее

или может всё-таки инструманталом вьюза обойтись?

Аватар пользователя artemrrr artemrrr 20 марта 2014 в 21:17

Вот так работает НО с полями CCK

<?phpif (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
return $node->field_имя[0]['value'];
} else {
return FALSE;
}?>

А у меня поля на основе Терминов таксономии поэтому верхний вариант не проходит..

Пробывал вот так..

<?phpif (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
return $node->field_имя['und'][0]['tid'];
} else {
return FALSE;
}?>

тоже НЕТ..

Помогите спецы!!!!

Аватар пользователя juggler39 juggler39 20 марта 2014 в 21:16

Мне кажется, вы усложняете. Попробуйте вот так:

<?php if isset(field_имя['und'][0]['tid']) {return node_load(arg(1))->field_имя['und'][0]['tid'];} ?>

Аватар пользователя voviko voviko 20 марта 2014 в 21:42

<?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;
    }
}
?>
Аватар пользователя juggler39 juggler39 20 марта 2014 в 21:45

А если вот так:

<?php if isset(node_load(arg(1))->field_имя['und'][0]['tid']) {return node_load(arg(1))->field_имя['und'][0]['tid'];} else {
return FALSE;}?>

Аватар пользователя designproject designproject 15 октября 2018 в 23:12

Здравствуйте! Прошу о помощи. Проблема похожая, но не могу разобраться. Так же нужно сделать проверку, т.к. нотис появляется про переходе со страницы, на которой не было определенного поля.
<?php $node = node_load(arg(1));
print $node->field_small_descripton['und']['0']['value']; ?>