Как условно скрыть поле в представлении drupal?
У меня есть два поля, которые я хочу отобразить, но я хочу, чтобы второй отображался, когда первый пуст. Не удалось ли переопределить поле в файле шаблона, могу ли я сделать это, используя функциональность во встроенных функциях представлений?
Ответы
Ответ 1
Для просмотров 3, drupal 7
- Желаемый вывод - Показать поле1, если поле2 пусто.
Добавьте оба поля для просмотра в поле1, поле2 и выберите поле1 флажок "исключить из отображения".
Перейдите в поле2 и настройте "Показать поведение результатов". Добавьте шаблон замены поля1, например [field1], и выберите "Считать число 0 как пустое", "Скрыть, если пусто" и "Скрыть переписывание, если пусто".
Теперь это создаст, если еще функция для этих двух полей.
Ответ 2
- Добавьте поле, которое вы хотите показать. Выберите "исключить из дисплея".
- Добавьте поле, которое вы хотите контролировать, если вы показываете предыдущий. Выберите "переписать вывод". Используйте символическую замену для отображения предыдущего поля. Марк "Скрыть, если пустой"
- Нет трех.
PS: Тексты с котируемыми опциями могут быть неправильными (я смотрю на переведенный сайт), но вы получаете идею.
Ответ 3
Обычно я использовал модуль views_customfield для такого рода вещей. Добавьте третье поле в свое представление, которое является пользовательским полем php, и исключите ваше второе поле с дисплея. Затем вы можете написать действительно быстрый фрагмент PHP в пользовательском поле, которое проверяет, пустое ли первое поле и распечатывает второе поле, если оно есть.
Ответ 4
Вы можете сделать это легко, выполнив следующие шаги (я пробовал это в Drupal 7):
- Добавьте оба поля
- сделать первый невидимым (исключить из дисплея)
- во втором поле перейти к вкладке поведения результата.
- записать токен первого поля (пример: [field_name]).
Он должен работать, я надеюсь, что он сработает с вами.
Ответ 5
Мое решение для показа field_1 для английской версии и field_2 для переведенной версии:
Использование панелей:
-
Сделайте две копии представления, добавив еще один экран в представление.
-
На экране исходного вида вы удаляете или исключаете из дисплея field_2
, на втором дисплее вы удаляете field_1
.
-
В вашей панели вы добавляете оба ваших представления в виде панелей панели.
-
Для панели отображения первого представления добавьте Visibility rule -> User:language -> English
.
-
Для панели отображения второго представления добавьте Visibility rule -> User:language -> Your_second_language
.
Это выглядит сложно, но это очень просто для людей, знакомых с панелями и представлениями.
Это решение не требует изменения кода или знаний о них.
Ответ 6
Вы можете как-то массировать его, работая с созерцанием. Вы можете сделать что-то вроде этого:
<?php
if(empty($node->field_foo[0]['view'])){ ?>
<?php print $node->field_bar[0]['view'] ?>
<?php } ?>