Drupal Cms Prezentace

869 views

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
869
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Drupal Cms Prezentace

  1. 1. Drupal CMS
  2. 2. CMS: píšu jen specifickou funkčnost Jak to funguje?
  3. 3. Modularita = znovupoužitelnost <ul><li>Modulární architektura </li></ul><ul><li>Modul ární témata </li></ul><ul><li>Vývoj vlastního modulu – Drupal API </li></ul>
  4. 4. Instalace: next, next, next ...
  5. 10. Modulární architektura
  6. 11. Modulární architektura <ul><li>Jen 5 základních modulů </li></ul><ul><li>přes 30 modulů v default instalaci </li></ul><ul><ul><li>volitelná jsou i menu, hledání, překlady, komentáře, blogy, fórum, ... </li></ul></ul>
  7. 12. Základní moduly node blocks user <font color=&quot;ugly&quot;>Lorem</font> http://ipsum.com a spousta jiných zajímavostí ... filter <p>Lorem <a href=&quot;http://ipsum.com&quot;>http://ipsum.com</a> a spousta jiných zajímavostí ...</p> system
  8. 13. Další moduly <ul><li>„ Navěsí se“ na základ </li></ul><ul><li>Svá data si uloží do svých tabulek </li></ul><ul><li>Příklad: comment.module </li></ul>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
  9. 14. Hook = komunikace mezi moduly Renderujeme node, chcete k němu něco přidat? Kdo implementuje hook_ node ( … )? Drupal core comments.module taxonomy.module vote.module Jááá Jááá Moi aussi OK, pošleme vám objekt node... P řidejte a uberte co potřebujete taxonomy module hook_nodeapi($node...) : $node[“tags”][“content”] = array( “tag1”, “tag2”); $node[“tags”][“weight”] = 60; //mezi telo a komentare
  10. 15. Důležité hooky <ul><li>Oprávnění – hook _perm() </li></ul><ul><ul><li>function mymodule _perm () { </li></ul></ul><ul><ul><li>return array( 'access mymodule ', </li></ul></ul><ul><ul><li>'administer mymodule '); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>P řidej do tabulky ‘ oprávnění ’ tato dvě </li></ul></ul>
  11. 16. Důležité hooky <ul><li>Menu a routing – hook _ menu () </li></ul><ul><li>function mymodule _menu() { </li></ul><ul><li>$items['admin/settings/uploadcv/edit/%'] = array( </li></ul><ul><li>'title' => 'Edit consultant', </li></ul><ul><li>'page callback' => 'drupal_get_form', </li></ul><ul><li>'page arguments' => array('uploadcv_admin_edit', 3, 4), </li></ul><ul><li>'access arguments' => array('administer uploadcv'), </li></ul><ul><li>'type' => MENU_CALLBACK, </li></ul><ul><li>'parent' => 'admin/settings/uploadcv', </li></ul><ul><li>'file' => 'uploadcv.admin.inc', </li></ul><ul><li>); </li></ul><ul><li>} </li></ul><ul><ul><li>P řidej se do menu/routovací tabulky </li></ul></ul>N ázev položky v menu
  12. 17. Důležité hooky <ul><li>Menu a routing – hook _ menu () </li></ul><ul><li>function mymodule _menu() { </li></ul><ul><li>$items['admin/settings/uploadcv/edit/%'] = array( </li></ul><ul><li>'title' => 'Edit consultant', </li></ul><ul><li>'page callback' => 'drupal_get_form', </li></ul><ul><li>'page arguments' => array('uploadcv_admin_edit', 3, 4), </li></ul><ul><li>'access arguments' => array('administer uploadcv'), </li></ul><ul><li>'type' => MENU_CALLBACK, </li></ul><ul><li>'parent' => 'admin/settings/uploadcv', </li></ul><ul><li>'file' => 'uploadcv.admin.inc', </li></ul><ul><li>); </li></ul><ul><li>} </li></ul><ul><ul><li>P řidej se do menu/routovací tabulky </li></ul></ul>kde 3 a 4 = 3. a 4. parametr z url (počítáno od 0) user musí mít tato práva funkce jejíž výstup se pošle uživateli s těmito třemi parametry
  13. 18. Důležité hooky <ul><li>Menu a routing – hook _ menu () </li></ul><ul><li>function mymodule _menu() { </li></ul><ul><li>$items['admin/settings/uploadcv/edit/%'] = array( </li></ul><ul><li>'title' => 'Edit consultant', </li></ul><ul><li>'page callback' => 'drupal_get_form', </li></ul><ul><li>'page arguments' => array('uploadcv_admin_edit', 3, 4), </li></ul><ul><li>'access arguments' => array('administer uploadcv'), </li></ul><ul><li>'type' => MENU_CALLBACK, </li></ul><ul><li>'parent' => 'admin/settings/uploadcv', </li></ul><ul><li>'file' => 'uploadcv.admin.inc', </li></ul><ul><li>); </li></ul><ul><li>} </li></ul><ul><ul><li>P řidej se do menu/routovací tabulky </li></ul></ul>položka nebude v menu rodič položky (povede na něj odkaz) soubor který se pro toto volání includuje
  14. 19. Forms API
  15. 20. Forms API
  16. 21. Forms API <ul><li>function mymodule_agreement() { </li></ul><ul><li>return drupal_get_form(' uploadcv_accept_form '); </li></ul><ul><li>} </li></ul><ul><li>function mymodule_agreement _form () { </li></ul><ul><li>//definice formul áře </li></ul><ul><li>} </li></ul><ul><li>function mymodule_agreement _validate ($form_id, $form_values) { </li></ul><ul><li>if ( $form_values['values']['legal_accept‘]==0 ) { </li></ul><ul><li> form_set_error('legal_accept', t('You must accept to continue.')); </li></ul><ul><li>} //podmínky – s nastavenou chybou formulář nezvaliduje </li></ul><ul><li>} </li></ul><ul><li>function mymodule_agreement _submit ($form_id, $form_values) { </li></ul><ul><li>drupal_set_message(t('T hank you for agreeing. ')); </li></ul><ul><li>drupal_goto(“ login / nextstep &quot;); </li></ul><ul><li>} //funkce _ submit proběhne jen když _validate nenajde chybu </li></ul>zpracuj formul ář s tímto názvem
  17. 22. Forms API <ul><li>$form = array(); </li></ul><ul><li>$form['id'] = array( </li></ul><ul><li>'#type' => 'value', </li></ul><ul><li>'#value' => 'legal'); </li></ul><ul><li>$form['legal'] = array( </li></ul><ul><li>'#type' => 'fieldset', </li></ul><ul><li>'#title' => t('Terms and Conditions of Use'), </li></ul><ul><li>'#weight' => 29 ); </li></ul><ul><li>$form['legal']['conditions'] = array( </li></ul><ul><li>'#type' => 'item', </li></ul><ul><li>'#title' => t('Terms & Conditions'), </li></ul><ul><li>'#value' => 'Legal Blah blah', </li></ul><ul><li>'#rows' => 10, </li></ul><ul><li>'#weight' => 0, </li></ul><ul><li>'#attributes' => array('readonly' => '') </li></ul><ul><li>); </li></ul><ul><li>$form['legal']['legal_accept'] = array( </li></ul><ul><li>'#type' => 'checkbox', </li></ul><ul><li>'#title' => t('I accept Terms & Conditions of Use'), </li></ul><ul><li>'#default_value' => 0, </li></ul><ul><li>'#weight' => 50, </li></ul><ul><li>'#required' => TRUE); </li></ul><ul><li>$form['save'] = array( </li></ul><ul><li>'#type' => 'submit', </li></ul><ul><li>'#value' => t('Proceed to upload'), </li></ul><ul><li>'#weight' => 100); </li></ul><ul><li>return $form; </li></ul>identifikace formul áře
  18. 23. Forms API <ul><li>$form = array(); </li></ul><ul><li>$form['id'] = array( </li></ul><ul><li>'#type' => 'value', </li></ul><ul><li>'#value' => 'legal'); </li></ul><ul><li>$form['legal'] = array( </li></ul><ul><li>'#type' => 'fieldset', </li></ul><ul><li>'#title' => t('Terms and Conditions of Use'), </li></ul><ul><li>'#weight' => 29 ); </li></ul><ul><li>$form['legal']['conditions'] = array( </li></ul><ul><li>'#type' => 'item', </li></ul><ul><li>'#title' => t('Terms & Conditions'), </li></ul><ul><li>'#value' => 'Legal Blah blah', </li></ul><ul><li>'#rows' => 10, </li></ul><ul><li>'#weight' => 0, </li></ul><ul><li>'#attributes' => array('readonly' => '') </li></ul><ul><li>); </li></ul><ul><li>$form['legal']['legal_accept'] = array( </li></ul><ul><li>'#type' => 'checkbox', </li></ul><ul><li>'#title' => t('I accept Terms & Conditions of Use'), </li></ul><ul><li>'#default_value' => 0, </li></ul><ul><li>'#weight' => 50, </li></ul><ul><li>'#required' => TRUE); </li></ul><ul><li>$form['save'] = array( </li></ul><ul><li>'#type' => 'submit', </li></ul><ul><li>'#value' => t('Proceed to upload'), </li></ul><ul><li>'#weight' => 100); </li></ul><ul><li>return $form; </li></ul>fieldset s legendem
  19. 24. Forms API <ul><li>$form = array(); </li></ul><ul><li>$form['id'] = array( </li></ul><ul><li>'#type' => 'value', </li></ul><ul><li>'#value' => 'legal'); </li></ul><ul><li>$form['legal'] = array( </li></ul><ul><li>'#type' => 'fieldset', </li></ul><ul><li>'#title' => t('Terms and Conditions of Use'), </li></ul><ul><li>'#weight' => 29 ); </li></ul><ul><li>$form['legal']['conditions'] = array( </li></ul><ul><li>'#type' => 'item', </li></ul><ul><li>'#title' => t('Terms & Conditions'), </li></ul><ul><li>'#value' => 'Legal Blah blah', </li></ul><ul><li>'#rows' => 10, </li></ul><ul><li>'#weight' => 0, </li></ul><ul><li>'#attributes' => array('readonly' => '') </li></ul><ul><li>); </li></ul><ul><li>$form['legal']['legal_accept'] = array( </li></ul><ul><li>'#type' => 'checkbox', </li></ul><ul><li>'#title' => t('I accept Terms & Conditions of Use'), </li></ul><ul><li>'#default_value' => 0, </li></ul><ul><li>'#weight' => 50, </li></ul><ul><li>'#required' => TRUE); </li></ul><ul><li>$form['save'] = array( </li></ul><ul><li>'#type' => 'submit', </li></ul><ul><li>'#value' => t('Proceed to upload'), </li></ul><ul><li>'#weight' => 100); </li></ul><ul><li>return $form; </li></ul>item – prostě text s nadpisem , je read only
  20. 25. Forms API <ul><li>$form = array(); </li></ul><ul><li>$form['id'] = array( </li></ul><ul><li>'#type' => 'value', </li></ul><ul><li>'#value' => 'legal'); </li></ul><ul><li>$form['legal'] = array( </li></ul><ul><li>'#type' => 'fieldset', </li></ul><ul><li>'#title' => t('Terms and Conditions of Use'), </li></ul><ul><li>'#weight' => 29 ); </li></ul><ul><li>$form['legal']['conditions'] = array( </li></ul><ul><li>'#type' => 'item', </li></ul><ul><li>'#title' => t('Terms & Conditions'), </li></ul><ul><li>'#value' => 'Legal Blah blah', </li></ul><ul><li>'#rows' => 10, </li></ul><ul><li>'#weight' => 0, </li></ul><ul><li>'#attributes' => array('readonly' => '') </li></ul><ul><li>); </li></ul><ul><li>$form['legal']['legal_accept'] = array( </li></ul><ul><li>'#type' => 'checkbox', </li></ul><ul><li>'#title' => t('I accept Terms & Conditions of Use'), </li></ul><ul><li>'#default_value' => 0, </li></ul><ul><li>'#weight' => 50, </li></ul><ul><li>'#required' => TRUE); </li></ul><ul><li>$form['save'] = array( </li></ul><ul><li>'#type' => 'submit', </li></ul><ul><li>'#value' => t('Proceed to upload'), </li></ul><ul><li>'#weight' => 100); </li></ul><ul><li>return $form; </li></ul>checkbox – povinn ý: required = TRUE
  21. 26. Forms API <ul><li>$form = array(); </li></ul><ul><li>$form['id'] = array( </li></ul><ul><li>'#type' => 'value', </li></ul><ul><li>'#value' => 'legal'); </li></ul><ul><li>$form['legal'] = array( </li></ul><ul><li>'#type' => 'fieldset', </li></ul><ul><li>'#title' => t('Terms and Conditions of Use'), </li></ul><ul><li>'#weight' => 29 ); </li></ul><ul><li>$form['legal']['conditions'] = array( </li></ul><ul><li>'#type' => 'item', </li></ul><ul><li>'#title' => t('Terms & Conditions'), </li></ul><ul><li>'#value' => 'Legal Blah blah', </li></ul><ul><li>'#rows' => 10, </li></ul><ul><li>'#weight' => 0, </li></ul><ul><li>'#attributes' => array('readonly' => '') </li></ul><ul><li>); </li></ul><ul><li>$form['legal']['legal_accept'] = array( </li></ul><ul><li>'#type' => 'checkbox', </li></ul><ul><li>'#title' => t('I accept Terms & Conditions of Use'), </li></ul><ul><li>'#default_value' => 0, </li></ul><ul><li>'#weight' => 50, </li></ul><ul><li>'#required' => TRUE); </li></ul><ul><li>$form['save'] = array( </li></ul><ul><li>'#type' => 'submit', </li></ul><ul><li>'#value' => t('Proceed to upload'), </li></ul><ul><li>'#weight' => 100); </li></ul><ul><li>return $form; </li></ul>submit weight rozhoduje o pořadí
  22. 27. Modul může: <ul><li>implementovat systémové hooky </li></ul><ul><li>vytvořit vlastní hook </li></ul><ul><li>využívat funkce Drupal API </li></ul><ul><ul><li>formuláře </li></ul></ul><ul><ul><li>překlad textů </li></ul></ul><ul><ul><li>abstrakce databáze </li></ul></ul><ul><ul><li>posílání mailů </li></ul></ul><ul><ul><li>upload souborů </li></ul></ul><ul><ul><li>hledání </li></ul></ul><ul><ul><li>node access – kontrola přístupu </li></ul></ul>
  23. 28. Modul ární témata
  24. 29. <?php print $header; ?> <?php print $content_top; ?> <?php if ($right): ?> <div id=&quot;sidebar-right“ > <?php =$right ?> </div> <?php endif; ?> [themes/tema/tema.info] regions[header] = header regions[right] = right sidebar regions[content_top] = content top
  25. 30. Konverze HTML pro Drupal: <ul><li>index.htm -> themes/tema/page.tpl.php </li></ul><ul><li>metadata -> themes/tema/tema.info </li></ul><ul><li>přidání <?php print $blok; ?> </li></ul><ul><ul><li>p řípadně <?php if ( $blok ) { ?>wrapper<?php } ?> </li></ul></ul><ul><li>… a pár povinných formalit </li></ul>
  26. 31. Kdo ostyluje zbytek? <ul><li>Modul poskytuje: </li></ul><ul><li>Datovou strukturu </li></ul><ul><li>Funkci pro převod datové struktury na HTML </li></ul><ul><ul><li>(konvence – vše je obalené divy s jednoznačnou třídou) </li></ul></ul><ul><li>CSS pro ostylování svého HTML </li></ul>m ůže změnit šablona
  27. 32. Time for… Namedropping
  28. 33. The Onion
  29. 34. SpreadFirefox.com
  30. 35. CreativeBits.org
  31. 36. Moby.com
  32. 37. playboy.de
  33. 38. Otázky?

×