- MODX Revo и Minishop2 — вывод на главной категорий с изображением
- Добавление изображения к категории
- Создаем дополнительное поле
- Вывод категорий Minishop2 с помощью pdoMenu
- Как сделать ссылку на категорию и подкатегориюв Modx revo?
- Вывод категорий товара тегами
- Комментарии: 20
- Как добавить страницу-подкатегорию в несколько страниц-категорий
- Комментарии (18)
- Вывод товаров в категории miniShop2
- Петропавловский Артем
MODX Revo и Minishop2 — вывод на главной категорий с изображением
WEB-студия » Полезное » MODX Revo и Minishop2 — вывод на главной категорий с изображением
Добавление изображения к категории
При разработке последнего интернет-магазина было принято решение установить его на CMS MODX Revolution. Путем перебора, для обеспечения функционала магазина было выбрано дополнение miniShop2.
В техническом задании было указано, так как магазин небольшой, надо все категории выводить на главной странице с изображением, названием категории, при клике на которые осуществлялся переход в саму категорию. Внешний вид Вы можете наблюдать на изображении.
С одной стороны, это можно было бы выполнить стандартной версткой, создать статичные блоки категорий с ссылками. Но это показалось нам слишком просто, да и вдруг ассортимент в скором времени начнет увеличиваться — будет просто некрасиво перед заказчиком.
Решили начать с добавления изображения для категории.
Создаем дополнительное поле
Стоит упомянуть, что работали мы на MODX Revolution версии 2.6.1-pl. Для возможности назначения своего изображения каждой категории, мы вводим дополнительное поле (Новый TV). Называем его cat_img, задаем ему тип «Изображение» и, конечно, выставляем доступность для шаблона нашей категории.
Теперь, при создании или редактировании категории мы имеем возможность добавлять/изменять изображение. Можно считать, что первая часть задачи выполнена. Теперь надо вывести список категорий в нужном нам месте и виде.
Для вывода списка категорий было принято решение использовать 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-разработчик, блоггер.
Источник