0
Drupal                       Programavimas                 Patarimai




         Drupal programavimas: principai ir patar...
Drupal    Programavimas   Patarimai




         Domas Monkus
Drupal            Programavimas   Patarimai



Kas yra drupal?
Drupal            Programavimas   Patarimai



Ką gali drupal?
Drupal                                  Programavimas   Patarimai



Kaip dirbti su drupal?




         1   Diegiame drup...
Drupal                 Programavimas   Patarimai



Drupal pritaikymas savo reikmėms
Drupal                   Programavimas   Patarimai



Standartiniai drupal moduliai
Drupal                                     Programavimas    Patarimai



Moduliai




    Views, CCK, Token, Pathauto,
   ...
Drupal                     Programavimas                   Patarimai



Kada reikia savo modulio?




              Klausi...
Drupal                 Programavimas   Patarimai



Drupal šerdies komponentai
Drupal                             Programavimas                    Patarimai



Drupal architektūra         arba ką reiki...
Drupal                        Programavimas                     Patarimai



Modulio sandara


         Kas yra modulis?
 ...
Drupal                                Programavimas                   Patarimai



Modulio informacija: [modulis].info

  ...
Drupal                             Programavimas       Patarimai



Diegimo instrukcijos: [modulis].install



         Ve...
Drupal                               Programavimas                      Patarimai



Hooks:        Drupal varomoji jėga


...
Drupal             Programavimas   Patarimai



Hook’ų daugėja..
Drupal                                          Programavimas                       Patarimai



Pavyzdys: blokai
        ...
Drupal                            Programavimas                       Patarimai



Pavyzdys: detaliau



         function...
Drupal                                Programavimas                   Patarimai



Pavyzdys: detaliau



         if ($op ...
Drupal                 Programavimas   Patarimai



Pavyzdys: rezultatas
Drupal                            Programavimas   Patarimai



Meniu sistema

         meniu valdymas
         URL dispatc...
Drupal                                Programavimas               Patarimai



Meniu - pavyzdys


         function kaunas...
Drupal                                  Programavimas                 Patarimai



Form API


         Formos elementas
  ...
Drupal                             Programavimas                         Patarimai



Form API - pavyzdys

         functi...
Drupal                           Programavimas                            Patarimai



DB API(verta atskiro pranešimo)


 ...
Drupal                    Programavimas   Patarimai



Nelįskite prie šerdies!
Drupal                                  Programavimas            Patarimai



Kodo standartai


           1   Tarpai ir p...
Drupal                               Programavimas                Patarimai



Kodo našumas: kešavimas



         1   sta...
Drupal                                 Programavimas             Patarimai



Kodo našumas: atmintis



         Modulio s...
Drupal                         Programavimas                      Patarimai



Testavimas




         simpletest modulis
...
Drupal                                  Programavimas                                        Patarimai



Įrankiai




   ...
Drupal                        Programavimas            Patarimai



Kur ieškoti pagalbos?




         drupal.org
        ...
Drupal   Programavimas   Patarimai




         Klausimai?
Upcoming SlideShare
Loading in...5
×

Drupal Programavimas: praktika ir patarimai

2,662

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,662
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Drupal Programavimas: praktika ir patarimai"

  1. 1. Drupal Programavimas Patarimai Drupal programavimas: principai ir patarimai Įvadas pradedantiems Domas Monkus domas@monkus.lt :: http://domas.monkus.lt 2009 lapkričio 3 d. Drupal konferencija Kaune
  2. 2. Drupal Programavimas Patarimai Domas Monkus
  3. 3. Drupal Programavimas Patarimai Kas yra drupal?
  4. 4. Drupal Programavimas Patarimai Ką gali drupal?
  5. 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. 6. Drupal Programavimas Patarimai Drupal pritaikymas savo reikmėms
  7. 7. Drupal Programavimas Patarimai Standartiniai drupal moduliai
  8. 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. 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?
  10. 10. Drupal Programavimas Patarimai Drupal šerdies komponentai
  11. 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. 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
  13. 13. Drupal Programavimas Patarimai Modulio informacija: [modulis].info Modulio informacija. Reikalinga modulių posistemei: modulių priklausomybės, versijos, aprašymai, grupavimas. Tekstinis failas. name = FileField description = Defines a file field type. dependencies[] = content package = CCK core = 6.x php = 5.2 version = "6.x-3.0-alpha5" core = "6.x" project = "filefield" datestamp = "1223412644"
  14. 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. 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](...) { ... }
  16. 16. Drupal Programavimas Patarimai Hook’ų daugėja..
  17. 17. Drupal Programavimas Patarimai Pavyzdys: blokai kaunas.module <?php function kaunas_block($op = ’list’, $delta = 0, $edit = array()) { if ($op == ’list’) { //pranešame apie tai, kokius blokus mokame paišyti $blocks = array(); $blocks[0] = array(’info’ => t(’Kauno Drupal blokas’), ’weight’ => 0, ’status’ => 1, ’region’ => ’left’); return $blocks; } else if ($op == ’view’) { //grąžiname bloko turinį // $delta - bloko nr. if ($delta == 0) { $block = array(’subject’ => t(’Drupal Kaune!’), ’content’ => _kaunas_logo()); return $block; } } } function _kaunas_logo() { //bloko turinys return ’<a href="http://drupal.lt/node/279"> <img src="http://drupal.lt/files/Image/DruapalCon2009_125.jpg" alt="Drupal konferencija" /> </a>’; }
  18. 18. Drupal Programavimas Patarimai Pavyzdys: detaliau function kaunas_block($op = ’list’, $delta = 0, $edit = array()) $op - atliekamas veiksmas ’list’ - blokų sąrašas ’configure’ - blokų konfigūravimo forma ’save’ - bloko nustatymų saugojimas ’view’ - bloko išvedimas $delta - bloko nr. (pagal sąrašą) $edit - kai $op == ’save’ - formos duomenys
  19. 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. 20. Drupal Programavimas Patarimai Pavyzdys: rezultatas
  21. 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. 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. 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. 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. 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. 26. Drupal Programavimas Patarimai Nelįskite prie šerdies!
  27. 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. 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
  29. 29. Drupal Programavimas Patarimai Kodo našumas: atmintis Modulio skaidymas į atskirus failus: $items[’views/ajax’] = array( ’title’ => ’Views’, ’page callback’ => ’views_ajax’, ’access callback’ => ’user_access’, ’access arguments’ => array(’access content’), ’description’ => ’Ajax callback for view loading.’, ’file’ => ’includes/ajax.inc’, ’type’ => MENU_CALLBACK, );
  30. 30. Drupal Programavimas Patarimai Testavimas simpletest modulis unit testai neatskiriama Drupal šerdies patch review proceso dalis Drupal 7 - 82% testų padengimas
  31. 31. Drupal Programavimas Patarimai Įrankiai Versijų kontrolė CVS, SVN, git, darcs, bazaar .. Naujasia drupal versija iš CVS: cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal checkout drupal Moduliai: devel - viskas nuo loginimo, dizaino nagrinėjimo iki pavyzdinio turinio generavimo coder - kodo kultūra drush - drupal komandinėje eilutėje
  32. 32. Drupal Programavimas Patarimai Kur ieškoti pagalbos? drupal.org #drupal, #drupal-support (irc.freenode.net) drupal.lt
  33. 33. Drupal Programavimas Patarimai Klausimai?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×