Скрыть вид только с одним результатом? - PullRequest
3 голосов
/ 08 февраля 2011

Я использую Drupal 6 и Views для создания серии галерей изображений. Один вид создает полноразмерное слайд-шоу, а другой - список миниатюр под основным изображением. Это прекрасно работает, но когда в галерее есть только одно изображение, миниатюра не нужна и выглядит странно.

Есть ли способ скрыть представление, содержащее только один результат?

Ответы [ 3 ]

2 голосов
/ 09 февраля 2011

Нет настроек просмотра, о которых я знаю, чтобы выполнить то, что вы ищете. Однако на ум приходят два способа ... jQuery или немного нестандартного PHP.

JQuery

Каждой строке в результатах просмотра будет присвоен класс views-row-N. Таким образом, вы можете использовать скрипт jQuery, чтобы увидеть, есть ли div (или какой-либо другой элемент контейнера, используемый для каждой строки) с классом views-row-2. Если нет, то у вас есть только один результат. Так что теперь вы можете использовать jQuery для скрытия самого внешнего элемента div (или другого элемента контейнера, но я думаю, что это всегда элемент div), который имеет класс view-view-name. Так что, если бы вид был назван "превью", это было бы view-thumbs. Технически представление все еще будет, но вы можете, по крайней мере, скрыть его от пользователя, что, по-видимому, и является вашей реальной целью.


Пользовательский PHP

Целью пользовательского PHP будет определение количества результатов в представлении и, если их больше одного, отображение его на странице. Есть несколько способов сделать это, но я думаю, что самым простым будет переопределить файл шаблона темы views-view.tpl.php. Если вы перейдете на страницу редактирования вида, то для каждого дисплея есть Theme: Information, как на панели Basic Settings Если вы щелкнете по нему, он предоставит вам список шаблонов тем для этого Представления вместе с именами кандидатов (файлы, которые Drupal будет искать при оформлении тематики результатов Представления). Вы можете переопределить файл views-view.tpl.php другим файлом ( не заменять , просто переопределить), скопировав файл и присвоив ему одно из имен в списке. Этот файл будет использоваться для отображения всех результатов просмотра. Если вы откроете файл, в верхней части появится комментарий, объясняющий, какие переменные доступны. Одним из них является переменная $rows. Вы можете использовать эту переменную, чтобы определить, существует ли более одной строки. Если нет, то ничего не распечатывайте. Если есть, тогда продолжайте и позвольте теме по умолчанию произойти. Поэтому на самом деле все, что вам нужно сделать, это обернуть все в файле шаблона по умолчанию в блок if / else ... если есть 2 или более строк, делайте все, что уже есть, иначе ничего не делайте.


В качестве примечания ... Я всегда считал, что сочетание FireFox с FireBug, модуля Devel и модуля разработчика тем является НАСТОЯЩЕЙ помощью при работе с и тому подобное.

0 голосов
/ 02 марта 2013

Я добавил пользовательский views-view.tpl.php в свою тему - мне понадобилось количество по нескольким причинам.

Я изменил первую строку, чтобы читать:

<div class="<?php print $classes; ?> result-count-<?php print count($view->result) ?>">

Это помогает со стилем, когда он вам действительно нужен.

0 голосов
/ 10 февраля 2011

CSS

Стили представлений Unformatted и HTML list помечают первый и последний результаты запроса с помощью классов CSS. Если вы можете использовать один из них, это так просто:

.view-id-foobar .views-row-first.views-row-last {
  display: none;
}
...