Модуль пользовательских шаблонов страницы товара в зависимости от категории для ocStore / OpenCart

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

Опубликовано в: Дополнения и утилиты

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

 

Утилита кастомизации шаблонов категорий + JSON-LD + Цена для ocStore / OpenCart

 

Модуль для своих пользовательских шаблонов страниц товаров для разных категорий

 

Общая информация

 

Custom Category Template + JSON-LD + Price — это бесплатный модуль на основе OCMOD для ocStore/OpenCart, который улучшает страницы товаров за счёт:

  1. Назначения кастомных шаблонов для товаров в зависимости от их категории.
  2. Добавления JSON-LD микроразметки для улучшения SEO.
  3. Включения информации о цене и валюте для структурированных данных.
  4. Отображения статуса отсутствия товара на складе.

Модуль модифицирует контроллер страницы товара ( catalog/controller/product/product.php), чтобы динамически выбирать шаблоны для определённых категорий товаров и добавлять JSON-LD структурированные данные для поисковой оптимизации. Модуль протестирован с ocStore 3.0.3.7 + PHP 7.3, но может работать с другими версиями OpenCart 3.x (тестируйте на копии сайта).

 

Введение для новичков

 

Модуль Custom Category Template + JSON-LD + Price настраивает отображение страниц товаров в интернет-магазине на ocStore/OpenCart. Он позволяет использовать разные шаблоны для товаров в определённых категориях (например, уникальный шаблон для «Генераторов») и добавляет структурированные данные (JSON-LD) для улучшения восприятия страниц поисковыми системами, такими как Google. Также модуль включает информацию о цене и наличии товаров для улучшения SEO и пользовательского опыта.

Зачем это нужно?

  • Кастомные шаблоны: Товары в разных категориях (например, генераторы, электровелосипеды или электросамокаты) могут требовать уникального дизайна или макета. Этот модуль позволяет назначить определённые шаблоны для товаров в зависимости от их категории.
  • Улучшение SEO: JSON-LD микроразметка помогает поисковым системам отображать расширенные сниппеты (например, название товара, цена и наличие) в результатах поиска, повышая видимость.
  • Цена и наличие: Добавляет цену (включая акционные цены) и статус наличия для отображения или использования в шаблонах.

Важно для новичков: Всегда создавайте резервную копию сайта (файлы и база данных) перед установкой модуля. Используйте FileZilla для файлов и phpMyAdmin для базы данных, чтобы можно было восстановить сайт в случае проблем.

 

Почему это важно

 

  • Улучшенный пользовательский опыт: Кастомные шаблоны позволяют адаптировать дизайн под разные типы товаров, улучшая взаимодействие клиентов с магазином.
  • Преимущества для SEO: JSON-LD микроразметка может улучшить позиции в поисковой выдаче и повысить кликабельность за счёт структурированной информации о товарах.
  • Гибкость: Модуль легко расширяем для дополнительных категорий или шаблонов без значительных изменений кода.

 

Основные возможности

 

  • Динамическое назначение кастомных шаблонов для товаров в зависимости от ID категории.
  • Добавление JSON-LD микроразметки для названия товара, описания, цены и валюты.
  • Обработка акционных цен (скидок) с возвратом к обычной цене, если акционная отсутствует.
  • Индикация статуса отсутствия товара на складе (количество ≤ 0).
  • Обработка описаний товаров: удаление HTML-тегов и замена <br> на пробелы для чистого вывода в JSON-LD.
  • Использование OCMOD для бесшовной интеграции без переписывания основных файлов.
  • Поддержка кодировки UTF-8 для многоязычных магазинов.
  • Лёгкий и целенаправленный модуль, изменяющий только контроллер страницы товара.

 

Структура файлов модуля

 

Модуль представляет собой OCMOD XML-файл, который изменяет файл catalog/controller/product/product.php. Дополнительных файлов модуль не включает, но он ссылается на кастомные шаблоны, которые должны существовать в директории catalog/view/theme/your_theme/template/product/.

 

catalog/
├── controller/
│ └── product/
│ └── product.php # Модифицируется OCMOD для добавления логики шаблонов и JSON-LD
├── view/
│ └── theme/
│ └── your_theme/
│ └── template/
│ └── product/
│ ├── product.twig # Шаблон по умолчанию
│ └── product_generator.twig # Пример кастомного шаблона для категории ID 468

 

Требования

 

Убедитесь, что ваш магазин соответствует этим требованиям:

  • ocStore/OpenCart: Версия 3.0.3.7 (другие версии OpenCart 3.x могут работать, но тестируйте на копии сайта).
  • PHP: Версия 7.3. Проверьте в админ-панели: «Система» → «Информация о сервере» → найдите «PHP Version».
  • Доступ к файлам: Требуется FTP (через FileZilla) или доступ через панель хостинга (cPanel, DirectAdmin и т.д.) для загрузки OCMOD-файла и кастомных шаблонов.
  • Кастомные шаблоны: Файлы кастомных шаблонов (например, product_generator.twig) должны существовать в директории шаблонов вашей темы.
  • База данных: MySQL или MariaDB, доступ через phpMyAdmin для резервного копирования.
  • Тема: Магазин должен использовать тему, поддерживающую шаблоны Twig.

Как узнать версию PHP?

  1. Войдите в админ-панель.
  2. Перейдите в «Система» → «Информация о сервере».
  3. Найдите строку «PHP Version». Если версия не 7.3, обратитесь к хостинг-провайдеру для обновления.

 

Подробная инструкция по установке

 

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

 

1. Скачивание модуля

 

  • Перейдите на страницу проекта на GitHub: https://github.com/webitproff/oc-custom_category_template_jsonld_price .
  • Нажмите «Code» → «Download ZIP» и распакуйте архив или скачайте OCMOD XML-файл напрямую.
  • Для продвинутых пользователей: клонируйте репозиторий: git clone https://github.com/webitproff/oc-custom_category_template_jsonld_price.git.

 

2. Подготовка кастомных шаблонов

 

  • Убедитесь, что кастомные шаблоны (например, product_generator.twig) существуют в директории вашей темы: catalog/view/theme/your_theme/template/product/.
  • Пример: Для категории ID 468 создайте product_generator.twig, основанный на стандартном шаблоне product.twig, и настройте его по вашим требованиям.
  • Если кастомные шаблоны отсутствуют, модуль вернётся к стандартному шаблону product/product.twig или выдаст ошибку. Поэтому следует сразу клонировать ваш шублон страницы карточки товара product.twig и переименовать его по примеру product_cat_name.twig, затем устанавливаем модуль

 

3. Загрузка OCMOD-файла

 

  • Войдите в админ-панель ocStore/OpenCart.
  • Перейдите в Расширения → Установщик расширений.
  • Нажмите Загрузить и выберите OCMOD XML-файл (например, custom_category_template_jsonld_price.ocmod.xml).
  • Дождитесь успешного завершения загрузки.

 

4. Установка модуля

 

  • Перейдите в Расширения → Модификаторы.
  • Найдите в списке «Custom Category Template + JSON-LD + Price».
  • Нажмите кнопку Обновить (иконка с круговыми стрелками), чтобы применить изменения OCMOD.
  • Убедитесь, что модификатор включен (зелёная галочка).

 

5. Очистка кэша

 

  • Перейдите в Система → Инструменты → Менеджер кэша (или аналогичный раздел в вашей админ-панели).
  • Очистите кэш системы и кэш шаблонов, чтобы изменения вступили в силу.

 

6. Проверка установки

 

  • Откройте страницу товара, принадлежащего категории с кастомным шаблоном (например, категория ID 468).
  • Проверьте исходный код страницы (ПКМ → «Просмотреть код страницы»), чтобы найти JSON-LD микроразметку в теге <script type="application/ld+json">.
  • Убедитесь, что загружается правильный шаблон (например, product_generator.twig для категории ID 468).

 

Использование модуля

 

 

1. Назначение кастомных шаблонов

 

  • Модуль получает категории товара с помощью $this->model_catalog_product->getCategories($product_id).
  • Использует предопределенный массив для сопоставления ID категорий с кастомными шаблонами:

    это пример 

     

    // ключ это ID вашей категории товаров и соответственно ему значение как имя вашего реального шаблона карточки товара
    $custom_templates = [
     468 => 'product/product_generator',
     455 => 'product/product_ebike',
     785 => 'product/product_escooter'
    ];
    • Если товар принадлежит категории, указанной в $custom_templates, модуль использует соответствующий шаблон (например, product/product_generator для категории ID 468). В противном случае используется стандартный шаблон product/product.
    • Чтобы добавить дополнительные шаблоны, отредактируйте массив $custom_templates в OCMOD XML-файле, раскомментировав или добавив новые записи для других ID категорий и их шаблонов.

 

2. JSON-LD микроразметка

 

  • Модуль добавляет следующие данные на страницу товара для JSON-LD:
    • Название товара: $data['oct_micro_heading_title'] и его JSON-кодированная версия $data['oct_micro_heading_title_json'].
    • Описание: $data['oct_description_microdata'] (декодированное HTML) и $data['oct_description_microdata_json'] (без HTML-тегов, с заменой <br> на пробелы).
    • Цена: $data['oct_price_microdata'] (использует акционную цену, если она есть, иначе обычную, приведённую к типу float).
    • Валюта: $data['oct_price_currency'] (по умолчанию 'UAH', если валюта не установлена в сессии).
    • Статус наличия: $data['out_of_stock'] (true, если количество товара ≤ 0).
  • Эти переменные доступны в вашем Twig-шаблоне для отображения JSON-LD структурированных данных.

 

3. Настройка шаблонов

 

  • В кастомном шаблоне (например, product_generator.twig) вы можете использовать новые переменные:
    • {{ oct_micro_heading_title }}: Название товара.
    • {{ oct_description_microdata }}: Полное описание (с HTML).
    • {{ oct_micro_heading_title_json }}: JSON-кодированное название.
    • {{ oct_description_microdata_json }}: JSON-кодированное описание (без HTML-тегов).
    • {{ oct_price_microdata }}: Цена товара (float).
    • {{ oct_price_currency }}: Код валюты (например, 'UAH').
    • {{ out_of_stock }}: Булево значение, указывающее, отсутствует ли товар на складе.
  • Пример JSON-LD в шаблоне:

     

    <script type="application/ld+json">
    {
        "@context": "https://schema.org",
        "@type": "Product",
        "name": {{ oct_micro_heading_title_json|raw }},
        "description": {{ oct_description_microdata_json|raw }},
        "offers": {
            "@type": "Offer",
            "price": {{ oct_price_microdata }},
            "priceCurrency": "{{ oct_price_currency }}",
            "availability": "{{ out_of_stock ? 'https://schema.org/OutOfStock' : 'https://schema.org/InStock' }}"
        }
    }
    </script>

 

4. Рекомендация по резервному копированию

 

  • Перед внесением изменений или тестированием создайте резервную копию файлов сайта (через FileZilla) и базы данных (через phpMyAdmin).
  • Тестируйте кастомные шаблоны на тестовом сайте, чтобы не нарушить работу основного магазина.

 

Принцип работы модуля

 

  • Выбор шаблона:
    • Получает категории товара с помощью $this->model_catalog_product->getCategories($product_id).
    • Проверяет, соответствует ли ID категории массиву $custom_templates.
    • Устанавливает переменную $template с путём к соответствующему шаблону или использует по умолчанию product/product.
  • JSON-LD данные:
    • Извлекает название и описание товара из $product_info.
    • Очищает описание, заменяя <br> и <br /> на пробелы с помощью preg_replace.
    • Кодирует название и описание в JSON с использованием JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES для корректной обработки UTF-8 и URL.
    • Определяет цену (акционную или обычную) и приводит её к типу float для удаления лишних нулей.
    • Получает валюту из сессии, по умолчанию 'UAH'.
    • Устанавливает статус отсутствия на складе на основе количества товара.
  • Вывод:
    • Заменяет строку рендеринга шаблона по умолчанию ( $this->response->setOutput($this->load->view('product/product', $data))) на динамическую переменную $template.

 

Технические детали

 

  • Версия: 1.5
  • Совместимость: ocStore 3.0.3.7, OpenCart 3.x (тестируйте на других версиях).
  • PHP: 7.3 или выше.
  • OCMOD: Модифицирует catalog/controller/product/product.php с помощью двух операций:
    1. Добавляет логику перед строкой вывода для установки шаблона и подготовки JSON-LD данных.
    2. Заменяет путь к шаблону по умолчанию на динамическую переменную $template.
  • Безопасность: Использует стандартные методы сессий и моделей OpenCart, без дополнительных уязвимостей.
  • Кодировка: Поддерживает UTF-8 для многоязычных магазинов.
  • Зависимости: Требуется модель catalog/model/catalog/product.php для получения категорий и наличие кастомных шаблонов.

 

Ограничения

 

  • Кастомные шаблоны должны создаваться вручную и размещаться в директории шаблонов темы.
  • Поддерживает только категории, указанные в массиве $custom_templates (например, ID 468 для product_generator).
  • Не учитывает кастомные модули или нестандартные поля данных товаров.
  • Для эффективного использования JSON-LD требуется правильная интеграция в Twig-шаблон.
  • Нет автоматического возврата к запасному шаблону, если кастомный шаблон отсутствует (убедитесь, что он существует).

Структура кода

 

OCMOD XML: custom_category_template_jsonld_price.ocmod.xml

 

  • Изменяемый файл: catalog/controller/product/product.php
  • Операции:
    1. Перед выводом:
      • Добавляет логику для проверки категорий товара и назначения кастомного шаблона.
      • Подготавливает JSON-LD данные (название, описание, цена, валюта, статус наличия).
      • Пример добавленного кода:

         

        $template = 'product/product';
        if (isset($product_info)) {
            $categories = $this->model_catalog_product->getCategories($this->request->get['product_id']);
            $custom_templates = [
                468 => 'product/product_generator',
                // 455 => 'product/product_ebike',
                // 785 => 'product/product_escooter'
            ];
            if ($categories) {
                foreach ($categories as $category) {
                    if (isset($custom_templates[$category['category_id']])) {
                        $template = $custom_templates[$category['category_id']];
                        break;
                    }
                }
            }
            // JSON-LD fields
            $data['oct_micro_heading_title'] = $product_info['name'];
            $data['oct_description_microdata'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');
            $clean_description = preg_replace('#<br\s*/?>#i', ' ', $data['oct_description_microdata']);
            $data['oct_micro_heading_title_json'] = json_encode($data['oct_micro_heading_title'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
            $data['oct_description_microdata_json'] = json_encode(strip_tags($clean_description), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
            $data['text_buy_description'] = sprintf(
                $this->language->get('text_buy_description'),
                $product_info['name'],
                $product_info['name']
            );
            $price = $product_info['special'] ?: $product_info['price'];
            $data['oct_price_microdata'] = (float) $price;
            $data['oct_price_currency'] = $this->session->data['currency'] ?? 'UAH';
            $data['out_of_stock'] = ($product_info['quantity'] <= 0);
        }

Замена вывода:

  • Заменяет $this->response->setOutput($this->load->view('product/product', $data)) на:

    $this->response->setOutput($this->load->view($template, $data));
  •  
    1.  
      • Использует динамическую переменную $template для загрузки нужного шаблона.

 

Требования

 

  • ocStore/OpenCart 3.0.3.7 (или совместимая версия OpenCart 3.x).
  • PHP 7.3 и выше.
  • Кастомные шаблоны в директории catalog/view/theme/your_theme/template/product/.
  • Включённая система OCMOD в админ-панели.

 

Автор

 

 

Лицензия

 

BSD License

 

Поддержка и вклад

 

  • Создавайте issue: GitHub Issues
  • Pull request приветствуются.

 



Рейтинг на основе отзывов:
Звезд получено: 0
Oтзывов всего: 0
Средняя оценка: 0
8 минут чтения
Владелец: Carbonate Sodium

Отзывы к товарам

Отзывов пока нет


Добавить в корзину

К этому товару прикреплен файл для загрузки.

oc-custom_category_template_jsonld_price-main.zip

Количество скачиваний файла 1

 

Доступность
Бесплатно
Назначение или категория
Меню, дизайн и внешний вид
Версия OpenCart
3.0.x.x

Автор контента

webitproff

Онлайн

webitproff

Последняя авторизация: 19.07.2026 01:57

  • Чем могу помочь?

    Оказываю весь спектр услуг по CMF Cotonti. Разработка открытых и закрытых корпоративных интернет порталов, небольших социальных сетей, торговые площадки, маркетплейсы, биржи фриланса, каталоги товаров оптовых поставщиков, интернет-магазин под заказ, чтобы делать совместные покупки и групповые совместные продажи от имени нескольких продавцов.

  • Разработки на GitHub бесплатно
    • 04.12.2025 16:59
    • 14.01.2026 01:12

    Витрина Market PRO

    CMS, Скрипт и Движок - веб сайта онлайн-витрины, интернет магазина инфопродуктов и цифровых товаров. Разные цены в разных валютах на товар. Онлайн-оплата в криптовалюте за товары и услуги.