Шаблонизация Сontent Cart

Переопределение шаблонов Content Cart 4.0

Content Cart 4.0 поддерживает полное переопределение шаблонов через стандартную систему шаблонизации Joomla

Важные изменения в версии 4.0

В версии 4.0 структура шаблонов была полностью переработана:

  • Плагин теперь использует Joomla Layouts вместо обычных шаблонов
  • Layouts обеспечивают лучшую переносимость и повторное использование кода
  • Улучшена безопасность шаблонов (удалена функция extract())
  • Поддержка современной архитектуры Joomla 5/6

Переопределение шаблона модуля

Модуль «Content Cart»

Стандартный способ (через админку Joomla)

  1. Перейдите: Система → Шаблоны сайта → Детали и файлы
  2. Выберите ваш активный шаблон
  3. Нажмите «Создать переопределения»
  4. Найдите и выберите mod_contentcart
  5. Система автоматически создаст переопределение

Ручной способ

Скопируйте файл шаблона модуля из:

<code>/modules/mod_contentcart/tmpl/default.php</code>

В папку вашего шаблона:

<code>/templates/ваш_шаблон/html/mod_contentcart/default.php</code>

Что изменилось в 4.0

  • Динамическое обновление через JavaScript
  • Отображение списка товаров
  • Поддержка localStorage
  • AJAX-взаимодействие

Совет: Не удаляйте data-атрибуты и классы для JS


Переопределение шаблонов плагина (Layouts)

Новая структура в версии 4.0 - Joomla Layouts

Плагин использует систему Joomla Layouts для всех шаблонов. Это позволяет:

  • Переопределять шаблоны через стандартную систему Joomla
  • Использовать переопределения в нескольких шаблонах одновременно
  • Получать обновления безопасности без потери кастомизации

Пошаговая инструкция по переопределению

Шаг 1 Создание структуры папок

Создайте папку для переопределений layouts в вашем шаблоне:

<code>/templates/ваш_шаблон/html/layouts/plg_content_contentcart/</code>

Обратите внимание: путь включает layouts, а не просто html

Шаг 2 Копирование файлов layouts

Скопируйте нужные файлы из папки layouts плагина:

<code>/plugins/content/contentcart/layouts/</code>

В созданную папку переопределений:

<code>/templates/ваш_шаблон/html/layouts/plg_content_contentcart/</code>
ФайлНазначениеИзменения в 4.0
cart.php Страница корзины с формой заказа Обновлен
default.php Кнопка "В корзину" в материале Обновлен
mail.php Шаблон email-письма с заказом Новый layout
Преимущество Layouts

Система Layouts автоматически ищет переопределения в правильном порядке:

  1. В вашем шаблоне: /templates/ваш_шаблон/html/layouts/plg_content_contentcart/
  2. В плагине: /plugins/content/contentcart/layouts/

Шаг 3 Редактирование шаблонов

Теперь вы можете редактировать скопированные файлы под свои нужды.

Критически важно сохранить:
  • Data-атрибуты - используются JavaScript для работы корзины
  • ID элементов - необходимы для AJAX-обновлений
  • Классы для JS - например, contentcart-add-btn
  • CSRF-токены - критически важны для безопасности
  • Переменные $displayData - передаются из плагина

Подробное описание layouts

layouts/cart.php

cart.php - Страница корзины

Назначение: Основной шаблон страницы корзины с формой оформления заказа

Основные элементы:

  • Таблица товаров в корзине
  • Поля для изменения количества товаров
  • Кнопки удаления товаров
  • Форма с данными клиента (имя, email, телефон, комментарий)
  • Подсчет общей суммы заказа
  • Кнопка отправки заказа
  • CSRF-токен для безопасности

Новое в версии 4.0:

  • Работа с localStorage через JavaScript
  • Динамическое обновление через AJAX
  • Валидация на стороне сервера
  • Улучшенная безопасность (CSRF-защита)
Доступные переменные
  • $displayData['row'] - материал
  • $displayData['params'] - параметры
  • $displayData['cart_url'] - URL корзины
  • $displayData['session'] - сессия
layouts/default.php

default.php - Кнопка "В корзину"

Назначение: Кнопка добавления товара в корзину на странице материала

Основные элементы:

  • Кнопка "Добавить в корзину"
  • Отображение цены товара
  • Data-атрибуты для JavaScript
  • CSRF-токен

Новое в версии 4.0:

  • Умная кнопка (меняет состояние после добавления)
  • Цена берется только с сервера (безопасность)
  • Поддержка AJAX-добавления
  • Автоматическое обновление модуля корзины
Доступные переменные
  • $displayData['row'] - материал
  • $displayData['params'] - параметры
  • $displayData['link'] - ссылка
  • $displayData['cart_url'] - URL корзины
layouts/mail.php

mail.php - Email-уведомление

Назначение: Шаблон email-письма с информацией о заказе

Основные элементы:

  • Информация о клиенте (имя, email, телефон)
  • Список заказанных товаров
  • Цены и количество товаров
  • Общая сумма заказа
  • Комментарий клиента (если есть)

Критические изменения в версии 4.0:

  • Удалена функция extract() - была угрозой безопасности
  • Теперь это Joomla Layout вместо обычного шаблона
  • Добавлена валидация данных
  • Улучшена HTML-структура письма
Важно!

Не используйте extract() в переопределениях. Это небезопасно!

Обращайтесь к переменным через $displayData.


Итоговая структура папок

Переопределения модуля

<code>/templates/ваш_шаблон/
└── html/
    └── mod_contentcart/
        └── default.php</code>

Стандартное переопределение модуля Joomla

Переопределения плагина (Layouts)

<code>/templates/ваш_шаблон/
└── html/
    └── layouts/
        └── plg_content_contentcart/
            ├── cart.php
            ├── default.php
            └── mail.php</code>

Переопределение через систему Joomla Layouts

Миграция переопределений с версии 2.0

Если вы обновляетесь с версии 2.0

В версии 2.0 шаблоны плагина находились в папке tmpl/ и переопределялись в:

<code>/templates/ваш_шаблон/html/plg_content_contentcart/</code>

В версии 4.0 нужно переместить в:

<code>/templates/ваш_шаблон/html/layouts/plg_content_contentcart/</code>
Пошаговая миграция:
  1. Создайте новую папку: /templates/ваш_шаблон/html/layouts/plg_content_contentcart/
  2. Скопируйте ваши переопределенные файлы из старой папки в новую
  3. Обновите код файлов согласно новым требованиям безопасности (удалите extract(), обновите CSRF-токены)
  4. Проверьте работу всех шаблонов
  5. Удалите старую папку после успешного тестирования

Полезные советы

Рекомендуется

  • Делайте резервные копии перед изменениями
  • Тестируйте на локальном сервере
  • Сохраняйте все data-атрибуты
  • Проверяйте работу JavaScript после изменений
  • Используйте комментарии в коде
  • Обновляйте переопределения после обновления плагина
  • Используйте переменные через $displayData

Не рекомендуется

  • Редактировать оригинальные файлы плагина
  • Удалять CSRF-токены
  • Использовать extract() в шаблонах
  • Изменять ID и классы для JavaScript
  • Удалять data-атрибуты
  • Забывать про безопасность
  • Использовать старый путь из версии 2.0