Компонент YOO ZOO (часть 2)

[...] А необходимо, чтобы выводилось 5 элементов в любом случае.
Это уже второе условие, не относящееся к фильтрации. Фильтрация подразумевает вывод только удовлетворяющих условию фильтров данных. Возможно вы имели ввиду сортировку?

Если нет, это только работа с шаблонами. Используйте шаблон списка (modules/mod_zooitem/tmpl/ваш_список.php) для дополнительных условий.
 
Последнее редактирование:
Если нет, это только работа с шаблонами. Используйте шаблон списка (modules/mod_zooitem/tmpl/ваш_список.php) для дополнительных условий.
Тогда вышеобозначенная вами конструкция работать не будет. В какой переменной хранится наличие логотипа? Как к ней обратиться и поставить условие?
 
Тогда вышеобозначенная вами конструкция работать не будет. В какой переменной хранится наличие логотипа? Как к ней обратиться и поставить условие?
Что значит работать не будет? Ваше поле логотипа должно быть опубликовано в определенной позиции шаблона модуля. Ничего не мешает вам использовать один шаблон элемента списка (renderer/item/) для проверки наличия лого и возвращать результат проверки в шаблон списка (tmpl/), а второй уже для отображения записи.

Позиции шаблонов здесь - modules/mod_zooitem/renderer/item/positions.xml
Информация о шаблонах здесь - modules/mod_zooitem/renderer/item/metadata.xml

Распишите логику работы. Если есть логотип - отображаем запись, нет - не отображаем? Если нет ни одного логотипа - отображаем все записи? Что делать если на 100 записей всего две с логотипом, а остальные без? Отображать только 2?
Конкретизируйте задачу - я приведу вам конкретный пример.
 
Последнее редактирование:
Распишите логику работы. Если есть логотип - отображаем запись, нет - не отображаем? Если нет ни одного логотипа - отображаем все записи? Что делать если на 100 записей всего две с логотипом, а остальные без? Отображать только 2?
Конкретизируйте задачу - я приведу вам конкретный пример.
С первой частью разобрался. Создал отдельный шаблон списка (tmpl) и шаблон элемента (renderer/item) - теперь выводит только организации с логотипом. Выполнил настройку полей в админке Zoo для текущего шаблона элемента (renderer/item).
Осталась вторая часть. Если есть логотип - отображаем запись, нет - не отображаем. Всего должно набраться 5 отображаемых записей. Если будет всего две организации с логотипом - отображать только две. Но заранее скажу, что 5 организаций с лого - будет всегда. Представляю себе, что все необходимо делать в шаблоне списка. Там сейчас такой вывод:
Код:
<?php $i = 0; foreach ($items as $item): ?>
    <li><?php echo $renderer->render('item.'.$layout, compact('item', 'params')); ?></li>
    <?php $i++; endforeach; ?>
Какое условие необходимо добавить для решения задачи?
 
[...]Если есть логотип - отображаем запись, нет - не отображаем. Всего должно набраться 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. Но, я бы не стал решать подобную задачу через шаблоны модуля.
 
Последнее редактирование:
Ребята! Перезалейте фулл версию "YOO ZOO" все ссылки бытые! очень надо! Спасибо!
 
Ребята! Перезалейте фулл версию "YOO ZOO" все ссылки бытые! очень надо! Спасибо!

ZOO
Версия: 2.6.6 J1.5 и demoj1.5full - 3.1.6FULL
compat_25.png
compat_30.png

 
Последнее редактирование:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Поддержка
compat_25.png
compat_30.png

Версия: 3.0.8
Ссылка на Для просмотра ссылки Войди или Зарегистрируйся
Ссылка на Для просмотра ссылки Войди или Зарегистрируйся

ItemPanes - простой инструмент для создания аккордеонов, табов и вкладок в ZOO элементы. Очень легкий и удобный способ организовать вашу переднюю конечное содержание наиболее эффективным способом. ItemPanes была разработана с простотой использования и укладки гибкость в использовании! Это такой элемент, который вы "установили и забыли", потому что это просто работает!
Пример:
45524.png
45523.png

Тип расширения: Специфически
Комерческий: стоимость 9,99 €


перезагрузите пожалуйста! битая ссылка!
 
Последнее редактирование:
Назад
Сверху