11. Modulární architektura
Jen 5 základních modulů
přes 30 modulů v default instalaci
volitelná jsou i menu, hledání, překlady,
komentáře, blogy, fórum, ...
12. Základní moduly
<font color=quot;uglyquot;>Lorem</font> http://ipsum.com a spousta jiných zajímavostí ...
filter
<p>Lorem <a href=quot;http://ipsum.comquot;>http://ipsum.com</a> a spousta jiných zajímavostí ...</p>
node
user
system
blocks
13. Další moduly
„Navěsí se“ na základ
Svá data si uloží do svých tabulek
Příklad: comment.module
Node table
nid user id title text
1 1 Hello world
2 1 Lorem Ipsum ...
3 1 Had leze z díry vystrkuje kníry
Comments table
nid id replies to user id title text
1 1 NULL 1 Windowsy? Určitě jo!
2 2 NULL 1 Sic amet del requiem
1 3 1 2 Jojo… Windows rulez
14. Hook = komunikace mezi moduly
Jááá comments.module
Renderujeme node,
chcete k němu něco
přidat?
taxonomy.module Jááá
Kdo implementuje
hook_node( … )?
vote.module
Moi aussi
Drupal core
taxonomy module hook_nodeapi($node...):
$node[“tags”][“content”] =
OK, pošleme vám
array( “tag1”, “tag2”);
objekt node...
$node[“tags”][“weight”] = 60;
Přidejte a uberte co
potřebujete //mezi telo a komentare
15. Důležité hooky
Oprávnění – hook_perm()
function mymodule_perm() {
return array( 'access mymodule',
'administer mymodule');
}
Přidej do tabulky ‘oprávnění’ tato dvě
16. Důležité hooky
Menu a routing – hook_menu() položky
Název
function mymodule_menu() {
v menu
$items['admin/settings/uploadcv/edit/%'] = array(
'title' => 'Edit consultant',
'page callback' => 'drupal_get_form',
'page arguments' => array('uploadcv_admin_edit', 3, 4),
'access arguments' => array('administer uploadcv'),
'type' => MENU_CALLBACK,
'parent' => 'admin/settings/uploadcv',
'file' => 'uploadcv.admin.inc',
);
}
Přidej se do menu/routovací tabulky
17. Důležité hookyfunkce jejíž výstup
kde 3 a 4 = 3. a 4.
se pošle uživateli
parametr z url
(počítáno routing – hook_menu()
Menu a od 0)
function mymodule_menu() {
$items['admin/settings/uploadcv/edit/%'] = array(
'title' => 'Edit consultant',
'page callback' => 'drupal_get_form',
'page arguments' => array('uploadcv_admin_edit', 3, 4),
'access arguments' => array('administer uploadcv'),
'type' => MENU_CALLBACK,
s těmito třemi
'parent' => 'admin/settings/uploadcv',
'file' => 'uploadcv.admin.inc',
parametry
);
}
Přidej se do menu/routovací user musí mít
tabulky
tato práva
18. Důležité hooky
Menu a routing – hook_menu() položka nebude v
menu
function mymodule_menu() {
$items['admin/settings/uploadcv/edit/%'] = array(
'title' => 'Edit consultant',
'page callback' => 'drupal_get_form',
'page arguments' => array('uploadcv_admin_edit', 3, 4),
'access arguments' => array('administer uploadcv'),
'type' => MENU_CALLBACK,
rodič položky
'parent' => 'admin/settings/uploadcv',
(povede na něj odkaz)
'file' => 'uploadcv.admin.inc',
);
}
Přidej se do menu/routovací tabulky
soubor který se pro
toto volání includuje
21. Forms API
function mymodule_agreement() {
return drupal_get_form('uploadcv_accept_form');
zpracuj formulář s
}
tímto názvem
function mymodule_agreement_form() {
//definice formuláře
}
function mymodule_agreement_validate($form_id, $form_values) {
if ( $form_values['values']['legal_accept‘]==0 ) {
form_set_error('legal_accept', t('You must accept to continue.'));
} //podmínky – s nastavenou chybou formulář nezvaliduje
}
function mymodule_agreement_submit($form_id, $form_values) {
drupal_set_message(t('Thank you for agreeing.'));
drupal_goto(“login/nextstepquot;);
} //funkce _submit proběhne jen když _validate nenajde chybu
30. Konverze HTML pro Drupal:
index.htm → themes/tema/page.tpl.php
metadata → themes/tema/tema.info
přidání <?php print $blok; ?>
případně <?php if ($blok) { ?>wrapper<?php } ?>
… a pár povinných formalit
31. Kdo ostyluje zbytek?
Modul poskytuje:
může změnit šablona
Datovou strukturu
Funkci pro převod datové struktury na HTML
(konvence – vše je obalené divy s jednoznačnou třídou)
CSS pro ostylování svého HTML