SlideShare a Scribd company logo
1 of 14
Wprowadzenie do pisania
własnych modułów oraz do
     systemu menu.

                                     prezentujący:
                                 Agnieszka Cupek
               Programista serwisów internetowych
Moduły - wprowadzenie




Co to jest Moduł:
 
     to podstawowy element, na bazie którego funkcjonuje Drupal
 
     to element rozszerzający standardowe możliwości Drupala.


Rodzaje modułów:
 
     Moduły rdzenia – są to moduły dostarczone razem z standardową
     instalacją Drupala przechowywane w /modules
 
     Moduły dodatkowe – to wszystkie moduły tworzone przez
     społeczność Drupalową, rozszerzające możliwości Drupala. Baza
     modułów http://drupal.org/project/modules
Tworzenie modułu




Uwaga:
Wszystkie moduły dodatkowe umieszczamy w folderze
/sites/all/modules, gdzie możemy dodatkowo zastosować podział np.:
 
     Moduły dodatkowe napisane przez społeczność Drupalową
     przechowywane w folderze /contrib.
 ●
     Moduły dodatkowe napisane przez nas samych przechowywane w
     folderze /custom.
Podstawowe elementy modułu:
 
     Plik nazwa_modulu.info – plik konfiguracyjny umożliwiający
     prawidłowe rozpoznanie modułu.
 
     Plik nazwa_modulu.module – plik z kodem modułu.
Struktura pliku .info (1)




Struktura pliku .info wygląda następująco:
   name = First module
   description = My first module using hook_menu
   core = 7.x
   files[] = first_module.module
   *dependencies[] = 
   *dependencies[] = 
   *version = 7.x­1.0
   package = „Drupal idzie na studia”
   *php = 5.2

Oznaczenie:
  * ­ opcjonalnie
Struktura pliku .info (2)




Gdzie atrybut:

    name – określa nazwę modułu.

    description – zawiera opis modułu.

    core – określa wersję Drupala, do której został dostosowany moduł.

    dependencies[] ­ określa zależności od innych modułów.

    package – definiuje pakiet, do którego przynależy moduł.

    php – definiuje wersję PHP wymaganą przez moduł.

    version – definiuje wersję modułu.
Struktura pliku .module (1)


/**
 * Implements hook_menu().
 */
function first_module_menu() {
  $items['first_page'] = array(
    'title'            => 'This is first page',
    'page callback'    => 'first_page',
    'access callback'  => TRUE,
    'type'             => MENU_NORMAL_ITEM,
  );
  $items['hello/%'] = array(
    'title'            => 'This is second page',
    'page callback'    => 'second_page',
    'page arguments'   => array(1),
    'access callback'  => TRUE,
    'type'             => MENU_CALLBACK,
  );
  return $items;

}
Struktura pliku .module (2)



/**
 * Callback for the first page.
 */
function first_page() {
  return t('This is my first module');
}


/**
 * Callback for the second page.
 * 
 * @param string $name
 *   String with the user name.
 */
function second_page($name = NULL) {
  print t('Hello @name', array('@name' => $name));
}
System menu




System menu można potraktować jako trzy główne funkcjonalności
mające ze sobą związek:

    Mapowanie wywołań zwrotnych.

    Kontrola dostępu.

    Dostosowanie menu.
Mapowanie wywołań zwrotnych
hook_menu (1)




Atrybuty funkcji hook_menu:

    title – nieprzetłumaczalny tytuł elementu menu;

    page callback – funkcja wywoływana w celu wyświetlenia strony w
    momencie wywołania przez użytkownika danej ścieżki;

    page arguments – tablica argumentów przekazywanych do
    wywołania zwrotnego strony;

    access callback – funkcja zwracająca wartość logiczną, określającą
    czy użytkownik ma dostęp do danej strony;

    access arguments – tablica argumentów przekazywana do
    powyższej funkcji

    type – atrybut opisujący właściwości elementu menu;
hook_menu (2)




Dostępne wartości argumentu type:

    MENU_NORMAL_ITEM – zwykły element menu wyświetlany w
    strukturze menu, możliwy do zarządzania przez administratora

    MENU_CALLBACK – wywołanie zwrotne rejestrujące ścieżkę, gdy
    użytkownik wywoła dany URL wykona się zdefiniowana funkcja

    MENU_LOCAL_TASK – elementy menu wyświetlane są jako
    zakładki
●
    MENU_DEFAULT_LOCAL_TASK – element menu wyświetlany jako
    zakładka domyślna
Kontrola dostępu




W przykładzie zastosowaliśmy:
   'access callback'  => TRUE

Co oznacza, że każdy użytkownik ma dostęp do elementu menu.


Jak kontrolować dostęp do menu?
Wystarczy podczas definiowania elementu menu ustawić atrybuty:
   'access callback'   => 'user_access',
   'access arguments'  => array('access goodbye')




Funkcja user_access() - jest domyślną funkcją sprawdzającą dostęp
użytkownika.
Standardy




Pisząc moduły należy stosować się do obowiązujących standardów
Drupalowych.
Dlaczego?
Ponieważ moduły pisane są przez społeczność Drupalową stosowanie
się do standardów ułatwia i usprawnia pracę innych ludzi.
Szczegółowe konwencje programistyczne obowiązujące w Drupalu
znaleźć można na stronie http://drupal.org/coding-standards


Narzędzie wspierające programistów:

    Moduł Coder http://drupal.org/project/coder
Dziękuję za uwagę

More Related Content

Similar to Wprowadzenie do pisania własnych modułów oraz do systemu menu.

Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]Droptica
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Grzegorz Bartman
 
Struktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią DrupalStruktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią DrupalGrzegorz Bartman
 
Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Droptica
 
Exam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationExam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationMaciej Zbrzezny
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznieSages
 
Drupal Context - Agnieszka Cupek
Drupal Context - Agnieszka CupekDrupal Context - Agnieszka Cupek
Drupal Context - Agnieszka CupekGrzegorz Bartman
 
DrupalDay podstawy systemu Drupal (Wersja skrócona)
DrupalDay podstawy systemu Drupal (Wersja skrócona)DrupalDay podstawy systemu Drupal (Wersja skrócona)
DrupalDay podstawy systemu Drupal (Wersja skrócona)Grzegorz Bartman
 
Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]
Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]
Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]Droptica
 
Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]Grzegorz Bartman
 
My littlemvc 2008 official
My littlemvc 2008 officialMy littlemvc 2008 official
My littlemvc 2008 officialskowronkow
 
Drupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
Drupal Rules - Drupal Idzie Na Studia - Jarosław SobieckiDrupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
Drupal Rules - Drupal Idzie Na Studia - Jarosław SobieckiGrzegorz Bartman
 
Drupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor BurboDrupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor BurboGrzegorz Bartman
 

Similar to Wprowadzenie do pisania własnych modułów oraz do systemu menu. (15)

Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]Devel - przegląd możliwości modułu [PL]
Devel - przegląd możliwości modułu [PL]
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Struktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią DrupalStruktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią Drupal
 
Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]Migrate API w Drupalu [PL]
Migrate API w Drupalu [PL]
 
Exam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationExam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows Application
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
 
Drupal Context - Agnieszka Cupek
Drupal Context - Agnieszka CupekDrupal Context - Agnieszka Cupek
Drupal Context - Agnieszka Cupek
 
DrupalDay podstawy systemu Drupal (Wersja skrócona)
DrupalDay podstawy systemu Drupal (Wersja skrócona)DrupalDay podstawy systemu Drupal (Wersja skrócona)
DrupalDay podstawy systemu Drupal (Wersja skrócona)
 
Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]
Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]
Drupal Commerce - konfiguracja prostego sklepu internetowego [PL]
 
Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]Podstawowe informacje o szablonach w Drupalu [openBIT]
Podstawowe informacje o szablonach w Drupalu [openBIT]
 
My littlemvc 2008 official
My littlemvc 2008 officialMy littlemvc 2008 official
My littlemvc 2008 official
 
Drupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
Drupal Rules - Drupal Idzie Na Studia - Jarosław SobieckiDrupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
Drupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
 
Ansible w praktyce
Ansible w praktyceAnsible w praktyce
Ansible w praktyce
 
Drupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor BurboDrupal Feeds - Wiktor Burbo
Drupal Feeds - Wiktor Burbo
 

More from Grzegorz Bartman

Encje w drupalu - DrupalCamp Wroclaw 2015
Encje w drupalu - DrupalCamp Wroclaw 2015Encje w drupalu - DrupalCamp Wroclaw 2015
Encje w drupalu - DrupalCamp Wroclaw 2015Grzegorz Bartman
 
Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?
Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?
Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?Grzegorz Bartman
 
Automatyzacja w tworzeniu aplikacji opartych Drupala
Automatyzacja w tworzeniu aplikacji opartych DrupalaAutomatyzacja w tworzeniu aplikacji opartych Drupala
Automatyzacja w tworzeniu aplikacji opartych DrupalaGrzegorz Bartman
 
WYSIWYG w Drupalu 7 - Tomasz Rychter
WYSIWYG w Drupalu 7 - Tomasz RychterWYSIWYG w Drupalu 7 - Tomasz Rychter
WYSIWYG w Drupalu 7 - Tomasz RychterGrzegorz Bartman
 
Szkolenie drupal-podstawy 2
Szkolenie drupal-podstawy 2Szkolenie drupal-podstawy 2
Szkolenie drupal-podstawy 2Grzegorz Bartman
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Grzegorz Bartman
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Grzegorz Bartman
 
Drupal 6 - podstawy - www.openbit.pl
Drupal 6 - podstawy - www.openbit.plDrupal 6 - podstawy - www.openbit.pl
Drupal 6 - podstawy - www.openbit.plGrzegorz Bartman
 

More from Grzegorz Bartman (9)

Encje w drupalu - DrupalCamp Wroclaw 2015
Encje w drupalu - DrupalCamp Wroclaw 2015Encje w drupalu - DrupalCamp Wroclaw 2015
Encje w drupalu - DrupalCamp Wroclaw 2015
 
Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?
Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?
Dlaczego Twoja kolejna aplikacja powinna bazować na platformie Drupal?
 
Automatyzacja w tworzeniu aplikacji opartych Drupala
Automatyzacja w tworzeniu aplikacji opartych DrupalaAutomatyzacja w tworzeniu aplikacji opartych Drupala
Automatyzacja w tworzeniu aplikacji opartych Drupala
 
WYSIWYG w Drupalu 7 - Tomasz Rychter
WYSIWYG w Drupalu 7 - Tomasz RychterWYSIWYG w Drupalu 7 - Tomasz Rychter
WYSIWYG w Drupalu 7 - Tomasz Rychter
 
Drupal 7 training - Views
Drupal 7 training - ViewsDrupal 7 training - Views
Drupal 7 training - Views
 
Szkolenie drupal-podstawy 2
Szkolenie drupal-podstawy 2Szkolenie drupal-podstawy 2
Szkolenie drupal-podstawy 2
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2
 
Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2Openbit szkolenie-drupal-podstawy 2
Openbit szkolenie-drupal-podstawy 2
 
Drupal 6 - podstawy - www.openbit.pl
Drupal 6 - podstawy - www.openbit.plDrupal 6 - podstawy - www.openbit.pl
Drupal 6 - podstawy - www.openbit.pl
 

Wprowadzenie do pisania własnych modułów oraz do systemu menu.

  • 1. Wprowadzenie do pisania własnych modułów oraz do systemu menu. prezentujący: Agnieszka Cupek Programista serwisów internetowych
  • 2. Moduły - wprowadzenie Co to jest Moduł:  to podstawowy element, na bazie którego funkcjonuje Drupal  to element rozszerzający standardowe możliwości Drupala. Rodzaje modułów:  Moduły rdzenia – są to moduły dostarczone razem z standardową instalacją Drupala przechowywane w /modules  Moduły dodatkowe – to wszystkie moduły tworzone przez społeczność Drupalową, rozszerzające możliwości Drupala. Baza modułów http://drupal.org/project/modules
  • 3. Tworzenie modułu Uwaga: Wszystkie moduły dodatkowe umieszczamy w folderze /sites/all/modules, gdzie możemy dodatkowo zastosować podział np.:  Moduły dodatkowe napisane przez społeczność Drupalową przechowywane w folderze /contrib. ● Moduły dodatkowe napisane przez nas samych przechowywane w folderze /custom. Podstawowe elementy modułu:  Plik nazwa_modulu.info – plik konfiguracyjny umożliwiający prawidłowe rozpoznanie modułu.  Plik nazwa_modulu.module – plik z kodem modułu.
  • 4. Struktura pliku .info (1) Struktura pliku .info wygląda następująco: name = First module description = My first module using hook_menu core = 7.x files[] = first_module.module *dependencies[] =  *dependencies[] =  *version = 7.x­1.0 package = „Drupal idzie na studia” *php = 5.2 Oznaczenie:   * ­ opcjonalnie
  • 5. Struktura pliku .info (2) Gdzie atrybut:  name – określa nazwę modułu.  description – zawiera opis modułu.  core – określa wersję Drupala, do której został dostosowany moduł.  dependencies[] ­ określa zależności od innych modułów.  package – definiuje pakiet, do którego przynależy moduł.  php – definiuje wersję PHP wymaganą przez moduł.  version – definiuje wersję modułu.
  • 6. Struktura pliku .module (1) /**  * Implements hook_menu().  */ function first_module_menu() {   $items['first_page'] = array(     'title'            => 'This is first page',     'page callback'    => 'first_page',     'access callback'  => TRUE,     'type'             => MENU_NORMAL_ITEM,   );   $items['hello/%'] = array(     'title'            => 'This is second page',     'page callback'    => 'second_page',     'page arguments'   => array(1),     'access callback'  => TRUE,     'type'             => MENU_CALLBACK,   );   return $items; }
  • 7. Struktura pliku .module (2) /**  * Callback for the first page.  */ function first_page() {   return t('This is my first module'); } /**  * Callback for the second page.  *   * @param string $name  *   String with the user name.  */ function second_page($name = NULL) {   print t('Hello @name', array('@name' => $name)); }
  • 8. System menu System menu można potraktować jako trzy główne funkcjonalności mające ze sobą związek:  Mapowanie wywołań zwrotnych.  Kontrola dostępu.  Dostosowanie menu.
  • 10. hook_menu (1) Atrybuty funkcji hook_menu:  title – nieprzetłumaczalny tytuł elementu menu;  page callback – funkcja wywoływana w celu wyświetlenia strony w momencie wywołania przez użytkownika danej ścieżki;  page arguments – tablica argumentów przekazywanych do wywołania zwrotnego strony;  access callback – funkcja zwracająca wartość logiczną, określającą czy użytkownik ma dostęp do danej strony;  access arguments – tablica argumentów przekazywana do powyższej funkcji  type – atrybut opisujący właściwości elementu menu;
  • 11. hook_menu (2) Dostępne wartości argumentu type:  MENU_NORMAL_ITEM – zwykły element menu wyświetlany w strukturze menu, możliwy do zarządzania przez administratora  MENU_CALLBACK – wywołanie zwrotne rejestrujące ścieżkę, gdy użytkownik wywoła dany URL wykona się zdefiniowana funkcja  MENU_LOCAL_TASK – elementy menu wyświetlane są jako zakładki ● MENU_DEFAULT_LOCAL_TASK – element menu wyświetlany jako zakładka domyślna
  • 12. Kontrola dostępu W przykładzie zastosowaliśmy: 'access callback'  => TRUE Co oznacza, że każdy użytkownik ma dostęp do elementu menu. Jak kontrolować dostęp do menu? Wystarczy podczas definiowania elementu menu ustawić atrybuty: 'access callback'   => 'user_access', 'access arguments'  => array('access goodbye') Funkcja user_access() - jest domyślną funkcją sprawdzającą dostęp użytkownika.
  • 13. Standardy Pisząc moduły należy stosować się do obowiązujących standardów Drupalowych. Dlaczego? Ponieważ moduły pisane są przez społeczność Drupalową stosowanie się do standardów ułatwia i usprawnia pracę innych ludzi. Szczegółowe konwencje programistyczne obowiązujące w Drupalu znaleźć można na stronie http://drupal.org/coding-standards Narzędzie wspierające programistów:  Moduł Coder http://drupal.org/project/coder