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

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

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

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

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

    СatalogList


    Назначение

    Подстановка используется для отрисовки списков товаров в заданной категории.

    Ключи

    source, catalogid Назначение и использование идентично подстановке $CatalogFullTree[]$
    design Идентификатор используемого для отрисовки дизайна. Дизайны для товаров хранятся в Templates/catalog_items_designs.xml.
    items_per_page Количество выводимых на одной странице товаров. Если не задано – постраничная разбивка использоваться не будет.
    filter Фильтры поле:значение. Если фильтровать выборку нужно по нескольким параметрам, то пары перечисляются через запятую, например так:

    filter: id=somevalue, sid!=somevalue

    sort Сортировка записей по имени поля (в примере date), в нисходящем порядке (desc), производить сравнение элементов как строки (literal) даты (date) или числа (numeric). По умолчанию сортировка осуществляется в восходящем порядке (asc) с автоматическим определением типа поля по которому производится сортировка.
    condition Условие, при котором будет отрисовываться данная макроподстановка.
    categoryid Строка, определяет идентификатор категории, относительно которой начинается отрисовка каталога (корневой узел в общем дереве каталога). Если не задан, то используется значение параметра sid из URL. Если не задано и оно, то используется значение catalogid, поскольку считается, что мы рисуем корневую папку каталога.

    Может содержать перечень нескольких categoryid через запятую (оформительские пробелы из ключа будут удалены, то есть после запятых можно ставить пробелы для простоты чтения). Нужно учесть, что при этом при отрисовке дизайна будут использоваться table и entity, взятые от первой указанной категории. Поэтому таким образом можно выводить только однотипные товары, лежащие в одной таблице. Контроль за этим условием - на разработчике.

    Комментарии

    Идеологически каталоги элементов (товаров, услуг и т.п.) устроены следующим образом:

    Структура каталога

    Хранится в XML файле. Она включает в себя категории (в админзоне выглядят как папки, в xml файле представлены как элементы folder с атрибутом assign="catalog_folder"), элементы (в админзоне отрисованы как страницы, в xml представлены элементами <node> c атрибутом assign="catalog_node") и ярлыки (ссылки на элементы). Ярлыки в админзоне рисуются как "страницы со стрелочками", а в xml они создаются и используются без участия разработчика.

    Сущности для элементов

    В рамках одного каталога могут присутствовать элементы разного типа. Например, в каталоге могут быть представлены фотоаппараты с ценой, описанием и картинкой, и фотопленки с количеством кадров и ценой. Сущности для фотоаппаратов и фотопленок задаются в entities.xml стандартным образом, при этом нужно добавлять к сущности (тэгу entity) атрибут assign="catalog".

    Данные

    Данные хранятся в таблицах в папке Data, при этом можно хранить все товары в одной таблице (даже с разными сущностями), или разнести товары разного типа в разные таблицы.

    Привязка сущностей и таблиц к каталогу

    Сущность и таблица, в которой хранятся экземпляры сущности (сами товарные записи), задаются через атрибуты entity и table тэга <folder> для категорий в каталоге. Можно задавать эти атрибуты и всему каталогу целиком, прописав их в тэге folder с assign="catalog".

    В дальнейшем при работе с каталогом в админзоне при создании новых категорий, в случае если каталог содержит более одного варианта товара (то есть в entities.xml есть более одного элемента с assign="catalog") система будет запрашивать какую сущность присвоить создаваемой категории. Это будет означать, что все элементы внутри будут иметь указанную сущность и храниться в указанной таблице.

    Если сущность для элемента-плёнки называется film, то можно задать сущность film_container для категории, чтобы иметь возможность задавать и позже отрисовывать описания не только для товаров, но для категорий (товарных групп). Прописывать сущность film_container нигде не нужно, она будет привлечена системой для категорий с entity="film" автоматически.

    Использование

    Задавая различные ключи разработчик указывает элементы из какой категории он хочет вывести на странице. Система автоматически определит таблицу где хранится информация об элементах и сущность, к которой они относятся. Затем из файла catalog_items_design.xml будет извлечена секция <entity> с id, который должен содержать указанный идентификатор сущности. В атрибуте id секции <entity> может содержаться несколько идентификаторов через запятую.

    В секции <entity> может содержаться несколько дизайнов для разных случаев отображения, это тэги catalogitemdesign. Система выберет нужный дизайн, идентификатор которого был передан в макроподстановку (ключ design). В дальнейшем работа макроса будет полностью аналогична логике работы макроса $News[]$, то есть из секций <header>, <footer>, <item> и <delimiter> будет составлена лента элементов (товаров), которая и будет отрисована. Если описание будет пустым выводится секция <empty>.

    Фильтруя список по определенному id товара можно отрисовывать описание одного выбранного товара (или использовать фильтрацию с выбором диапазона - см. описание ключа filter для макроса $News[]$).

    Примеры файлов catalog.xml, entities.xml, catalog_items_design.xml можно найти в демо-магазине.

    Служебные атрибуты

    В дизайне вывода данных помимо полей, определенных для сущности в entities.xml разработчиком, возможно использовать служебные поля.

    • drillnumber - сквозной номер элемента или папки в пределах дерева;
    • index - порядковый номер элемента или папки в текущей папке;
    • isFirst - индикатор первой записи в выборке. Возвращает 1 если запись первая или пустую строку, если это не так;
    • isLast - индикатор последней записи в выборке. Возвращает 1 если запись последняя или пустую строку, если это не так.
    • pid - parentid, идентификатор родительской папки;
    • soul - id элемента, от которого изначально был образован "ярлык" в дереве. Существует только для ярлыков;
    • totalcount - количество товаров в данной категории, без учета постраничной разбивки (введен с версии 4.46).

    Примеры

    Пример №1
    $CatalogList[source: catalog; catalogid: maincatalog; design: catalog_itemlist; items_per_page: 10; sort: date, desc, auto]$

    Отрисует элементы из каталога с идентификатором maincatalog из файла catalog.xml, разбивая список на страницы по 10 элементов и сортируя их по полю date в нисходящем порядке.

    Пример №2
    $CatalogList[source: catalog; catalogid: maincatalog; design: catalog_itemlist; filter:id=$IN_nid$]$

    Отрисует элемент c id равным параметру nid, переданному в URL, из каталога с идентификатором maincatalog из файла catalog.xml.

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

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

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