[...]Если есть логотип - отображаем запись, нет - не отображаем. Всего должно набраться 5 отображаемых записей. Если будет всего две организации с логотипом - отображать только две. Но заранее скажу, что 5 организаций с лого - будет всегда.[...]
Если есть уверенность, в том что будет как минимум 5 организаций с лого, тогда не стоит усложнять код и городить лишние проверки:
Вариант 1: выводим только с организации с лого. Есть лого - отображаем, нет - не отображаем.
Вариант 2: выводим все организации. Есть лого - отображаем лого, нет лого - ставим заглушку:
PHP:
JHtml::_('image', 'http://placehold.it/' . $width . 'x' . $height, $alt);
где $width - ширина заглушки, $height - высота, $alt - альтернативный текст
Если уверенности в наличии хотя бы 5-ти организаций с лого нет - будем усложнять. Вместо редактирования стандартных приложений и шаблонов, лучше создавать свои, чтобы избежать неприятностей при обновлении.
1. Для начала создаем свой шаблон списка копированием любого стандартного шаблона списка, например modules/mod_zooitem/tmpl/list.php.
2. Называем его, например companies.php
3. Создаем 3 шаблона элемента списка. Первый отвечает только за проверку наличия лого (modules/mod_zooitem/renderer/item/haslogo.php). Второй - за вывод необходимых данных об организации с проверкой на наличие лого(modules/mod_zooitem/renderer/item/company.php). Третий - за вывод необходимых данных об организации без проверки на наличие лого(modules/mod_zooitem/renderer/item/[название_другого_шаблона].php).
4. Добавляем позиции в modules/mod_zooitem/renderer/item/positions.xml
Код:
<positions layout="haslogo">
<position name="logo">Логотип</position>
</positions>
<positions layout="company">
<position name="logo">Логотип</position>
<position name="title">Название</position>
<position name="desc">Описание</position>
[...и так далее]
</positions>
<positions layout="[название_другого_шаблона]">
<position name="logo">Логотип</position>
<position name="title">Название</position>
<position name="desc">Описание</position>
[...и так далее]
</positions>
5. Добавляем данные о шаблонах элементов в modules/mod_zooitem/renderer/item/metadata.xml
Код:
<layout name="haslogo">
<name>Проверка наличия логотипа</name>
<description>Шаблон используется для проверки наличия логотипа организации.</description>
</layout>
<layout name="company">
<name>Организация</name>
<description>Шаблон используется для отображения данных организации, имеющей логотип.</description>
</layout>
<layout name="[название_другого_шаблона]">
<name>Организация</name>
<description>Шаблон используется для отображения данных организации.</description>
</layout>
6. Осуществляем привязку полей к соответствующим позициям шаблона в панели управления.
7. Основное содержание haslogo.php - проверка наличия логотипа
Код:
echo $this->checkPosition('logo') ? true : false;
8. Основное содержание company.php - вывод необходимых полей организации с проверкой на наличие лого
PHP:
<?php if ($this->checkPosition('logo')) : ?>
[выводим позиции организации]
<?php endif; ?>
9. Основное содержание [название_другого_шаблона].php - вывод необходимых полей организации
PHP:
[выводим позиции организации]
10. Основное содержание companies.php - проверка и вывод
PHP:
<?php if (!empty($items) && count($items)) :// у нас есть опубликованные организации ?>
<?php
// объявляем массив-счетчик организаций с лого
$haslogo = array();
foreach ($items as $item) :
// если есть лого - добавляем значение в массив
$renderer->render('item.haslogo', compact('item')) ? $haslogo[] = true : '';
endforeach;
?>
<?php
if (count($haslogo) >= 5)
{// у нас есть минимум 5 организаций с лого - подключаем шаблон с проверкой на наличие лого
foreach ($items as $item) :
echo $renderer->render('item.company' . $layout, compact('item', 'params'));
endforeach;
}
else
{// у нас меньше чем 5 организаций с лого - подключаем шаблон без проверки на наличие лого
foreach ($items as $item) :
echo $renderer->render('item.[название_другого_шаблона]' . $layout, compact('item', 'params'));
endforeach;
}
?>
<?php else :// у нас нет опубликованных организаций ?>
<?php echo JText::_('COM_ZOO_NO_ITEMS_FOUND'); ?>
<?php endif; ?>
11. Добавляете нужную вам HTML-разметку в шаблоны company.php и [название_другого_шаблона].php
12. В настройках модуля в качестве шаблона списка выбираете companies.php, в качестве шаблона элемента списка company.php
Вот и все. Думаю разберетесь.
Это простой пример, иллюстрирующий гибкость системы шаблонов ZOO. Но, я бы не стал решать подобную задачу через шаблоны модуля.