5. Drupal Programavimas Patarimai
Kaip dirbti su drupal?
1 Diegiame drupal
2 Diegiame ir kon鍖g笛ruojame
reikiamus modulius
3 Dizainas ir lokalizacija
4 Ra邸ome speci鍖nius
modulius
6. Drupal Programavimas Patarimai
Drupal pritaikymas savo reikmms
8. Drupal Programavimas Patarimai
Moduliai
Views, CCK, Token, Pathauto,
FileField, Administration menu,
ImageField, ImageAPI, ImageCache,
Date, IMCE, Google Analytics, Image,
FCKeditor, Poormanscron, Advanced
help, CAPTCHA, Webform, Link,
Wysiwyg, Nodewords, Lightbox2, XML
sitemap, Backup and Migrate, Calendar, Devel, Panels
...
9. Drupal Programavimas Patarimai
Kada reikia savo modulio?
Klausimai
1 Ar tai dar nra 眺gyvendinta?
2 Ar ne眺manoma sukombinuoti keli迭 moduli迭?
3 Ar nra nieko pana邸aus?
11. Drupal Programavimas Patarimai
Drupal architekt笛ra arba k reikia 転inoti prie邸 pradedant
Ne OOP - proced笛rinis
programavimas
Modulin architekt笛ra
Design patterns:
inversion of control
presentation-abstraction-
control
(PAC)
14. Drupal Programavimas Patarimai
Diegimo instrukcijos: [modulis].install
Veiksmai, kurie atliekami diegiant modul眺.
function 鍖le鍖eld_install() {
content_notify(install, 鍖le鍖eld);
}
Migracij迭 tarp versij迭 proced笛ros.
function 鍖le鍖eld_update_2() {
cache_clear_all(*, cache_menu, TRUE);
return array();
}
15. Drupal Programavimas Patarimai
Hooks: Drupal varomoji jga
Kas yra hookai?
Moduli迭 funkcijos, kurios i邸kvieiamos tam tikrais u転klausos
apdorojimo (pvz. formos siuntimo) etapais drupal 邸erdies
nuo転i笛ra.
Fiksuotos formos funkcijos
function [modulis]_[hook](...) {
...
}
18. Drupal Programavimas Patarimai
Pavyzdys: detaliau
function kaunas_block($op = list, $delta = 0, $edit = array())
$op - atliekamas veiksmas
list - blok迭 sra邸as
con鍖gure - blok迭 kon鍖g笛ravimo forma
save - bloko nustatym迭 saugojimas
view - bloko i邸vedimas
$delta - bloko nr. (pagal sra邸)
$edit - kai $op == save - formos duomenys
19. Drupal Programavimas Patarimai
Pavyzdys: detaliau
if ($op == list) {
//prane邸ame apie tai, kokius blokus mokame i邸vesti
$blocks = array();
$blocks[0] = array(info => t(Kauno Drupal blokas),
weight => 0,
status => 1,
region => left);
return $blocks;
...
20. Drupal Programavimas Patarimai
Pavyzdys: rezultatas
21. Drupal Programavimas Patarimai
Meniu sistema
meniu valdymas
URL dispatch
prieigos kontrol
function hook_menu()
Gr転inamas masyvas
$items[url] = array(
title => antra邸t,
description => apra邸ymas,
page callback => puslapio funkcija,
access arguments => array(prieiga),
type => TIPAS,
);
22. Drupal Programavimas Patarimai
Meniu - pavyzdys
function kaunas_menu() {
$items = array();
$items[kaunas] = array(
title => Kauno konferencija,
description => Kauno konferencijos puslapis,
page callback => _kaunas_logo,
access arguments => array(access content),
type => MENU_NORMAL_ITEM,
);
return $items;
}
http://localhost/drupal/kaunas
23. Drupal Programavimas Patarimai
Form API
Formos elementas
$form[new][upload] = array(
#type => 鍖le,
#title => t(町kelk nauj fail),
#size => 40,
);
hookai:
hook_form - elemento redagavimo forma
hook_forms - modulio form迭 sra邸as
hook_form_alter - bet kurios form API formos keitimas
hook_[form_id]_alter - konkreios formos keitimas
24. Drupal Programavimas Patarimai
Form API - pavyzdys
function kaunas_form_user_login_alter(&$form, &$form_state) {
$form[kaunas] = array(
#type => checkbox,
#title => t("Esu i邸 Kauno"),
#required => TRUE,
);
}
25. Drupal Programavimas Patarimai
DB API(verta atskiro prane邸imo)
Nuo 6 versijos DB schema apra邸oma nebe SQLu.
Nuo 7 versijos u転klaus迭 konstravimui naudojamas PDO!
Lengvesnis darbas su kitais DB varikliais (postgreSQL, sqlite)
Kol kas:
$result = db_query_range(SELECT n.nid, n.title, n.created
FROM {node} n WHERE n.uid = %d,
$uid, 0, 10);
while ($node = db_fetch_object($result)) {
}
Daugiau: http://api.drupal.org/api/group/database/6
26. Drupal Programavimas Patarimai
Nel眺skite prie 邸erdies!
27. Drupal Programavimas Patarimai
Kodo standartai
1 Tarpai ir poslinkiai
2 Funkcij迭 i邸kvietimas ir deklaravimas
3 Komentarai ir dokumentacija
4 ...
5 http://drupal.org/coding-standards
町rankiai
scripts/code-style.pl kelias/iki/modulio.module
Coder modulis
kodo kult笛ra
moduli迭 migravimas 眺 naujesnes versijas
paprasiausios saugumo spragos
28. Drupal Programavimas Patarimai
Kodo na邸umas: ke邸avimas
1 statiniai kintamieji funkcijose
function my_module_function($reset = FALSE) {
static $my_data;
if (!isset($my_data) || $reset) {
...
2 Drupal ke邸avimo funkcijos
cache_set(mano_info, cache, serialize($data));
3 memcache modulis