Přetěžování šablon
Systém přetěžování šablon umožňuje rozšířit stávající šablonu o nový obsah nebo upravit její existující části. Tzv. „extend theme“ může přetěžovat a rozšiřovat šablony nadřazeného (parent) tématu, což umožňuje modulární přizpůsobení a jednodušší správu celého systému.
Pro zapnutí funkce přetěžování šablon nás prosím kontaktujte na developers@rocketoomax.cz.
Jak to funguje
Základní koncepty
- Parent Theme - aktivní theme, který používá extend_theme (např.
uran
) - Extend Theme - theme s
extend_theme: true
v theme.yaml, který přetěžuje parent theme (např.uran_ext
) - Template Override - automatické přetěžování šablon z parent theme šablonami z extend theme
Architektura systému
Parent Theme (uran) - aktivní theme
├── partials/product.htm ✓ (základní verze)
└── customize.yaml (extend_theme: ardea)
↓
Extend Theme (uran_ext) - rozšiřující theme
├── partials/product.htm ✓ (PŘETĚŽUJE verzi z uran)
└── theme.yaml (extend_theme: true)
Výsledek: Načte se product.htm z uran_ext theme
Konfigurace
1. Nastavení Extend Theme
V souboruthemes/uran_ext/theme.yaml
:
name: 'Uran - rošíření'
description: 'Rozšiřující theme pro Uran'
extend_theme: true
2. Nastavení Parent Theme
V souboruthemes/uran/theme.yaml
:
name: 'Uran'
...
is_extendable: true
V administraci theme uran
→ záložka "Rozšíření šablony":
Rozšiřující šablona: Uran - rošíření
3. Aktivace Template Cache (volitelné)
Vconfig/app.php
:
'template_cache_minutes' => 60, // Cache na 60 minut (pro produkci)
'template_cache_minutes' => 0, // Vypnutá cache (pro vývoj)
Typy podporovaných šablon
1. Theme partials
{# Extend theme přetěžuje partials parent theme #}
{% partial 'product-detail' %}
{% partial 'category-sidebar' %}
2. Component partials
{# Regular komponenty #}
{% partial 'productList::default' %}
{% partial 'categoryFilter::sidebar' %}
3. PageItem komponenty
{# PageItem komponenty (začínají __) #}
{% partial '__pageItem__myComponent::template' %}
Příklady použití
Přetěžování produktové stránky
- V parent theme
uran/partials/
existujeproduct-detail.htm
:
<div class="product-basic">
<h2>Základní produktový detail</h2>
<div class="product-info">{{ product.title }}</div>
</div>
- V extend theme
uran_ext/partials/
vytvořteproduct-detail.htm
:
<div class="product-enhanced">
<h2>Rozšířený produktový detail</h2>
<div class="product-info">{{ product.title }}</div>
<div class="product-gallery">{% partial 'product-gallery' %}</div>
<div class="product-specs">{% partial 'product-specifications' %}</div>
</div>
- V parent theme
uran
při volání:
{% partial 'product-detail' %}
{# Načte se ROZŠÍŘENÁ verze z uran_ext theme #}
Přidání nových partials
Extend theme může přidat nové partials, které parent theme neobsahuje:- V
themes/uran_ext/partials/
vytvořteproduct-reviews.htm
- V parent theme
uran
můžete nový partial použít:
{% partial 'product-reviews' %}
{# Načte se z uran_ext theme #}
Bezpečnost
Validace
- Kontrola existence extend theme
- Ochrana proti nastavení extend theme jako aktivní theme
- Validace cyklických závislostí
Nejčastější problémy
1. Partial se nenačítá z extend theme
Řešení:- Zkontrolujte nastavení
extend_theme
v customize.yaml - Ověřte
extend_theme: true
v theme.yaml extend theme - Zkontrolujte cestu k partial souboru
2. Cache problémy
Řešení: Vymažte cache pomoci widgetu Mazaní cache na nástěnce v administraci e-shopu.Obsah
- Přetěžování šablon
- Jak to funguje
- Základní koncepty
- Architektura systému
- Konfigurace
- 1. Nastavení Extend Theme
- 2. Nastavení Parent Theme
- 3. Aktivace Template Cache (volitelné)
- Typy podporovaných šablon
- 1. Theme partials
- 2. Component partials
- 3. PageItem komponenty
- Příklady použití
- Přetěžování produktové stránky
- Přidání nových partials
- Bezpečnost
- Validace
- Nejčastější problémy
- 1. Partial se nenačítá z extend theme
- 2. Cache problémy