Motivy
Motivy jsou jedním z možných typů pluginu. Jsou to podadresáře v plugins/templates/.
Prázdný motiv
Systém ve výchozím stavu obsahuje motiv s názvem Blank
. Je to motiv s minimálními styly
ze kterého se dá vycházet při tvorbě vlastního motivu.
Struktura motivu
- images/ - adresář s obrázky motivu
- labels/ - popisky pro layouty a sloty, které tento motiv podporuje
- style.css - výchozí CSS soubor motivu
- template.php - výchozí skript šablony
- plugin.json - definice pluginu
Šablona
Soubor template.php (a případně další šablony uvedené v layouts) slouží k vykreslení struktury a obsahu těla stránky.
Úplně minimální šablona by mohla vypadat nějak takto:
<?php use Sunlight\Template; ?>
<?= Template::content() ?>
Pomocí třídy Template je možné vykreslit jednotlivé sekce stránky.
| Metoda | Popis |
|---|---|
Template::content() |
Vykreslit obsah stránky. |
Template::boxes('slot') |
Vykreslit boxy pro daný slot. Možné sloty se definují v plugin.json v layouts. Viz také další nastavení boxů. |
Template::hasBoxes('slot') |
Vrátí (Dostupné od verze 8.2.0). |
Template::heading() |
Vykreslit titulek stránky (<h1>). |
Template::backlink() |
Vykreslit zpětný odkaz (návrat zpět). |
Template::links() |
Vykreslit odkazy motivu. Metodě je možné předat pole s následujícími klíči:
|
Template::asset() |
Sestavit URL k souboru motivu.
|
Template::menu() |
Vykreslit menu. Pomocí argumentů je možné definovat rozsah pořadí a definovat class: |
Template::treeMenu() |
Vykreslit stromové menu. Pomocí pole je možné předat více nastavení:
(Pokročilejší možnosti jsou popsány v dokumentaci metody ve zdrojovém kódu.) |
Template::breadcrumbs() |
Vykreslit drobečkovou navigaci. Pomocí argumentů lze předat vlastní drobečky (seznam polí s klíči |
Template::userMenu() |
Vykreslit uživatelské menu. Pomocí argumentů je možné vypnout odkaz na profil a odkaz do administrace: |
Template::title() |
Vykreslit titulek aktuální stránky. |
Template::siteTitle() |
Vykreslit titulek stránek. |
Template::siteDescription() |
Vykreslit popis stránek. |
Template::siteUrl() |
Vykreslit absolutní URL ke hlavní stránce. |
Template::sitePath() |
Vykreslit cestu ke hlavní stránce. |
Template::currentID() |
Vrátí ID aktuální stránky nebo null. |
Template::currentIsPage() |
Vrátí true, pokud je aktuální obsah typu "stránka", jinak false. |
Template::currentIsArticle() |
Vrátí true, pokud je aktuální obsah typu "článek", jinak false. |
Template::currentIsTopic() |
Vrátí true, pokud je aktuální obsah typu "topic", jinak false. |
Template::currentIsModule() |
Vrátí true, pokud je aktuální obsah typu "modul", jinak false. |
Template::currentIsIndex() |
Vrátí true, pokud je aktuální obsah typu "hlavní strana", jinak false. |
plugin.json
Seznam klíčů, které můžou být uvedeny v plugin.json. Klíče označeny "*" jsou povinné.
| Hlavní nastavení pluginu | ||
|---|---|---|
| Klíč | Typ | Popis |
$schema
|
string
|
Cesta k JSON schématu. Pomáhá editorům v napovídání klíčů a validaci plugin.json. Nepovinné. "$schema": "../../../system/schema/template.json" |
name
|
string
|
Čitelný název pluginu. |
description
|
string
|
Stručný popis pluginu. |
authors
|
object[]
|
Seznam autorů pluginu.
"authors": [
{"name": "Author1", "url": "https://example.com/"},
{"name": "Author2"},
{"url": "https://example.com/"}
]
|
version
|
string
|
Verze pluginu. Např. "1.0.0".
|
environment
|
object
|
Prostředí vyžadované pluginem.
"environment": {
"system": "^8.3.1",
"php": ">=7.4",
"php_extensions": ["curl", "iconv"],
"debug": null
}
|
| Nastavení motivu | ||
| Klíč | Typ | Popis |
layouts
|
object
|
Mapa možných variant motivu.
"layouts": {
"default": {
"template": "template.php",
"slots": ["right"]
}
}
Viz také popis možného obsahu šablony. |
css
|
string[]
|
CSS soubory motivu. Ve výchozím stavu je vložen pouze soubor style.css.
"css": [
"style.css",
"another-style.css"
]
|
js
|
string[]
|
JavaScript soubory motivu.
"js": [
"template.js",
"another-script.js"
]
|
responsive
|
bool
|
Pokud je nastaveno na true, je do hlavičky automaticky vložen následující meta tag:
<meta name="viewport" content="width=device-width, initial-scale=1"> |
dark
|
bool
|
Pokud je nastaveno na |
bbcode.buttons
|
bool
|
Zobrazit BBCode tlačítka při psání příspěvků a komentářů. Výchozí stav je |
box.parent
|
string
|
Název tagu, který obalí boxy. Výchozí je |
box.item
|
string
|
Název tagu, který obalí jednotlivé boxy. Výchozí je |
box.title
|
string
|
Název tagu, který obalí titulek boxu. Výchozí je |
box.title.inside
|
bool
|
Příznak, zda má být titulek uvnitř boxu nebo před ním. Výchozí je |
lang_dir
|
string
|
Název adresáře, kde jsou umístěny popisky layoutů a slotů. Výchozí je
<?php
return array(
'default.label' => 'výchozí',
'default.slot.right' => 'pravý sloupec',
);
Pokud je váš motiv určen pro širší distribuci, je doporučeno mít popisky alespoň v češtině (cs.php) a angličtině (en.php). |
events
|
object[]
|
Seznam událostí, které motiv zpracovává. Viz dokumentace callbacků pro více informací o specifikaci callbacků.
"events": [
{"event": "tpl.title", "script": "event/title.php"}
]
Klíč
Motiv musí být aktivní v okamžiku vyvolání události, aby na ni mohl reagovat. Tzn. může reagovat na událost
(Před verzí 8.2.0 mohou motivy reagovat až po události |
| Pokročilé nastavení pluginu | ||
| Klíč | Typ | Popis |
dependencies
|
object
|
Mapa pluginů, na kterých tento plugin závisí a jejich požadovaných verzí (viz formát).
Názvy pluginů jsou ve formátu
"dependencies": {
"extend.some-plugin": "^1.0",
"another-plugin": "*"
}
|
installer
|
string
|
Relativní cesta ke skriptu, který vrátí instalátor pluginu. Poznámka: Instalátor se spouští během načítání pluginů a nejsou tedy dostupné ostatní pluginy ani autoloading class samotného pluginu. "installer": "installer.php" Příklad instalátoru: |
autoload
|
object
|
Dodatečné nastavení autoloadingu ve stejném formátu, jako má Composer. Viz dokumentace.
|
class
|
string
|
Název vlastní třídy pluginu.
|
namespace
|
string
|
Namespace pluginu.
Pokud není uveden žádný namespace, je vytvořen z kombinace |
inject_composer
|
bool
|
Povolit automatickou integraci Composer závislostí pluginu. Výchozí stav je
|
actions
|
object
|
Vlastní akce pluginu, které je možné spouštět v administraci ve správě rozšíření.
"actions": {
"custom-action": "CustomActionClass"
}
|
config_defaults
|
object
|
Výchozí nastavení pluginu.
"config_defaults": {
"example_toggle": true,
"example_string": "hello world!"
}
|
extra
|
object
|
Extra nastavení pluginu pro účely jiných pluginů.
Je možné k nim přistupovat pomocí metody |