5. Drupal Programavimas Patarimai
Kaip dirbti su drupal?
1 Diegiame drupal
2 Diegiame ir konfigūruojame
reikiamus modulius
3 Dizainas ir lokalizacija
4 Rašome specifinius
modulius
6. Drupal Programavimas Patarimai
Drupal pritaikymas savo reikmėms
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 nėra įgyvendinta?
2 Ar neįmanoma sukombinuoti kelių modulių?
3 Ar nėra 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)
12. Drupal Programavimas Patarimai
Modulio sandara
Kas yra modulis?
funkcionalumas
išvedimas
paskirtis
[modulis]/
modulis - aplankas
[modulis].info*
[modulis].module* sites/default/modules/..
[modulis].install sites/all/modules/..
… struktūra fiksuota
14. Drupal Programavimas Patarimai
Diegimo instrukcijos: [modulis].install
Veiksmai, kurie atliekami diegiant modulį.
function filefield_install() {
content_notify(’install’, ’filefield’);
}
Migracijų tarp versijų procedūros.
function filefield_update_2() {
cache_clear_all(’*’, ’cache_menu’, TRUE);
return array();
}
15. Drupal Programavimas Patarimai
Hooks: Drupal varomoji jėga
Kas yra hook’ai?
Modulių funkcijos, kurios iškviečiamos tam tikrais užklausos
apdorojimo (pvz. formos siuntimo) etapais drupal šerdies
nuožiūra.
Fiksuotos formos funkcijos
function [modulis]_[hook](...) {
...
}
23. Drupal Programavimas Patarimai
Form API
Formos elementas
$form[’new’][’upload’] = array(
’#type’ => ’file’,
’#title’ => t(’Įkelk naują failą’),
’#size’ => 40,
);
hook’ai:
hook_form - elemento redagavimo forma
hook_forms - modulio formų sąrašas
hook_form_alter - bet kurios form API formos keitimas
hook_[form_id]_alter - konkrečios 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 SQL’u.
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
paprasčiausios 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