Viewfield скрыть поле если вьюха ничего не выводит.

Аватар пользователя VasyOK VasyOK 17 марта 2018 в 10:22

Хороший модуль viewfield. Позволяет на ноде выводить содержимое вьюх.
Вот беда - если вьюха ничего не выводит поле остается со всеми его div-aми, что нервирует многих психов.

Существует патч https://www.drupal.org/project/viewfield/issues/477244

Но он работает только если во вьюхе присутствует поле NID. А если это моле во вьюхе не требуется. Например нужно проверить вьюху фильтрами (не контекстными).

Кароче если у кого подобные проблемы есть - можете сюда написать.

Патчем пользваться не рекомендую, потому как
без него:
выводятся "лишние" контейнеры если вьюха пустая
с ним:
не выводятся вьюхи не имеющие поля NID

0 Thanks

Комментарии

Аватар пользователя wombatbuddy wombatbuddy 18 марта 2018 в 20:35

Сайтбилдер может с помощью модуля 'JS injector' внедрить код, который будет удалять такие поля. Например, такой:

jQuery( document ).ready( function() {
  // Если открыта страница редактирования ноды, то поля не удаляем
  if ( /edit/.test( window.location.href ) ) {
    return;
  }
 
  jQuery( '.field-type-viewfield' ).each( function() {
    if ( jQuery( this ).find( '.view-content' ).length === 0 ) {
      this.remove();
    }
});
Аватар пользователя VasyOK VasyOK 18 марта 2018 в 23:20

Как внедрить jQuery я знаю. Кто такой Сайтбилдер - нет.
Речь идет о поведении модуля Viewfield и патча, который (в настроящем виде) надеюсь не воткнут в следующий релиз.

Аватар пользователя space11 space11 8 августа 2018 в 12:43

Приветствую
Очень интересный вопрос Вы тут затронули.
Как раз пытаюсь решить данную задачу с Viewfield и фильтрацией ...
Спасибо

Аватар пользователя Andruxa Andruxa 8 августа 2018 в 17:04

Проблема в том, что пустой вьюс все равно возвращает враппер <div class="view view-name-..."></div>
Соответственно - значение филда получается непустым, и оно выводится.
Самое простое - переопределить шаблон вьюса, убрав из него этот враппер

Аватар пользователя VasyOK VasyOK 8 августа 2018 в 19:42

Andruxa, переписать придется не только шаблон вьюхи но и шаблон поля.

space11, инструкция точно не повредит новичку и пригодится пусть не для этого, так для других случаев.

Аватар пользователя space11 space11 9 августа 2018 в 11:18

div:empty {
display: none;
}
подскажите пожалуйста как сделать наоборот - скрыть div, если есть в нем информация?

Аватар пользователя VasyOK VasyOK 9 августа 2018 в 12:00

Извините, за глупый вопрос: вы где класс где его свойство понимаете?

div:not( :empty ) {
  display: none;
}
/*или*/
div.my_class:not( :empty ) {
  display: none;
}
Аватар пользователя space11 space11 10 августа 2018 в 10:01

Подскажите пожалуйста можно ли использовать в связке модуль Views Conditional и глобальный фильтр сравнения полей для сравнения и соответственно фильтрации Views Field View и обычного поля представления ?

Аватар пользователя VasyOK VasyOK 10 августа 2018 в 11:13

space11, вам нужно мое разрешение? Если да - разрешаю.
Но лучше распишите задачу, но только в отдельно теме, потому как ваш вопрос к сабжу не относится никак.