Šablony
Adresář šablony by měl obsahovat soubory theme.yaml, version.yaml a assets/images/theme-preview.png.
Informace o šabloně
Soubor s informacemi o šabloně theme.yaml obsahuje popis šablony, jméno autora, URL webových stránek autora a další informace. Soubor by měl být umístěn do kořenového adresáře šablony:
├── themes
| └── website
| ├── pages
| ├── layouts
| ├── partials
| ├── content
| ├── assets
| └── theme.yaml <== Informační soubor
Následující pole jsou podporována v souboru theme.yaml:
Pole | Popis |
---|---|
name | specifikuje název šablony, povinné. |
author | specifikuje jméno autora, povinné. |
homepage | specifikuje URL webových stránek autora, povinné. |
description | popis šablony, povinné. |
previewImage | vlastní náhledový obrázek, cesta relativní k adresáři šablony, např: assets/images/preview.png, volitelné. |
form | konfigurační pole nebo odkaz na soubor definice polí formuláře, používaný pro přizpůsobení šablony, volitelné. |
Příklad souboru theme.yaml:
name: 'Rocketoo šablona'
description: 'Základní šablona pro e-shop Rocketoo.'
author: 'Digital Wizards'
homepage: 'https://digitalwizards.cz'
Soubor verze
Soubor verze šablony version.yaml definuje aktuální verzi šablony a changelog. Soubor by měl být umístěn do kořenového adresáře šablony.
├── themes
| └── website
| ├── ...
| └── theme.yaml
| └── version.yaml <== Soubor verze
Soubor obsahuje následující formát:
v1.0.1: 'Inicializace šablony'
v1.0.2: 'Přidány další funkce'
v1.0.3: 'Některé funkce byly odstraněny'
Náhledový obrázek šablony
Náhledový obrázek šablony se používá v administraci Rocketoo při výběru šablony. Soubor obrázku theme-preview.png by měl být umístěn do adresáře assets/images šablony:
├── themes
| └── main-theme
| ├── ...
| └── assets
| └── images
| └── theme-preview.png <== Náhledový obrázek
Šířka obrázku by měla být minimálně 600px. Ideální poměr stran je 1.5, například 600x400px.
Přizpůsobení šablony
Šablony mohou podporovat konfigurační hodnoty definováním klíče form
v informačním souboru šablony. Tento klíč by měl obsahovat konfigurační pole nebo odkaz na soubor definice polí formuláře. Více informací najdete v dokumentaci o polích formuláře.
Následující příklad ukazuje, jak definovat konfigurační pole názvu webu s názvem site_name:
name: 'Rocketoo šablona'
# [...]
form:
fields:
site_name:
label: 'Název webu'
comment: 'Název webu, jak by se měl zobrazovat na front-endu'
default: 'Můj úžasný web!'
Hodnota pak může být přístupná uvnitř jakékoli šablony tématu pomocí globální Twig proměnné nazvané this.theme
.
<h1>Vítejte na {{ this.theme.site_name }}!</h1>
Můžete také definovat konfiguraci v samostatném souboru, kde cesta je relativní k šabloně. Následující definice bude načítat pole formuláře ze souboru config/fields.yaml uvnitř šablony.
name: 'Rocketoo šablona'
# [...]
form: config/fields.yaml
themes/demo/config/fields.yaml:
fields:
site_name:
label: 'Název webu'
comment: 'Název webu, jak by se měl zobrazovat na front-endu'
default: 'Můj úžasný web!'
Používání dat šablony v CSS
Někdy chcete zahrnout vizuální preference do stylu vaší šablony. Můžete použít CSS vlastní vlastnosti (proměnné), aby tyto hodnoty byly dostupné. V následujícím příkladu použijeme typ pole Color Picker k zadání vlastní barvy odkazů.
form:
fields:
# [...]
link_color:
label: 'Barva odkazů'
type: 'colorpicker'
S použitím výše uvedeného příkladu můžeme definovat partial, který předá vybranou hodnotu do CSS pomocí lokálního stylu. Partial je pak zahrnut do layoutu šablony uvnitř tagu <head>
.
<style>
:root {
--my-color: {{ this.theme.link_color }};
}
</style>
Názvy vlastních vlastností rozlišují velká a malá písmena, takže --my-color
bude považováno za oddělenou vlastní vlastnost od --My-color
.
Nyní uvnitř vašeho stylu lze vlastní vlastnost použít kdekoli zadáním názvu vlastní vlastnosti uvnitř funkce var()
místo běžné hodnoty vlastnosti.
a {
color: var(--my-color);
}
Lokalizace
Šablony mohou obsahovat texty v různých jazycích pomocí systému lokalizace. Překlady jsou uloženy v adresáři langfe a v šablonách se používá filtr |_ pro zobrazení přeložených textů.
Lokalizace umožňuje zobrazovat obsah v různých jazycích podle nastavení uživatele nebo webu.
Struktura lokalizačních souborů
Níže je příklad struktury adresáře s překlady.
├── themes
| └── main-theme
| └── langfe <== Lokalizační adresář
| ├── en.php <== Anglické překlady
| └── sk.php <== Slovenské překlady
Soubory obsahují PHP pole s klíči a přeloženými texty:
themes/main-theme/langfe/en.php:
<?php return array (
'Jste tu poprvé?' => 'First time here?',
'Zaregistrujte se' => 'Register',
'Ještě u nás nemáte účet?' => 'Don\'t have an account yet?',
'Více' => 'More',
'Oblíbené' => 'Favorites',
'V případě dotazů nás kontaktujte' => 'Contact us for questions',
'Účet' => 'Account',
'Zobrazit filtry' => 'Show filters',
'Skrýt filtry' => 'Hide filters',
'Číst více' => 'Read more',
'Přejít k objednávce' => 'Go to order',
);
themes/main-theme/langfe/sk.php:
<?php return array (
'Jste tu poprvé?' => 'Ste tu prvýkrát?',
'Zaregistrujte se' => 'Zaregistrujte sa',
'Ještě u nás nemáte účet?' => 'Ešte u nás nemáte účet?',
'Více' => 'Viac',
'Oblíbené' => 'Obľúbené',
'V případě dotazů nás kontaktujte' => 'V prípade otázok nás kontaktujte',
'Účet' => 'Účet',
'Zobrazit filtry' => 'Zobraziť filtre',
'Skrýt filtry' => 'Skryť filtre',
'Číst více' => 'Čítať viac',
'Přejít k objednávce' => 'Prejsť k objednávke',
);
Použití v šablonách
V šablonách používejte filtr |_ pro zobrazení přeložených textů:
<h1>{{ 'Jste tu poprvé?'|_ }}</h1>
<nav>
<a href="/account">{{ 'Účet'|_ }}</a>
<button>{{ 'Zobrazit filtry'|_ }}</button>
<button>{{ 'Skrýt filtry'|_ }}</button>
</nav>
<a href="#" class="read-more">{{ 'Číst více'|_ }}</a>
<button type="submit">{{ 'Přejít k objednávce'|_ }}</button>
Pokud překlad pro daný klíč neexistuje, zobrazí se původní český text jako fallback.
Parametry v překladech
Některé překlady mohou obsahovat parametry označené dvojtečkou:
'K dopravě zdarma zbývá <strong>:amount</strong>!' => 'Free shipping <strong>:amount</strong> left!',
'Vytvořeno :date' => 'Created at :date',
V šablonách je pak můžete použít s parametry:
{{ 'K dopravě zdarma zbývá <strong>:amount</strong>!'|_({'amount': free_shipping.total}) }}
{{ 'Vytvořeno :date'|_({'date': '3.10.2024'}) }}