Вход для клиентов и партнеров
в начало сайта
Партнерская программаОнлайн демоСкачатьКарта сайта
 

Регламент
Документация
Часто задаваемые вопросы (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

    Количество выводимых на одной странице товаров. Если ключ задан, то будет автоматически отрисовываться постраничный навигатор.

    Данный ключ не работает, если в URL задан ключ iid, то есть, предполагается, что пользователь находится на странице с детальным описанием товара, где будет использоваться фильтрация по iid через ключ filter. Следует помнить, что если на такой странице выводятся другие каталоги, например, списки бестселлеров, то там также не будет отрисован pagenavigator и не будет работать items_per_page. Для того, чтобы ограничить количество выводимых записей в таких случаях, используйте ключ count.

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

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

    skipshortcuts Строковые значения "1", "true", "yes", "on" отключат в наборе выводимых данных все ярлыки. То есть, будут отрисованы только "элементы" каталога, но не ссылки на них. Используется редко, в частности при организации поиска/фильтра по каталогу, чтобы избавиться от "дублирующихся" товаров, при выводе наборов из разных категорий на одной странице (на что макрос изначально рассчитан не был).
    count Ограничивает количество выводимых записей. Если задан ключ count, то ключ items_per_page будет проигнорирован а pagenavigator не будет отрисован.

    Комментарии

    * Устройство каталогов в части навигации по ним см. в описании работы макроса CatalogTree. С точки зрения хранения данных каталоги устроены следующим образом:

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

    Хранится в 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 можно найти в демо-магазине.

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

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

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

    Перечень дополнительных атрибутов общих для всех макросов, работающих с каталогами. Также, см. описание специфичных для данного макроса ключей ниже.

    Нумерация элементов в каталоге

    Всего у нас есть следующий набор атрибутов, которые содержат нумерацию элементов: index, treeindex, drillnumber, localindex, numberid. Основных задач обычно две - сортировка на странице и вывод номера элемента на странице или для использования в скрипте.

    Если ключ sort вообще не задан, то макрос выведет элементы в том порядке, как они расположены в дереве. При этом, если в ключе categoryid заданы несколько идентификаторов папок, элементы из которых нужно вывести, то сначала будут выведены все элементы первой папки в ключе, потом все элементы второй папки в ключе и так далее.

    Если порядок папок, которые перечислены в ключе categoryid нас не устраивает, и мы хотим вывести все элементы сгруппированные по папкам точно в том порядке, как они расположены в дереве, можно воспользоваться атрибутом treeindex, где хранится номер элемента во всем дереве. Данный атрибут полностью идентичен атрибуту drilllnumber из макросов СatalogTree/CatalogFullTree, но не может быть также назван из-за проблемы обеспечения обратной совместимости. Нужно учесть, что первый номер в каталоге будет иметь корневой элемент каталога, который никогда не выводится. Поэтому если нужна визуальная нумерация товаров без пропусков значений, этот атрибут для этой цели не очень годится. Но это единственный вариант, когда нужен некоторый уникальный номер товара, в более простой форме чем 32-х разрядный шестнадцатиричный id товара, который будет привязан к порядку элементов в дереве.

    Атрибут numberid берется из таблицы, где хранятся описания элементов. Со всеми вытекающими. Такой номер может быть с пропусками значений, он может быть далек от номера 1 (если таблица часто обнулялась), сортировать по нему можно только если нужно вывести элементы в порядке записи в базу. И то гарантии нет. Обычно его применяют если опять же нужен какой-то простой числовой идентификатор товара, т.к. единственное что может гарантировать система - его уникальность в пределах одной таблицы.

    Атрибут drillnumber в этом макросе используется идентично макросу News. Поэтому, он содержит номер выводимого элемента на данной странице от 1 до N, назначенный элементу уже после фильтрации и постраничной разбивки. То есть, сортировать по нему нельзя, поскольку данный атрибут виртуальный и создается уже после того, как сортировка завершена. Обычно этот атрибут нужен только для целей многоколоночной верстки.

    Атрибут index работает точно так же, как и для других макросов каталога (CatalogTree/CatalogFullTree). Это номер элемента на текущем уровне. Иногда нужен для отображения, или для разных скриптовых вещей на стороне клиента.

    Есть еще атрибут localindex. Он содержит порядковый номер элемента во всей выборке от 1 до M, до разбивки по страницам. Использовать его для постраничной разбивки нельзя, т.к. при переходе от страницы к странице будет сложно контролировать номер первого элемента на странице. Но он как раз используется для сортировки, когда ключ sort пустой (см. выше), а также, его можно использовать для нумерации товаров в данной категории, или совокупности категорий и тому подобных целей.

    ---------------------

    См. также описание работы макроса CatalogTree , которым реализуется навигация по каталогу.

    Примеры

    Пример №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=]$

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

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

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

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

    Реклама: