Модуль пользовательских шаблонов страницы товара в зависимости от категории для 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 приветствуются.

 

Buy Модуль пользовательских шаблонов страницы товара в зависимости от категории для ocStore / OpenCart at low prices. Online store offers to order Модуль пользовательских шаблонов страницы товара в зависимости от категории для ocStore / OpenCart, view full description, detailed specifications, product photos and current prices with discounts


Rating based on reviews:
Stars received: 0
Total reviews: 0
Average rating: 0
8 minutes read

Reviews to products

No reviews yet


Add to Cart

A downloadable file is attached to this product.

oc-custom_category_template_jsonld_price-main.zip

Number of downloads 1

 

Availability
Free
Purpose or Category
Menu, Design & Appearance
OpenCart Version
3.0.x.x

Content author

webitproff

Offline

webitproff

Last logged: 2026-09-01 22:41

About me briefly
Support and development of web projects on the CMF Cotonti: private messengers via the website, open and closed small social networks, trading platforms and marketplaces, freelance and services exchange portal, catalogs of goods from wholesale suppliers, dropshipping platforms, online stores, and much more.
View developments and download
Public portfolio of my works and developments
Telegram for messages
@webitproff
Telegram channel
@s/aBuyFILE
  • 2025-12-04 16:59
  • 2026-01-14 01:12

Market PRO Storefront

CMS, Script and Engine - website of online storefront, online store of info products and digital goods. Different prices in different currencies per product. Online cryptocurrency payment for goods and services.