Extend pluginy
Extend pluginy jsou jedním z možných typů pluginu. Jsou to podadresáře v plugins/extend/.
Příklady pluginů
Struktura extend pluginu
- class/ - adresář s třídami (nemusí existovat, pokud plugin nemá třídy)
- plugin.json - definice pluginu
Extend pluginy jsou nejvíce generickým typem pluginu a jejich adresářová struktura tedy z velké částí záleží na autorovi pluginu. Existují však doporučené názvy podadresářů, aby se v pluginech lépe orientovalo:
- public/ - adresář s veřejně přístupnými soubory
- script/ - skripty
- event/ - skripty event listenerů
- hcm/ - skripty HCM modulů
- cron/ - skripty CRON úloh
- lang/ - slovníky s překlady
Public adresář
Adresář public je standardním adresářem, kam mohou pluginy umístit veřejné dostupné soubory (např. CSS styly a obrázky).
Ve výchozím stavu není přístup povolen a je tak potřeba do adresáře public umístit soubor .htaccess:
<IfModule mod_authz_core.c> Require all granted </IfModule> <IfModule !mod_authz_core.c> Order allow,deny Allow from all </IfModule>
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/extend.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.2.0", "php": ">=7.4", "php_extensions": ["curl", "iconv"], "debug": null } |
Nastavení extend pluginu | ||
Klíč | Typ | Popis |
events
|
object[]
|
Seznam událostí, které plugin zpracovává. Viz dokumentace callbacků pro více informací o specifikaci callbacků. "events": [ {"event": "core.ready", "script": "event/core_ready.php"} ]
Klíč
V definici každého listeneru je možné navíc uvést klíč "events": [ {"event": "tpl.head", "script": "event/head.php", "group": "example"} ]
Např. zabudovaný Lightbox plugin
používá |
events.web
|
object[]
|
Seznam událostí, které plugin zpracovává (pouze na webu). |
events.admin
|
object[]
|
Seznam událostí, které plugin zpracovává (pouze v administraci). |
scripts
|
string[]
|
Seznam skriptů, které mají být spuštěny při načtení pluginu. Tyto skripty se spouští na všech stránkách a je tedy doporučeno použít events, pokud je to možné. "scripts": [ "script/init.php", "script/example.php" ] |
scripts.web
|
string[]
|
Seznam skriptů, které mají být spuštěny při načtení pluginu na webu. |
scripts.admin
|
string[]
|
Seznam skriptů, které mají být spuštěny při načtení pluginu v administraci. |
routes
|
object[]
|
Seznam URL patternů, které plugin zpracovává. Tímto způsobem lze implementovat vlastní stránky nebo API. "routes": [ {"pattern": "api/example/(.+)", "script": "script/example_api.php"} ] Příklad script/example_api.php:
<?php
Další podporované klíče:
|
langs
|
object
|
Mapa slovníků. Klíče jsou prefix a hodnoty jsou cesty k adresářům s překlady. Prefix nesmí obsahovat tečku. "langs": { "my_plugin": "lang" } V adresáři lang je pak možné definovat slovníky pro jednotlivé jazyky, např. lang/cs.php:
<?php
Definované překlady lze načítat pomocí funkce
<?php |
hcm
|
object
|
Mapa HCM modulů. Klíče jsou názvy HCM modulů a hodnoty jsou callbacky. "hcm": { "my_hcm": {"script": "hcm/my_hcm.php"} } Příklad hcm/my_hcm.php:
<?php HCM modul je pak možné použít takto: [hcm]my_hcm,hello,world[/hcm] |
cron
|
object
|
Mapa CRON úloh. Klíče jsou názvy CRON úloh a hodnoty jsou callbacky. "cron": { "example": { "interval": 60, "script": "cron/example.php" } } Příklad cron/example.php:
<?php
|
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:
<?php |
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 |