Как условно скрыть поле в друпальском виде? - PullRequest
11 голосов
/ 05 декабря 2010

У меня есть два поля, которые я хочу визуализировать, но я хочу, чтобы второе отображалось только тогда, когда первое пусто.Если не считать переопределения поля в файле шаблона, могу ли я сделать это, используя функциональность встроенной функциональности представлений?

Ответы [ 6 ]

15 голосов
/ 10 января 2013

Для представлений 3, drupal 7

  • Требуемый вывод - Показать поле1, если поле 2 пусто.

Добавить оба поля для просмотра в порядке полей1, полей2 и выбрать поле1флажок «исключить из отображения».

Перейдите в поле 2 и настройте «Показывать поведение без результатов».Добавьте шаблон замены field1, например, [field1] и выберите «Подсчитать число 0 как пустое», «Скрыть, если пусто» и «Скрыть перезапись, если пусто».

Теперь это произведет функциональность if else для этих двух полей.

3 голосов
/ 03 февраля 2011
  1. Добавьте поле, которое вы хотите показать. Выберите «исключить из отображения».
  2. Добавьте поле, которым вы хотите управлять, если вы показываете предыдущее. Выберите «перезаписать вывод». Используйте замену токена для отображения предыдущего поля. Отметить «Скрыть, если пусто»
  3. Нет трех.

PS: цитируемые варианты текстов могут быть не правильными (я смотрю на переведенный сайт), но вы поняли.

1 голос
/ 20 мая 2013

Вы можете сделать это легко, выполнив следующие действия (я пробовал это в drupal 7):

  1. Добавьте оба поля
  2. , чтобы сделать первое поле невидимым (исключить из отображения)
  3. во втором поле перейдите на вкладку поведения без результатов.
  4. запишите токен первого поля (пример: [field_name]).

Это должноработа, я надеюсь, что это будет работать с вами

1 голос
/ 05 декабря 2010

Я бы обычно использовал модуль views_customfield для такого рода вещей.Добавьте в ваше представление третье поле, которое является настраиваемым полем php, и исключите второе поле из отображения.Затем вы можете написать очень быстрый фрагмент PHP в пользовательском поле, которое проверяет, является ли первое поле пустым, и печатает второе поле, если оно есть.

0 голосов
/ 28 мая 2012

Мое решение для отображения field_1 для английской версии и field_2 для переведенной версии:

С использованием панелей:

  1. Сделайте две копии представления, добавив еще один дисплейна вид.

  2. В исходном отображении вида вы удаляете или исключаете из дисплея field_2, во втором - удаляете field_1.

  3. На панели вы добавляете оба дисплея в виде панелей панели.

  4. Для панели отображения первого вида добавьте Visibility rule -> User:language -> English.

  5. Для второй панели отображения вида добавьте Visibility rule -> User:language -> Your_second_language.

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

0 голосов
/ 16 декабря 2010

Вы можете отчасти помассировать это, чтобы работать с созерцанием.Вы могли бы сделать что-то вроде этого:

    <?php 
if(empty($node->field_foo[0]['view'])){ ?>
<?php print $node->field_bar[0]['view'] ?>
<?php } ?>
...