JoomlaDev.eu - Vše o vývoji CMS Joomla
Redakční systém WordPress - Nejlepší redakční systém zdarma - WordPress
Drupal nejen pro vývojáře - II. díl - háky |
|
|
|
| Neděle, 15 Listopad 2009 18:16 |
V minulém dílu jsme si řekli něco o modulech, blocích a stručně jsme probrali i háky (hooks). V těch budeme dnes pokračovat, povíme si o nich podrobněji a ukážeme si jednoduché kousky kódu. Příště si řekneme něco o URL adresách, uživatelích a šablonách, ale nebudeme předbíhat. Jdeme na háky.
Pokud chceme naprogramovat modul, je třeba vytvořit funkce z již předem předdefinovaných funkcí, které nám Drupal nabízí. Tyto háky dovolují systému volat vhodné PHP funkce například při prohlížení stránky, nebo při ukládání informací z databáze. Každý hák má definovaných několik parametrů a návratovou hodnotu. Jméno háčku se vždy skládá z předpony, která udává název modulu daného rozhraní. Například pokud chceme smazat uzel oznámení (annoucement) bude funkce háčku: announcement_delete(...){....}
Takovýto vytvořený háček vlastního modulu umožňuje mazání informací z databáze. Pro zobrazení uzlu by jsme použili například announcement_view(...) atd. Nyní se podíváme na několik často používaných háčků, které se používají k vytvoření modulů. Uvedené kódy jsou pouze ilustrativní, mají za cíl pouze zobrazit základní možnosti daného typu háku. Háky přístupu k uzlům<module_name>_permHáček _perm udává práva přístupu k danému uzlu (permission), která lze na stavit zvlášť pro každého uživatele. function node_perm() {
Modul uzlu rozlišuje mezi administrací uzlů (administer nodes), přístupu k obsahu (acces content), zobrazení revize (view revisions) a vrácení revize (revert revisions). Tyto řetězce jsou využívány k přidělování práv jednotlivým uživatelským typům Výčet práv, které jsou běžně k dispozici vidíme na obrázku ![]() Můžeme si ovšem vytvořit vlastní. Přidělení práv uživatelům daného řetězce můžeme snadno zjistit pomocí funkce user_access('obsah k pristupu'), ta nám vrací true, pokud daný uživatel má právo přístupu k danému obsahu. <module_name>_accessAcces háček umožňuje zamezit přístupu k operacím pracujícím s obsahem (prohlížení, mazání, editování,...). Například pokud chceme při akci editace, nebo mazání zjistit, jestli je uživatel autorem daného obsahu, nebo má právo tyto akce právádět napíšeme hák takto: function <module_name>_access($op, $node) {
Háky zobrazení uzlu<module_name>_formUmožňuje zobrazení vstupních polí, checkboxů, rozevíracích seznamů apod. O formulářovém API jsme již mluvili v tomto článku:http://www.redakcni-systemy.com/index.php/drupal/clanky/49-pruvodce-formularovym-api-tvorba-a-sablonovani-formularu<module_name>_validateValidace není nic jiného než kontrola, formulářových polí, zda-li jsou platné (mají správný formát, jsou vyplněny).<module_name>_submitUmožňuje změnu dat vyplňěných ve formuláři ještě předtím, než budou odeslány do databáze, souboru....<module_name>_viewTento hák zobrazuje data do HTML podoby Jak již název napovídá, jedná se o menu hák, jež vrací seznam položek, které se mají v menu zobrazit, každá položka obsahuje jedinečnou URL adresu. Ukázka kódu je níže: function <module_name>_menu() {
Jak vidíme, zde je vložena pouze jedna položka, v klasickém menu by jich bylo samozřejmě více.
Tento hák se využívá při interakci s ostatními moduly na stránce. Háky uzlu databázePodle názvu je jasné, že tyto háky pracují s databází. Při vytváření nového modulu se téměř pravidelně přidává i nová tabulka do databáze tak, aby zobrazované informace byly uloženy v modulu. K ukládání, editování a mazání informací slouží následující háky:<module_name>_loadVytažení požadovaných informací z databáze.
function <module_name>_load($node) {
Na příkladu vidíme, že jde o klasický MySQL dotaz, návratová hodnota je pole vyhovujících záznamů. Další háky už nebudu popisovat. Jedná se o háky pro úpravu (
|
http://drupal.org/project/print
Zaujala mne možnost exportovat články na Vašem webu do pdf.
Rád bych se Vás zeptal, jak jste tento export do pdf implementoval. Stačí mi tip na použitý modul či funkci.
Předem děkuji.