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.x1.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.
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