В интернет-магазине JoomShopping мы делаем свой шаблон, копируя штатный - components/com_jshopping/templates/default. Переименовываем папку с шаблоном из default во что-то своё, то же самое с components/com_jshopping/css/default.css (либо не используем вообще). И можно без проблем дальше пилить под свои нужды.

 В настройках можно включить "Использовать разные шаблоны для отдельных категорий и товаров". Тогда для категории и для карточки товара можно будет указывать эти шаблоны в настройках. Какие-то товары у нас просто товары, а какие-то - фильдипёрсовые и для них отдельный дизайн.

Карточка товара

Тут всё просто: идём в components/com_jshopping/templates/ВАШ_ШАБЛОН/product и переименовываем product_default.php в product_ВАШЕНАЗВАНИЕ.php. Именно так, только с одним нижним подчёркиванием. product_default.php подключает с помощью include() все остальные файлы из этой папки. Их мы так же можем уникализировать путём копирования. А в product_ВАШЕНАЗВАНИЕ.php подправить подключение.

Шаблон категории товаров

Тут с виду тоже всё просто. Идём в components/com_jshopping/templates/ВАШ_ШАБЛОН/category. Видим там 3 файла:

  • maincategory.php - это макет главной категории. У него есть список категорий и описание текстом.
  • category_default.php - это те самые шаблоны, которые мы можем выбрать в настройках категории в админке. Принцип такой же как и с товаром. Здесь уже подключается отображение товаров с помощью файла product.php.
  • products.php - в нём содержится базовая разметка для отображения стандартного фильтра (количество, убывание/возрастание и т.д.), сообщения "нет товаров" и пагинации внизу.

А вот запчасти для списка товаров находятся уже в папке list_products. Так как эти же запчасти используются для списка товаров производителя, вендора и т.д. 

<?php
include(__DIR__ . "/../" . $this->template_block_list_product);

Эта конструкция как раз и содержит путь для подключения файла components/com_jshopping/templates/ВАШ_ШАБЛОН/list_products/list_products.php, в котором в свою очередь циклом выводится содержимое файла components/com_jshopping/templates/ВАШ_ШАБЛОН/list_products/product.php. Этот последний product.php и есть товар в списке товаров.

Что делать, если нам нужны разные макеты и здесь?.. В зависимости от выбранного макета категории?

Правильно. Мы должны всё продублировать. Например, мой макет категории будет называться category_premade.php.
В файле components/com_jshopping/templates/ВАШ_ШАБЛОН/category/category_premade.php я подключаю components/com_jshopping/templates/ВАШ_ШАБЛОН/category/products_premade.php. В нём мы подменяем путь на свой:

<?php
// Отдельный макет для готовой продукции
$this->template_block_list_product = 'list_products/list_productspremade.php';
include(__DIR__ . "/../" . $this->template_block_list_product);

и теперь подключается файл components/com_jshopping/templates/ВАШ_ШАБЛОН/list_products/list_productspremade.php.
В нём в цикле подключается файл product.php из той же папки. Путь к нему запрятан в:

<?php
include(__DIR__ . "/" . $product->template_block_product);

Поэтому мы и тут подменяем путь и пишем своё:

<?php
foreach ($this->rows as $k => $product)
{
     $product->template_block_product = 'product_premade.php';
     include(__DIR__ . "/" . $product->template_block_product);
}

А уже в своей копии product.php - product_premade.php - мы делаем всё, что хотим.

В моём случае мне нужно было выводить разные названия кнопок в зависимости от типа продукции: "создать дизайн" для основных категорий. И обычное "купить" и "в корзину" для категорий с готовой продукцией.

Толкачев Сергей Юрьевич
Толкачев Сергей Юрьевич

Joomla-разработчик. Контрибьютер ядра Joomla. Один из ведущих Telegram-канала русскоязычного Joomla-сообщества JoomlaFeed, один из модераторов чата русскоязычного Joomla-сообщества. Мои расширения в официальном маркетплейсе расширений Joomla - Joomla Extensions Directory. Имею публикации в официальном журнале международного Joomla-сообщества - Joomla Community Magazine.

Муж. Отец 3 детей.

Россия, Саратов.

Расширения Joomla WebTolk

90 Всего расширений
11 Категорий
399 Выпущено версий
387363 Всего скачиваний
Корзина
Корзина пуста