Как вывести категории modx

MODX Revo и Minishop2 — вывод на главной категорий с изображением

WEB-студия » Полезное » MODX Revo и Minishop2 — вывод на главной категорий с изображением

Добавление изображения к категории

При разработке последнего интернет-магазина было принято решение установить его на CMS MODX Revolution. Путем перебора, для обеспечения функционала магазина было выбрано дополнение miniShop2.

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

С одной стороны, это можно было бы выполнить стандартной версткой, создать статичные блоки категорий с ссылками. Но это показалось нам слишком просто, да и вдруг ассортимент в скором времени начнет увеличиваться — будет просто некрасиво перед заказчиком.

Решили начать с добавления изображения для категории.

Создаем дополнительное поле

Стоит упомянуть, что работали мы на MODX Revolution версии 2.6.1-pl. Для возможности назначения своего изображения каждой категории, мы вводим дополнительное поле (Новый TV). Называем его cat_img, задаем ему тип «Изображение» и, конечно, выставляем доступность для шаблона нашей категории.

Теперь, при создании или редактировании категории мы имеем возможность добавлять/изменять изображение. Можно считать, что первая часть задачи выполнена. Теперь надо вывести список категорий в нужном нам месте и виде.

Читайте также:  Как вывести chia chpool

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

Вывод категорий Minishop2 с помощью pdoMenu

Разберемся со структурой сайта. Все категории могут лежать в разделе, например, Каталог или не связаны между собой общим ресурсом. В первом случае ссылка будет выглядеть site.ru/katalog/название_категории, а во втором просто site.ru/название_категории. В нашем случае, объединяющего раздела не было, потому вывод через pdoMenu выглядел так:

Что мы тут видим?

  • &parents=`0` — родительский ID. Если мы оставляем параметр 0, то выводится все. Если у Вас категории товаров вложены в ресурс Каталог, Продукция и т.п., иными словами, имеют родительский элемент, то надо подставить ID родителя в данный параметр.
  • &level — уровень вложенности меню. Если указать «2», то будут выводиться и товары в виде подменю. В нашем случае, это не требовалось.
  • &includeTVs — наше дополнительное поле с изображением категории, в значение параметра пишем название дополнительного поля.
  • &tplOuter — контейнер, в который будет обернуто наше меню. Обычно используется ul, но в нашем случае это section. Все зависит от структуры Вашего сайта. Как видите, у секции задан — это для привязки стилей.
  • &tpl — «обертка» для каждого элемента меню. Здесь Вы уже видите, что мы подключаем нашу верстку для блоков категорий, чтобы они имели именно тот внешний вид, который нам нужен. В шаблоне есть параметры:
    • [[+link]] — ссылка на категорию
    • [[+cat_img]] — наше дополнительное поле, путь к картинке категории.
    • <$pagetitle>— заголовок категории
    • [[+menutitle]] — заголовок пункта меню, если не меняли настройки, то будет таким же, как и заголовок категории.
  • &firstClass, &lastClass, &hereClass с пустыми значениями — убираем привязку классов для первого элемента меню, последнего и текущего — нам в верстке это не требовалось.
  • &resources — в pdoMenu можно добавить дополнительные страницы, для этого в параметр пишем ID страниц. Если написать ID со знаком минус, то из списка эта страница уходит. В нашем случае, мы избавлялись от отображения главной страницы в нашем списке.

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

Источник

Как сделать ссылку на категорию и подкатегориюв Modx revo?

Доброго времени суток.
Подскажите пожалуйста, как правильно получить ссылку на категорию и подкатегорию, в которой содержится ресурс?

На данный момент ресурсы выводятся с помощью кода:

[[*id]]]] неправильно себя ведет при переходе из категории в подкатегорию.

  • Вопрос задан более двух лет назад
  • 273 просмотра

[[+id]]]] — на категорию (текущий документ)
[[

[[+parent]]]] — на родительский документ

Благодарю, но не работает такая конструкция.
Попробую иначе объяснить:

Категория 1
—Подкатегория 1
—-Материал 1
—-Материал 2
—Подкатегория 2
—-Материал 1
—-Материал 2

Есть на сайте такая конструкция. В категории 1 отображаются материалы со всех подкатегорий. В подкатегории отображаются материалы, принадлежащие своей подкатегории.
Сами материалы не имеют своей страницы. То есть на странице категории и подкатегории идут тупо посты с контентом из материала. Вот как раз хочу, чтобы с материалом выводились две ссылки: на категорию и подкатегорию. и тайтлы категории и подкатегории.

[[+parent]]]] — ссылка на подкатегорию (то есть на родителя).
[[

[[#[[+parent]].parent]]]] — ссылка на категорию (то есть на прародителя)
[[#[[+parent]].pagetitle]] — название подкатегории (родителя)
[[#[[#[[+parent]].parent]].pagetitle]] — название категории (прародителя)

Источник

Вывод категорий товара тегами

Комментарии: 20

Это, скорее, аналог хлебных крошек, а не вывод всех категорий товара. Причем, этот аналог работает только для мультикатегорий, обычные категории он не покажет.

В общем, проясни, пожалуйста, зачем это нужно, в каких ситуация. Тогда немного поправим код и положим в готовые решения.

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

Теперь понял. Из-за разделителя «/» решил, что сниппет должен показывать уровень вложения товара в категориях.

Тогда предлагаю вот такой код:

Выбирает все категории за один запрос и самостоятельно генерирует ссылки согласно настроек сайта. Работать будет немного быстрее.

Точно, потерялось где-то.

Ребята, что я делаю не так?

Создал сниппет, скопировал туда этот код.

Вызываю его [[$название_сниппета]] в чанке, чанк в шаблоне.

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

Просто есть каталог одежды, и есть специальные коллекции. Каждый товар помимо категории, также привязывается к определенной коллекции.

Задача следующая — нужно в карточке товара сперва отобразить ссылку на категорию товара, т.е. вывести ссылку на родителя, и отдельной ссылкой вывести коллекцию, т.е. на альтернативную категорию.

Источник

Как добавить страницу-подкатегорию в несколько страниц-категорий

Помогите решить вопрос:
На сайте следующая структура: главная — категория — подкатегория — страница
Хочу создать страницу, которая будет является «категорией», содержащей несколько «подкатегорий», которые входят в другие категории. И если эта подкатегория находится во второй категории, то должна иметь другой заголовок.

Пример:
Есть
— главная — категория-1 — подкатегория-1-1 (с именем «подкатегория-1-1) — страница
— главная — категория-1 — подкатегория-1-2 — страница
— главная — категория-2 — подкатегория-2-1 — страница
— главная — категория-2 — подкатегория-2-2 — страница
— главная — категория-3 — подкатегория-3-1 — страница
Необходимо создать категорию-4, которая должна содержать подкатегорию-1-1 (но, с именем подкатегория-00011), подкатегорию-2-2 (но, с именем подкатегория-00022), подкатегорию-3-1 (но, с именем подкатегория-00031).

Догадки:
Есть предположение, что надо создать TV-1, необязательное к заполнению, в котором будем задавать новое имя. Потом TV-2, на основании которого getResources вывести нужные подкатегории.

Помогите с TV-2 и getResources (или возможно, чем-то другим) для решения задачи.

Комментарии (18)

В принципе, Вы на верном пути. Можно и так.
1. Поставьте pdoTools и используйте вместо getResources pdoResources из него (он и работает быстрее и возможностей больше).
2. Сделайте TV category с типом ввода «Чекбокс» или «Список ( множественный выбор)».
3. В возможных значениях сделайте так:

4. В вызове pdoResources проверяйте так:

А подскажите пожалуйста, можно ли вывод tv сделать сразу обернутым в ссылку категории? Я использую такую конструкцию:

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

Я правильно понимаю, что Вы хотите на странице товара вывести ссылки на категории, к которым он относится?
Если так, то в TV оставьте первый вариант (с #[[+id]]#):

Сделайте простенький сниппет-модификатор «categories»:

И на странице товара выводите:

Давайте попробуем разобраться ))
У Вас есть TV category, у которого в параметрах ввода так:

Эта конструкция выводит массив ресурсов с шаблонами 2 и 3 из родителя с ID 7 в виде чекбоксов.
Если на странице новости отметить несколько категорий и прописать [[*category]], то выведется что-то вроде:

Числа в данном случае — это ID отмеченных категорий. Правильно?
Вам нужно вывести не последовательность ID, а ссылки на эти категории. Для этого нужно преобразовать эту строку в такой вид:

и указать данную строку в качестве параметра &resources какому-нибудь сниппету типа pdoResources. А уже как оформить этот вывод — дело техники.
Для этого преобразования служит сниппет categories:

Этому сниппету нужно просто передать строку #12##24##54# и он её переделает в 12,24,54.
Исходную строку передаем в переменной input и можем использовать сниппет как в стандартном виде:

так и в виде модификатора для TV (что удобнее):

Дальше просто указываем эту конструкцию в качестве параметра &resources у того же pdoResources, чтобы он вывел только ресурсы с указанными ID. Так будет на странице новости:

А так можно использовать в чанке-шаблоне вывода новостей:

Чанк category-item такой:

Естественно, в вызове новостей нужно прописать параметр:

И проверить, не стоит ли это:

Если так, то, естественно, вызывать нужно без префикса tv.:

Создал сниппет.
Дальше не догоняю.
Если в чанке новости написать
,
выводит название и соответственно урл дочек отмеченных категорий вместо родителей.
Если [[+tv.category:categories]], то id родителей
Такая конструкция выводит название и урл новости

Обратите внимание — я в чанке новости в &tpl сделал не @INLINE . а прописал чанк category-item.
Это важно, поскольку, если Вы ставите

то в качестве [[+uri]] и [[+pagetitle]] у Вас подставятся поля не категорий, а самих новостей.

То есть, нужно сделать чанк category-item:

Источник

Вывод товаров в категории miniShop2

Настало время вывести наши товары в категории. Для этого наполним наш магазин еще несколькими товарами и создадим еще одну категорию. Например, я добавил следующие товары: Samsung Galaxy S4, LG K10 – этих пока достаточно. Следующее, что нам нужно сделать – это создать дополнительную категорию товаров для тестов. Например, пусть это будет “Аудио-Плееры”. В последнюю категорию нам нужно добавить хотя бы парочку товаров.

Добавили? Теперь можно двигаться дальше. Перейдем на страницу категории и посмотрим какие чанки нам предстоит сделать:

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

Итак, первый чанк – gridProductTpl — у меня получился следующий:

Если вывести товары на странице категории, с помощью pdoPage и msProduct, прописав вызов pdoTools в шаблоне категории:

Мы увидим, что у нас снова слетели стили. Я их поправил и в конце следующей статьи я приведу код CSS, который я прописал для нашего интернет-магазина. Итак, мы вывели продукты сеткой. Осталось вывести линейно. Чанк listProductTpl у меня получился следующий:

И выводим в шаблоне категории аналогично первому способу:

И у нас готов вывод наших товаров в категории. Отлично!

На этом урок наш закончен. В следующем уроке мы с вами реализуем фильтры в нашем интернет-магазине с помощью mSearch2.

Петропавловский Артем

автор

Основатель Dart Agency, web-разработчик, блоггер.

Источник

Оцените статью