Существуют несколько способов перегрузки элемента шаблона модуля EShop:

1. Полная перегрузка элемента шаблона модуля на уровне ядра;

2. Частичная перегрузка элемента шаблона модуля на уровне ядра;

3. Перегрузка элемента шаблона определенного типа товара на уровне модуля EShop.

4. Комбинация вышеперечисленных способов.

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

В предыдущих версиях шаблон необходимо было создавать в папке движка сайта /tt/[имя шаблона]/. Сейчас так делать не рекомендуется, хотя возможно. Наиболее эффективный способ создания сайта в новой версии платформы осуществляется через проект сайта. В качестве основы/примера, можно взять официальный проект платформы: https://github.com/abricos/abricos/

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

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

 

Полная перегрузка элемента шаблона модуля на уровне ядра

В своем шаблоне проекта сайта создадим папку override и в ней папку с именем модуля, элементы шаблона которого необходимо перегрузить. Например, mySiteProject/templates/mytemplate/src/override/eshop

Теперь в эту папку можно скопировать хоть все элементы шаблона модуля, соблюдая подпапки типов элемента шаблона brick и content и описать (изменить) их по своему.

Например, необходимо изменить страницу отображения любого товара.

Для этого перегрузим стартовый элемент шаблона content/product.html скопировав его в свой шаблон сайта: mySiteProject/templates/mytemplate/src/override/eshop/content/product.html

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

Или, допустим, необходимо изменить блок фото при отображении страницы товара. Элемент шаблона в модуле eshop отвечающий за фото товара находится в файле brick/product-foto.html.

Копируем этот файл в свой шаблон сайта mySiteProject/templates/mytemplate/src/override/eshop/brick/product-foto.html. Теперь можем менять в этом файле все, что угодно.

Этот метод и есть полная перегрузка элемента шаблона модуля на уровне ядра. Таким способом можно переопределять любой элемент шаблона любого модуля в платформе. 

Но, у этого способа есть существенный минус. Если в исходный элемент шаблона новой версии модуля были внесены какие либо технические изменения (изменен путь к исполняемому скрипту, добавлен/удален параметр и т.п.), то при очередном обновление своего сайта, этот элемент шаблона может полностью перестать работать. 

Да и к тому же, если необходимо поменять всего пару строк, как то не логично перегружать элемент шаблона полностью.

Поэтому, в новой версии платформы был разработан новый способ частичной перегрузки элемента шаблона модуля.

 

Частичная перегрузка элемента шаблона модуля на уровне ядра

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

Допустим, необходимо в списке товаров, вместо фразы «Под заказ» использовать «Нет на складе».

За отображение товара в списке отвечает элемент шаблона brick/product_list_item.html, в частности переменная шаблона option-sklad-empty-1 (строка 38).

Для частичной перегрузки шаблона, в данном случае переменной option-sklad-empty-1, необходимо создать файл с именем product_list_item.html в своем шаблоне в папке частичной перегрузки элементов шаблона модуля brick-partmySiteProject/templates/mytemplate/src/override/eshop/brick-part/product_list_item.html и определить в нем переменную option-sklad-empty-1 со своим значением. Пример brick-part/product_list_item.html из шаблона example.

Этот способ так же можно использовать и для других модулей.

 

Перегрузка элемента шаблона определенного типа товара на уровне модуля EShop

Этот способ применяется для разработки шаблона отображения определенного типа товара и применяется только для элементов шаблона модуля: brick/product_list_item.html и brick/product.html.

Допустим, в интернет-магазине товары подразделяются на типы. И, есть тип товара mebel, который должен отображаться при просмотре товара, в том числе и в списке, по особому. Для этого, необходимо в папке перегрузки элементов шаблона создать файлы по формату brick/product-list-item-tp-[type_name].html и brick/product-tp-[type_name].html. В данном случае это будут файлы:

mySiteProject/templates/mytemplate/src/override/eshop/brick/product-list-item-tp-mebel.html

mySiteProject/templates/mytemplate/src/override/eshop/brick/product-tp-mebel.html

И внутри этих файлов установить значения как при методе частичной перегрузки.

 

Комбинация вышеперечисленных способов

Элемент шаблона модуля можно перегрузить сразу несколькими способами.

Тогда порядок переопределения элемента шаблона модуля будет таков:

1. Чтение элемента шаблона полной перегрузкой,

2. Переопределение его отдельных значений частичной перегрузкой, 

3. Касательно модуля eshop, переопределение значений частичной перегрузкой шаблоном с именем определенного типа товара.

 

Описанные методы применимы к версии модуля EShop не ниже 0.2.4

Если что не понятно, спрашивайте в комментариях, разберем на конкретных примерах.

0
15 Декабря 2014, 13:34