Extend pluginy
Pomocí extend pluginů lze rozšířit systém použitím sady zabudovaných událostí.
Události systému
Toto je kompletní seznam událostí systému.
- klíč
output
v argumentech je standartní a pokud je dostupný, jedná se o referenci na možný výstup, do které lze přidávat vlastní data - znak
&
před názvem argumentu znamená, že se jedná o účelnou referenci a její změnou je možné zasahovat do chodu systému - pokud je argument obalen syntaxí
extra[x]
, nachází se argument v poli pod klíčem s názvemextra
- Moduly - Systémové a vlastní moduly
- Článek - Přidávání obsahu do článků
- Stránka - Přidávání obsahu do stránek
- Plugin stránka - Přidávání nových typů stránek do systému
- Motiv - Vkládání obsahu do motivu, hlavičky a menu
- Index - Události zobrazování stránek.
- BBCode - Registrace BBCode značek
- Příspěvky - Přidávání obsahu do příspěvků a validace před uložením
- Plugin příspěvky - Napojení pluginu na systém komentářů
- Uživatelé - Načítaná data uživatelů a avatary
- Administrace - Události modulů administrace
- Systém - Systémové události
- HCM - Události systému HCM modulů
Moduly Systémové a vlastní moduly | ||
---|---|---|
Identifikátor | Popis | Argumenty |
mod.x.pre | před skriptem | &output , extra[mid] , extra[&custom] , extra[&file] |
|
||
mod.x.post | po skriptu | &output |
mod.custom.x | vlastní modul | &file , &title |
mod.reg.success | po úspěšné registraci | user_id |
mod.settings.form | formulář uživ. nastavení | &output |
mod.settings.avatar | fieldset nastavení avataru | &output , extra[query] |
mod.settings.submit | submit formuláře nastavení | &query , &errors , current_query |
|
||
mod.settings.save | uložení formuláře nastavení | &query |
|
||
mod.editpost.backlink | zpětný odkaz z editace příspěvku | &backlink , query |
|
||
mod.search.results | zpětný odkaz z editace příspěvku | &results , query , query_sql |
|
||
mod.messages.new | nový vzkaz | receiver , &subject , &text |
|
||
Poznámky
|
Článek Přidávání obsahu do článků | ||
---|---|---|
Identifikátor | Popis | Argumenty |
article.pre | před skriptem | &output , extra[&query] , extra[&file] |
article.perex.before | před perexem | &output , extra[&query] |
article.perex.after | za perexem | &output , extra[&query] |
article.comments | před komentáři | &output , extra[&query] |
article.post | po skriptu | &output , extra[&query] |
article.preview | náhled článku | &callback |
Tato událost je volána pouze jednou, poté se již vždy používá registrovaný callback nebo výchozí implementace, pokud nebyl žádný callback registrován. |
||
Poznámky
|
Stránka Přidávání obsahu do stránek | ||
---|---|---|
Identifikátor | Popis | Argumenty |
page.x.pre | před skriptem | &output , extra[&query] , extra[&file] |
page.all.pre | před skriptem (všechny typy) | &output , extra[&query] |
page.x.aftertitle | po titulku | &output , extra[&query] |
page.x.content.before | před obsahem | &output , extra[&query] |
page.x.content.after | po obsahu | &output , extra[&query] |
page.x.post | po skriptu | &output , extra[&query] |
page.category.item.before | před článkem v kategorii | &output , extra[query] , extra[&item-query] |
page.category.item.after | po článku v kategorii | &output , extra[query] , extra[&item-query] |
page.event.yy | událost stránky | extra[&query] , extra[args] |
K událostem stránky dochází na základě záznamu v poli Události v administraci u dané stránky.
|
||
page.backlink | zpětný odkaz | &backlink |
|
||
Poznámky
|
Plugin stránka Přidávání nových typů stránek do systému | ||
---|---|---|
Identifikátor | Popis | Argumenty |
ppage.reg | registrace | &infos |
|
||
ppage.x.show | zobrazení | &file , &query , segment , &segment_handled |
|
||
ppage.x.interinfo | info v rozcestníku | &output , item |
ppage.x.edit | úprava/vytvoření | &output , extra[&query] , extra[&es_settings] , extra[&es_savemap] , extra[&es_enable] , extra[&es_content] , extra[&es_extrarow] , extra[&es_extra] , extra[&es_file] , extra[new] |
|
||
ppage.x.delete.confirm | potvrzení smazání | &contents , query |
|
||
ppage.x.delete.do | vykonání smazání | &handled , query |
|
||
Poznámky
|
Motiv Vkládání obsahu do motivu, hlavičky a menu | ||
---|---|---|
Identifikátor | Popis | Argumenty |
tpl.title | titulek stránky | &title , head |
|
||
tpl.content.before | před obsahem stránky | &output |
tpl.content.after | za obsahem stránky | &output |
tpl.menu.item | položka menu | &item , &classes , sub |
|
||
tpl.head | v <head> | &output |
tpl.head.meta | v <head> hned za meta tagy | &output |
tpl.lightbox | inicializace lightboxu v <head> | &output |
tpl.usermenu.first | před první položkou uživ. menu | &output |
tpl.usermenu.last | za poslední položkou uživ. menu | &output |
tpl.usermenu.beforelogout | před odkazem na odhlášení | &output |
tpl.boxes | výpis boxů v šabloné | &output , boxes , column |
|
Index Události zobrazování stránek. | ||
---|---|---|
Identifikátor | Popis | Argumenty |
index.route | zpracování požadavku (adresy) | ids , ids_first , ids_full , &handler |
Tato událost je vyvolána ještě před pokusem o zobrazení stránky na webu. Nastavením handleru lze pro určité adresy zobrazit vlastní obsah.
|
||
index.template | šablona stránky | &output |
Pomocí této události lze nahradit cestu k souboru template.php. |
||
index.notfound | stránke nenalezena | &output |
index.notfound.hook | stránka nenalazena (odchycení) | &output , &title , ids |
|
||
index.notpublic | vyžadováno přihlášení | &output |
BBCode Registrace BBCode značek | ||
---|---|---|
Identifikátor | Popis | Argumenty |
bbcode.extend.tags | přidání tagů do parseru | &tags |
'tag' => array(0 => pair 1/0, 1 => arg 1/0, 2 => nestable 1/0, 3 => can-contain-children 1/0, 4 => button-icon(null = none | 1 = template | string = path)) |
||
bbcode.extend.proc | přidání tagů do processoru | &tags |
'tag' => callback(argument, innerBuffer) |
Příspěvky Přidávání obsahu do příspěvků a validace před uložením | ||
---|---|---|
Identifikátor | Popis | Argumenty |
posts.output | výpis příspěvků | type , home , xhome , vars , post_type , plugin_flag , &canpost , &locked , &autolast , &post_link , &posts_per_page , &sql_desc , &sql_ordercol , &sql_countcond , &callback |
|
||
posts.post | příspěvek ve výpisu | &item , &avatar , type |
|
||
posts.columns | sloupce ve výpisu | &output |
Použití $args['output'] .= ',custom_col'; . |
||
posts.submit | odeslání příspěvku | &allow , posttype , posttarget , xhome , &subject , &text , author , guest |
|
||
posts.new | nový příspěvek | &output , id , posttype |
|
Plugin příspěvky Napojení pluginu na systém komentářů | ||
---|---|---|
Identifikátor | Popis | Argumenty |
posts.x.validate | validace postu | home , &valid |
|
||
posts.x.edit | úprava postu | query , &backlink |
|
||
Poznámky
|
Uživatelé Načítaná data uživatelů a avatary | ||
---|---|---|
Identifikátor | Popis | Argumenty |
user.avatar | načtení avataru uživatele | &return , udata , path_only , return_null , full_size |
|
||
user.cache.init | inicializace cache | &extend |
array( array('x.sloupec1', ...), 'LEFT JOIN x ON()' )
|
||
user.new | po vytvoření uživatele | id , username |
Tato událost je volána při registraci nebo vytvoření uživatele v administraci. |
||
user.edit | po úpravě uživatele | id , username |
Tato událost je volána v modulu uživatelské nastavení nebo při editaci uživatele v administraci. |
||
user.delete | před ostraněním uživatele | id , username , &allow |
|
Administrace Události modulů administrace | ||
---|---|---|
Identifikátor | Popis | Argumenty |
admin.start | spuštění administrace | - |
Tato událost je vyvolána hned po inicializaci administrace, ještě před |
||
admin.init | inicializace administrace | &menu , &modules |
Tato událost je vyvolána po inicializaci administrace a přihlášení uživatele.
|
||
admin.mod.init | před načtením jakéhokoliv modulu | &output , extra[name] , extra[&file] |
|
||
admin.mod.x.pre | před načtením konkrétního modulu | &output , extra[name] , extra[&file] |
|
||
admin.mod.x.post | po provedení konkrétního modulu | &output |
|
||
admin.mod.post | po provedení modulu | &output |
admin.content.links | odkazy ve správě obsahu | &links |
|
||
admin.fman.userdir | uživatelský adresář | &subpath |
|
||
admin.root.new | vytvoření stránky | id , query |
admin.root.default | výchozí data stránky | &data |
admin.root.edit | úprava stránky | id , query |
admin.root.delete | smazání stránky | id , query |
admin.root.actions | akce stránky | item , &extra_actions |
|
||
admin.root.item | výpis stránky | &output , item , denied , extra_actions , class |
|
||
admin.gallery.picture | obrázek galerie | &opts |
|
||
admin.article.new | vytvoření článku | id , data |
admin.article.default | výchozí data článku | &data |
admin.article.edit | úprava článku | id , data |
admin.article.delete | smazání článku | id |
admin.article.picture | obrázek článku | &opts |
|
Systém Systémové události | ||
---|---|---|
Identifikátor | Popis | Argumenty |
sys.init | po inicializaci systému | - |
sys.jslib | JS knihovny | &output , &paths |
|
||
sys.mail | odeslání e-mailu | &handled , to , subject , message , headers |
|
||
sys.form | systémový formulář | id , vars , ¬itle , &content |
|
||
sys.form.login | přihlašovací formulář | &call |
|
||
sys.form.postform | formulář příspěvku / komentáře | &call , vars |
|
||
sys.form.output | vykreslení formuláře | &output , &name , &action , &cells , &check , &submittext , &codenexttosubmit |
|
||
sys.captcha.init | inicializace CAPTCHy | &output |
Tato událost je vyvolána při inicializaci formulářového řádku s CAPTCHou. Změnou argumentu |
||
sys.captcha.check | kontrola CAPTCHy | &output |
Tato událost je vyvolána při kontrole správnosti kontrolního kódu. Změnou argumentu |
||
sys.captcha.check.post | po kontrole CAPTCHy | &output |
Tato událost je vyvolána po kontrole správnosti kontrolního kódu. Změnou argumentu |
||
sys.captcha.render | vykreslení CAPTCHy | - |
Tato událost je vyvolána při vykreslení obrázku v cimage.php. |
||
sys.captcha.render.matrix | vykreslení CAPTCHy | - |
Tato událost je vyvolána před vykreslením podkladu pro 3D captchu v cimage.php. |
||
sys.cron | spuštění cronu | last , name , seconds , delay |
Tato událost je vyvolána dojde-li ke spuštění cronu pro jakýkoliv interval.
|
||
sys.cron.x | spuštění cronu | last , name , seconds , delay |
Tato událost je vyvolána dojde-li ke spuštění cronu pro konkrétní interval.
|
||
sys.thumb.resize | změna velikosti miniatury | &options |
|
||
sys.thumb.process | zpracování miniatury | &options |
|
HCM Události systému HCM modulů | ||
---|---|---|
Identifikátor | Popis | Argumenty |
hcm.filter.php | filtrování HCM modulů pro uživatele nemající oprávnění spouštět PHP kód | &filter |
Argument filter je pole obsahující názvy HCM modulů, které se mají odfiltrovat. |
Struktura pluginu
Každý extend plugin sestává z následujících položek:
- adresář
plugins/extend/xxx/
(kdexxx
je název pluginu) - soubor
plugins/extend/xxx/xxx.php
(kdexxx
je také název pluginu)
Skripty pluginu
Hlavní skript pluginu (plugins/extend/xxx/xxx.php
) má za úkol zaregistrovat své funkce, které budou zavolány v případě, že nastane daná systémová událost (seznam je výše). Tato registrace se provádí pomocí funkce _extend()
.
<?php
/* ---- kontrola jadra ---- */
if (!defined('_core')) die;
/* ---- funkce pluginu ---- */
/**
* [TEST PLUGIN] Ukazkova funkce
* @param array $args
*/
function _plugin_test_udalost($args)
{
$args['output'] .= '<p>Výstup ukázkové funkce při události <code>tpl.content.before</code>';
}
/* ---- registrace pluginu ---- */
_extend('reg', 'tpl.content.before', '_plugin_test_udalost');
- argument
$args
je asociativní pole předané zaregistrované funkci a obsahuje argumenty popsané v seznamu výše - funkce má možnost vrátit
false
, čímž ukončí zpracování dané události (další případné zaregistrované pluginy nebudou volány) - pokud by měl registrační skript obsahovat delší skripty a k události nedochazí téměř na každé stránce, je doporučeno tyto skripty přesunout do zvláštních souborů a ve funkcích je poté spouštět pomocí
include
neborequire
Omezení načítání pluginu
Cesta k pluginu může být pojmenována speciálně. Hodí se pro pluginy, které by se načítaly zbytečně v jednom či druhém prostředí.
plugins/extend/admin.xxx/xxx.php
- plugin načítaný pouze v administraci (admin/index.php)plugins/extend/web.xxx/xxx.php
- plugin načítaný pouze na webu (index.php)