UMI.CMS. Как сделать вывод всех товаров из разделов каталога

Как сделать вывод всех товаров из разделов каталога UMI.CMS

Недавно занимаясь интеграцией html шаблона в UMI.CMS столкнулся с проблемой вывода товара их вложенных разделов каталога.

Что именно я имею ввиду.

Допустим у вас есть разветвленный каталог товаров и у него следующая иерархия:

  • Категория 1
    • Категория 1.1
      • Категория 1.1.1
        • Категория 1.1.1.1
      • Категория 1.1.2
      • Категория 1.1.3
    • Категория 1.2
      • Категория 1.2.1
      • Категория 1.2.2
      • Категория 1.2.2
      • Категория 1.2.2
    • Категория 1.3
  • Категория 2
  • Категория 3

Как вы понимаете я сейчас говорю про модуль Каталог, доступный в версиях UMI.CMS Shop и UMI.CMS Сommerce, отошел от темы...

У категорий и подкатегори в свою очередь имеются товары, и возникает пролемы с выводом товаров вложенных категорий. Так как же вывести все товары из влеженных категорий?

Давайте пойдем по правильному пути и сделаем все что нужно.
Что же нужно?

  1. Создать список категорий, их будет 2 основных и 3 вложенных, и можно 2 вложенные во вложенные
  2. Создать шаблон, отвечающий за вывод информации из всех категорий
  3. Привязать нужный шаблон к категориям
  4. Воспользоваться нужным макросом и вывести все товары из вложенных подкатегрий.

Сразу хочу отметить, что работать я, к сожалению, только с tpl шаблонизитором и буду приводить примеры на стандартной класической UMI.CMS с хомячками 😉

Итак поехали...

 

Создание списка категорий.

Создавать много категорий не нужно, и обойдемся 2-3 категориями и 2-3 подкатегориями и еще подподкатегориями


Теперь нужно в категориях создать товары, создавать много не нужно, 2-3 будет достаточно, чтобы просто было видно, что все работает.

Создание шаблона для вывода списка товаров.

После того, как все товары созданы, нужно зарезервировать в системе шаблон, по которому будет осуществляются вывод объектов из нужной нам категории.

Для того, чтобы создать шаблон в UMI.CMS нужно перейти в модуль “Структура”. Для этого нажимает “Модули” -> “Структура”

Далее нужно перейти в настройки модуля и добавляем новый шаблон

В шаблонах присваиваете название шаблона, имя файла(это и есть шаблон отображения) и нажимаете кнопку “Сохранить”.

Далее нужно нажать на кнопку “Изменить” только что созданного шаблона и присвоить имя глобального шаблона UMI.CMS (1), а также привязать шаблон к созданным ранее страницам(2) и нажать сохранить(3)

Вывод товара из всех категорий и подкатегорий каталога UMI.CMS.

После того, как вся подготовка сделана — добавлены категории, товары и к категориям привязан шаблон можно выводить.

Перейдите на сайт попробуйте зайти в категорию “Каталог товаров”, по идее вы должны получить вот такую ошибку:

Она означает, что на сервере нет файла, который отвечает за вывод. Нужно это исправить.

1. Нужно перейти в директорию \templates\demoold\tpls\content\ и создать в ней файл с названием catalog-all-products.tpl.

Для того, чтобы не выбиваться из общей стилистики сайта, с просто скопирую файл inner.tpl и переименую его в catalog-all-products.tpl. Если вы сделали тоже самое, вам нужно удалить макрос %content%.

Теперь нужно добавить в файл макрос %catalog getObjectsList ()%. Данный макрос выводит список объектов указанного каталога.

Теперь разберемся немного с самим макросом.

Сам макрос принимает следующие параметры(с данными параметрами более подробно вы можете ознакомится в офф. документации):

catalog getObjectsList ( [template = 'default', category_id = false, limit = false, ignore_paging = false, i_need_deep = 0, field_id = false, asc = true]).

Сейчас нужно обратить свое внимание на следующие параметры:

  • template — указывает по какому шаблону нужно выводить объекты каталога
  • category_id — указывает категорию, из которой следует выводить объекты
  • i_need_deep — глубина поиска объектов во вложенных подразделах (основной момент, на который часто не обращают внимание).


Вроде ничего не упущено, можно сделать вывод объектов каталога на страницу.

В файл catalog-all-products.tpl (ваше имя файла может быть другое), и нужно добавить строчку следующего вида

%catalog getObjectsList ('catalog-items', '%id%', '20', '0', '20')%

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

Теперь если все сделано правильно при запросе той страницы, на которой вы получили ошибку, все будет хорошо (правда там не будет видно объектов) и еще одна ошибка =)

Нужно поправить это...

2. Нужно перейти в директорию \templates\demoold\tpls\catalog и переименовать файл(или скопировать и переименовать)  default.tpl в catalog-items.tpl (название, которое указано в макросе getObjectsList).

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

На этом все.

 

Сразу хочу сказать, что при написании данной статьи использовалась UMI.CMS версии 2.8.6.

 

В качестве шаблона был использован готовы шаблон от UMI.CMS demoold. Если ваша версия UMI.CMS ниже чем моя, то у вас могут быть проблемы с путями хранения файлов, нужно в пути к файлам убрать \templates\demoold\.