Вход для клиентов и партнеров
в начало сайта
Партнерская программаОнлайн демоСкачатьКарта сайта
 
Техническая поддержка
Регламент
Документация
Часто задаваемые вопросы (FAQ)
Решения типовых вопросов
Форум поддержки
Библиотека разработчика
Важная информация

Посмотрите демо-ролики и убедитесь в том, что "Twilight CMS" очень удобна в управлении, понятна и проста.

Бесплатно скачайте "Twilight.Basic", установите на своем компьютере и изучите систему более детально.

Если вам нужно установить "Twilight CMS" на существующий сайт или разработать новый - обращайтесь в отдел интеграции.

 
Задайте нам вопрос
Ваше имя
Ваш Email
Вопрос
Twilight.basic
  • Узнайте больше
  • Сравните версии
  • Twilight.selection
  • Узнайте больше
  • Сравните версии
  • Twilight.evolution
  • Узнайте больше
  • Сравните версии
  •  
    Главная // Библиотека разработчика // Справочники // Макроподстановки //
    Библиотека разработчика

    СatalogTree


    Назначение

    Используется для отрисовки иерархической структуры каталога, как правило для организации навигации по каталогу (дерева категорий или "хлебных крошек").

    Ключи

    source Используемое хранилище. Если ключ не задан, используется catalog.xml.
    catalogid Поскольку в одном хранилище может быть несколько различных каталогов, необходимо задать идентификатор каталога, который требуется отрисовать. Обязательный ключ.
    design Идентификатор используемого для отрисовки дизайна. Дизайны для каталога хранятся в Templates/catalog_designs.xml.
    rootpage Необходимо указать псевдоним корневой страницы каталога. Если не задано используется псевдоним catalog.

    Комментарии

    Структура любого каталога хранится в xml файле. В качестве примера можно взять файл catalog.xml из демонстрационного сайта. Файл содержит иерархию категорий, элементов и ярлыков (ссылок на элементы). Ярлыки при отрисовке автоматически преобразуются в элементы, поэтому в дальнейшем их можно не учитывать как самостоятельные логические элементы.

    Общая структура файла с дизайнами (catalog_design.xml)

    <?xml version="1.0" encoding="windows-1251" ?>
    <control-document>
            <catalogdesign id="main">
                <header><![CDATA[Заголовок]]></header>
                <delimiter><![CDATA[Разделитель]]></delimiter>
                <item>
                    <level id="1000" number="1">
                        <usual><![CDATA[Обычная категория уровня 1]]></usual>
                        <active><![CDATA[Активная категория уровня 1 и вызов отрисовки следующего уровня (если нужно) через $Children$]]></active>
                    </level>
                    <level id="1010" number="2">
                        ...
                    </level>
                </item>
                <footer><![CDATA[Подвал]]></footer>
                <empty><![CDATA[Когда ничего не найдено]]></empty>
            </catalogdesign>
    </control-document>

    Жирным выделены переменные части, определяемые разработчиком. Тэги CDATA могут отсутствовать, но мы рекомендуем ими обрамлять все блоки HTML для сохранения XML валидности файла с дизайнами.

    Внимание: Данный макрос использует файл catalog_design.xml так же как и макрос CatalogFullTree, но в нем не может быть секции <entity ...> и нет разделения на category/element внутри <level ...>. По этой причине совместное использование этих макросов на одном проекте невозможно, а при переходе от использования одного макроса к другому или обратно следует помнить о необходимости добавления или удаления данного тэга.

    Алгоритм работы макроса

    При отрисовке данного макроса система проходит последовательно все категории из выбранного каталога. Для каждого пункта каталога из файла с дизайнами производится выбор секции catalogdesign с указанным в ключе design идентификатором. Далее, из секции <item> выделяется секция <level> с number равным уровню элемента в иерархии каталога. Корневой элемент имеет уровень 1, его подкатегории 2, элементы в них 3 и так далее.

    Функционирование механизма определения уровня элементов полностью аналогично механизму определения уровня пункта в меню (см. макрос $Menu[]$), поэтому тут можно использовать переменную current (текущий уровень) и простейшие арифметические действия, а также интервалы. Таким образом, допустима конструкция <level number="1..current+2">, которая говорит что данная секция дизайна будет применена для всех категорий и элементов в каталоге, лежащих на уровне от 1 до "текущий уровень + 2". Под текущим уровнем понимается тот уровень, на котором сейчас находится пользователь в каталоге. Если он просматривает категорию третьего уровня, то current=3.

    Все секции level в пределах файла catalog_design.xml должны иметь свои уникальные идентификаторы, которые могут быть произвольными строками в пределах допустимых значений для атрибутов тэгов в языке XML. Рекомендуется для простоты использовать символы A-Z, 0-9, "-" и "_", например <level id="uroven_2" number="2">

    Внутри выбранной секции используется секция <active>, если категория находятся в ветке, в которой находится сейчас пользователь на сайте, или <usual> для всех остальных случаев. Это нужно для подсветки текущего пути при отрисовке навигации. Если активные пункты и неактивные отличаться по дизайну не должны, то значения этих секций должны быть одинаковы.

    Папки, которые помечены в админзоне как неопубликованные в структуре не учитываются.

    Если итоговый дизайн для текущего блока оказывается пустым, то на страницу будет выведена секция <empty>.

    Вывод атрибутов

    Каждый элемент дерева для отрисовки на сайте необходимо использовать в XML файле с дизайном. Каждый товар или папка, описанные некоторой сущностью в entities.xml, имеют набор полей (атрибутов). Каждое поле для текущего (при последовательном переборе во время отрисовки) элемента дерева может быть выведено в нужном месте дизайна через подстановку $PointProperty[атрибут]$.

    Начиная с версии 4.37 $Attribute:атрибут$ в файле с дизайном может свободно применяться наравне с конструкцией $PointProperty[атрибут]$. В более ранних версиях $Attribute:атрибут$ не применялся или работал неправильно.

    В файле catalog_design.xml можно использовать несколько служебных атрибутов, которые не находятся в таблицах с данными, а добавляются Cистемой "на лету".

    • childcount - содержит количество элементов в текущей категории (только для категорий);
    • folderchildcount - содержит количество папок в текущей категории (только для категорий);
    • level - содержит номер уровня вложенности элемента в дереве;
    • drillnumber - содержит сквозной номер (от 1 до N) папки в дереве;
    • index - содержит порядковый номер папки на текущем уровне вложенности;
    • pid - содержит идентификатор родительского элемента.
    • table и entity содержат имя таблицы и идентификатор сущности для текущего элемента соответственно.

    Комментарий: до версии 5.13 атрибут index работал как drillnumber, но это вызывало затруднения разработчиков. Поэтому было принято решение унифицировать названия и теперь в рамках всей системы drillnumber обозначает сквозной номер в рамках всей выборки (в данном контексте - всего дерева), а index - просто порядковый номер, в данном контексте - на текущем уровне.

    Примеры

    Пример
    $CatalogTree[source: catalog; catalogid: maincatalog; design: catalog_firstpage; rootpage: catalog]$

    « к списку макроподстановок

    версия для печати

     
    © 2003-9 Страта Технологии (создание сайтов, разработка cms), Twilight CMS in english.
    Наш адрес: Москва, пр. Маршала Жукова д.51
    Тел.: (495) 222-6436, E-mail: , карта сайта, условия использования информации о CMS
    Cм. также: cms управление
    Реклама: Стоимость аренды мерседеса хорошие условия от надежной транспортной компании с большим парком машин.