Темы шаблонов просмотров

У меня есть шаблон "views-view-field - tracker - name.tpl.php" для представления, называемого трекером, и я использую оператор If ... Else в шаблоне для печати полей.

<?php
if ($node ->uid == 0) {
  print $view->field['field_authorname_value']->render($row);
} else {
  print $view->field['name']->render($row);
}
?>

Приведенный выше код не работает должным образом, он хорошо печатает первую часть, но не вторую часть. Тем не менее, печать без оператора if, похоже, работает нормально. например:

<?php
print $view->field['name']->render($row);
?>

Не уверен, что не так с кодом, поэтому ищу ответы


person user251722    schedule 15.01.2010    source источник
comment
Может быть, второй случай никогда не возникает (всегда первый случай), или что-то не печатается правильно, когда возникает второй случай?   -  person Jon F Hancock    schedule 15.01.2010


Ответы (2)


Я не совсем уверен. Что произойдет, если вы перевернете оператор if?

<?php
if ($node ->uid != 0) {
  print $view->field['name']->render($row);
} else {
  print $view->field['field_authorname_value']->render($row);
}
?>

Или используйте оператор switch:

<?php
switch ($node ->uid) {
    case 0:
        print $view->field['field_authorname_value']->render($row);
        break;
    default:
        print $view->field['name']->render($row);
}
?>
person Jon F Hancock    schedule 15.01.2010
comment
я получаю тот же результат, что и раньше. - person user251722; 15.01.2010

В drupal раздражающий пользователь == 0. Однако вам, вероятно, следует сначала проверить это, чтобы убедиться, что / what / uid действительно соответствует вашей проверке. Другими словами, когда вы отлаживаете свою страницу, вставьте

echo "uid:". $ node -> uid;

/ before / оператор if, и это позволит вам узнать, что вы проверяете (например, если это всегда 0 или что-то другое, кроме 0 для не раздражающих пользователей). Надеюсь, что это имеет достаточно смысла. Повторение ценностей - ваш лучший друг, когда утверждения if else не работают

[edit] Также убедитесь, что вы не анонимный пользователь, иначе ваш код работает нормально. Просто случай, когда человек работает некорректно (вчера тоже это сделал)

person Liam    schedule 15.01.2010