Drupal 7. Zaawansowane programowanie 9788324638406, 9788324633678, 8324633677, 8324638407

Drupal to nie tylko kolejny, nieco lepszy od innych CMS. Ten system zarządzania treścią zrobił ostatnio oszałamiającą ka

184 63 10MB

Polish Pages 528 Year 2011

Report DMCA / Copyright

DOWNLOAD PDF FILE

Table of contents :
Spis treści
Przedmowa
O autorach
O korektorach merytorycznych
Podziękowania
Wstęp
Rozdział 1. Jak działa Drupal?
Czym jest Drupal?
Stos technologii
Rdzeń
Interfejs administratora
Moduły
Haki
Skórki
Segmenty
Pola
Bloki
Układ plików
Obsługa żądania
Zadania serwera WWW
Proces rozruchu (bootstrap)
Przetwarzanie żądania
Wyświetlanie danych
Podsumowanie
Rozdział 2. Tworzenie modułów
Tworzenie plików
Implementacja haka
Dodawanie ustawień charakterystycznych dla modułu
Tworzenie własnej sekcji administracyjnej
Wyświetlanie formularza ustawień
Walidacja ustawień wysłanych przez użytkownika
Przechowywanie ustawień
Tabela variables w akcji
Wczytywanie wartości za pomocą funkcji variable_get()
Co dalej?
Podsumowanie
Rozdział 3. Haki, działania i wyzwalacze
Jak działają zdarzenia i wyzwalacze?
Działania w praktyce
Interfejs użytkownika wyzwalaczy
Twoje pierwsze działanie
Przypisywanie akcji
Zmiana wyzwalaczy wywołujących działanie
Kontekst a działania
Przygotowanie kontekstu przez moduł wyzwalaczy
Modyfikacja działań przy użyciu funkcji action_info_after()
Określanie kontekstu
Metody przechowywania działań
Tabela actions
Identyfikatory działań
Bezpośrednie wywołanie działania przy użyciu metody actions_do()
Tworzenie własnych wyzwalaczy przy użyciu hook_trigger_info()
Dodawanie wyzwalaczy do istniejących haków
Podsumowanie
Rozdział 4. System menu
Mapowanie wywołań zwrotnych
Mapowanie adresów URL na funkcje
Tworzenie elementu menu
Argumenty wywołań zwrotnych strony
Wywołania zwrotne strony w innych plikach
Dodawanie łącza do bloku Nawigacja
Zagnieżdżanie menu
Kontrola dostępu
Lokalizacja i dostosowanie
Tworzenie wywołania zwrotnego tytułu
Znaki wieloznaczne w elementach menu
Podstawowe znaki wieloznaczne
Znaki wieloznaczne i parametry wywołań zwrotnych strony
Korzystanie z wartości dopasowanej przez znak wieloznaczny
Znaki wieloznaczne a zamiana parametrów
Przekazywanie dodatkowych argumentów do funkcji ładowania
Specjalne argumenty ładowania: %map i %index
Tworzenie ścieżek na podstawie znaków wieloznacznych z wykorzystaniem funkcji to_arg()
Znaki wieloznaczne i funkcja to_arg(): przypadki specjalne
Zastępowanie elementów menu w innych modułach
Zastępowanie hiperłączy menu w innych modułach
Rodzaje elementów menu
Typowe zadania
Przypisywanie wywołań zwrotnych bez dodawania hiperłączy do menu
Wyświetlanie elementów menu jako zakładek
Ukrywanie istniejących elementów menu
Korzystanie z menu.module
Typowe błędy
Podsumowanie
Rozdział 5. Praca z bazą danych
Określanie parametrów bazy danych
Jak działa warstwa abstrakcji bazy danych?
Łączenie się z bazą danych
Wykonywanie prostych zapytań
Pozyskiwanie wyników zapytań
Pobieranie pojedynczej wartości
Pobieranie wielu wierszy
Twórca zapytań i obiekty zapytań
Pobieranie ograniczonego zbioru wyników
Stronicowanie wyników zapytań
Przykłady typowych zapytań
Modyfikacje rekordów za pomocą funkcji drupal_write_record()
API schematów
Plik .install a schematy
Tworzenie tabel
Wykorzystywanie modułu schema
Mapowanie typów pól schematów na typy pól bazy danych
Deklarowanie wybranych typów kolumn za pomocą funkcji mysql_type
Zarządzanie tabelami
Usuwanie tabel przy deinstalacji modułu
Zmiana istniejących schematów za pomocą funkcji hook_schema_alter()
Zmiana zapytań istniejących w innych modułach za pomocą haka hook_query_alter()
Obsługa wielu baz danych w Drupalu
Tabele tymczasowe
Tworzenie własnego sterownika bazy danych
Podsumowanie
Rozdział 6. Obsługa użytkowników
Obiekt $user
Sprawdzanie stanu logowania użytkownika
Wprowadzenie do haków użytkownika
Sposób działania funkcji hook_user_view($account, $view_mode)
Proces rejestracji użytkownika
Zbieranie informacji o użytkownikach za pomocą modułu profile.module
Proces logowania
Dodawanie danych do obiektu $user w momencie ładowania
Kategorie informacji o użytkownikach
Logowanie zewnętrzne
Podsumowanie
Rozdział 7. Obsługa segmentów
Segment — co to takiego?
Nie wszystko jest segmentem
Tworzenie modułu segmentu
Tworzenie pliku .install
Tworzenie pliku .info
Tworzenie pliku .module
Udostępnianie informacji o rodzaju zawartości
Zmiana wywołań zwrotnych menu
Tworzenie uprawnień zależnych od typu segmentu za pomocą haka hook_permission()
Ograniczenie dostępu do typu segmentu za pomocą haka hook_node_access()
Dostosowywanie formularza segmentów do naszego typu segmentu
Walidacja pól za pomocą haka hook_validate()
Zapisywanie danych za pomocą haka hook_insert()
Aktualizowanie danych i interakcja z hakiem hook_update()
Usuwanie segmentów za pomocą haka hook_delete()
Modyfikowanie segmentów naszego typu za pomocą haka hook_load()
Hak hook_view()
Modyfikowanie segmentów, które nie należą do naszego typu za pomocą haków w postaci hook_node_xxxxx()
Sposób przechowywania segmentów
Tworzenie typu segmentu z własnymi typami zawartości
Ograniczanie dostępu do segmentów
Określanie uprawnień do segmentów
Proces obsługi dostępu segmentów
Podsumowanie
Rozdział 8. Obsługa pól
Tworzenie rodzajów zawartości
Dodawanie pól do rodzaju zawartości
Tworzenie własnego pola
Dodawanie pól z poziomu kodu
Podsumowanie
Rozdział 9. System skórek
Skórki
Instalacja gotowej skórki
Tworzenie skórki
Plik .info
Dodawanie obszarów do skórki
Dodawanie do skórki plików CSS
Dodawanie skryptów języka JavaScript
Dodawanie ustawień do skórki
Pliki szablonów — co, gdzie, jak
Zarys ogólny
Plik html.tpl.php
Przesłanianie plików szablonów
Pozostałe pliki szablonów
Przesłanianie skórkowalnych elementów
Przesłanianie plików szablonów
Dodawanie i modyfikowanie zmiennych szablonu
Moduł twórcy skórek
Podsumowanie
Rozdział 10. Bloki
Czym jest blok?
Opcje ustawień bloków
Rozmieszczenie bloków
Tworzenie bloku
Wykorzystywanie haków bloku
Tworzenie bloku
Włączanie bloku w zainstalowanych modułach
Przykłady widoczności bloków
Wyświetlanie bloku tylko dla użytkowników zalogowanych
Wyświetlanie bloku tylko dla użytkowników anonimowych
Podsumowanie
Rozdział 11. API formularzy
Przetwarzanie formularzy
Rozpoczęcie procesu
Określanie tokenu
Określanie ID
Pobieranie dostępnych definicji elementów formularza
Poszukiwanie funkcji walidacji
Poszukiwanie funkcji wysyłania formularza
Modyfikowanie formularzy przed ich utworzeniem
Tworzenie formularzy
Modyfikowanie formularzy po ich utworzeniu
Sprawdzenie, czy formularz został wysłany
Poszukiwanie funkcji skórki dla formularza
Modyfikowanie formularzy przed renderowaniem
Renderowanie formularza
Walidacja formularza
Wysyłanie formularza
Przekierowanie użytkownika
Tworzenie prostych formularzy
Właściwości formularza
Identyfikatory formularzy
Zbiory pól
Stosowanie skórek do formularzy
Wybór funkcji walidacji i przetwarzania za pomocą haka hook_forms()
Porządek wywołań funkcji skórek, walidacji i przetwarzania
Tworzenie funkcji walidacji
Wykorzystywanie zmiennej $form_state do przekazywania danych
Proces odbudowania formularza
Tworzenie funkcji przetwarzania
Modyfikowanie formularzy za pomocą haka hook_form_alter()
Przetwarzanie formularzy z poziomu kodu za pomocą funkcji drupal_form_submit()
Formularze dynamiczne
Właściwości API formularzy
Właściwości formularza
Właściwości dodawane do wszystkich elementów
Właściwości dostępne we wszystkich elementach
Elementy formularza
Podsumowanie
Rozdział 12. System filtrów
Filtry
Filtry i formaty tekstu
Instalacja filtru
Zastosowania filtrów
Tworzenie własnego filtru
Implementacja haka hook_filter_info()
Funkcja przetwarzania
Funkcja pomocnicza
Podsumowanie
Rozdział 13. Wyszukiwanie i indeksowanie informacji
Tworzenie własnej strony wyszukiwarki
Domyślny formularz wyszukiwarki
Formularz wyszukiwania zaawansowanego
Dodawanie formularza wyszukiwania
Wykorzystywanie indeksera HTML
Zastosowania indeksera
Jak działa indekser?
Podsumowanie
Rozdział 14. Obsługa plików
Metody udostępniania plików przez Drupal
Zarządzane i niezarządzane API Drupala
Pliki publiczne
Pliki prywatne
Ustawienia PHP
Obsługa wysyłanych plików
Pole wysyłania pliku
Wideo i audio
API plików
Schemat bazy danych
Typowe zadania i funkcje
Haki uwierzytelniania do pobierania
Podsumowanie
Rozdział 15. Obsługa kategorii
Struktura kategorii
Tworzenie słownika
Tworzenie terminów
Powiązanie słownika z rodzajem zawartości
Rodzaje kategorii
Płaska
Hierarchiczna
Wielohierarchiczna
Przeglądanie treści przy użyciu terminów
Wykorzystywanie operatorów AND i OR w adresach URL
Automatyczne kanały RSS
Przechowywanie kategorii
Słowniki budowane w modułach
Tworzenie słownika w obrębie modułu
Informowanie o zmianach w słowniku — haki kategorii
Typowe zadania
Wyświetlanie terminów taksonomii związanych z segmentem
Tworzenie własnych zapytań kategorii
Funkcja taxonomy_select_nodes()
Funkcje taksonomii
Pozyskiwanie informacji o słownikach
Dodawanie, modyfikacja i usuwanie słowników
Pobieranie informacji o terminach
Dodawanie, modyfikacja i usuwanie terminów
Pobieranie informacji o hierarchii terminów
Wyszukiwanie segmentów oznaczonych wybranymi terminami
Dodatkowe informacje
Podsumowanie
Rozdział 16. Obsługa pamięci podręcznej
Zastosowania pamięci podręcznej
Sposób działania pamięci podręcznej
Wykorzystywanie pamięci podręcznej w obrębie rdzenia
System menu
Pamięć podręczna a przefiltrowany tekst
Zmienne administracyjne i ustawienia modułów
Bloki
API pamięci podręcznej w praktyce
Podsumowanie
Rozdział 17. Sesje
Czym są sesje?
Sposób użycia sesji
Ustawienia związane z sesją
Plik .htaccess
Plik settings.php
Plik bootstrap.inc
Wymaganie cookies
Sposób przechowywania danych w sesji
Cykl życia sesji
Konwersacje w trakcie sesji
Pierwsza wizyta
Druga wizyta
Użytkownik zarejestrowany
Typowe zadania
Zmiana terminu ważności cookie
Zmiana nazwy sesji
Przechowywanie danych w sesji
Podsumowanie
Rozdział 18. jQuery w Drupalu
Czym jest jQuery?
JavaScript po staremu
Jak działa jQuery?
Wykorzystywanie identyfikatorów CSS
Wykorzystywanie selektora klasy CSS
jQuery + Drupal = ?
Twój pierwszy kod jQuery
Określanie elementu za pomocą ID
Łańcuchy wywołań
Dodawanie i usuwanie klas
Opakowywanie istniejących elementów
Zmiana wartości elementów CSS
Umieszczanie kodu JavaScript
Przesłanialny kod JavaScript
Tworzymy kontrolkę do głosowania w jQuery
Tworzenie modułu
Wykorzystywanie zachowań Drupala
Możliwości rozszerzenia modułu
Zgodność
Co dalej?
Podsumowanie
Rozdział 19. Lokalizacja i tłumaczenie
Włączanie modułu locale
Tłumaczenie interfejsu użytkownika
Łańcuchy znaków
Tłumaczenie łańcuchów znaków za pomocą funkcji t()
Zamiana wbudowanych łańcuchów znaków na własne
Tworzenie nowego tłumaczenia
Generowanie plików .pot za pomocą modułu translation template extractor
Tworzenie pliku .pot dla Twojego modułu
Tworzenie plików .pot dla całej witryny
Instalacja pełnego tłumaczenia dla języka
Ustawianie tłumaczenia w trakcie instalacji
Instalacja tłumaczenia w istniejącej witrynie
Obsługa języków z pisownią od prawej do lewej
Wybór języka
Domyślny
URL
Przeglądarka
Tylko URL
Tłumaczenie treści
Wprowadzenie do modułu tłumaczenia treści
Obsługa wersji językowych
Obsługa wersji językowych dla tłumaczenia
Pliki związane z lokalizacją i tłumaczeniem
Dodatkowe informacje
Podsumowanie
Rozdział 20. XML-RPC
XML-RPC — co i jak?
Wymagania wstępne dla XML-RPC
Klienci XML-RPC
Przykład klienta XML-RPC — pobieramy czas
Przykład klienta XML-RPC — pobieramy nazwę stanu
Obsługa błędów u klienta XML-RPC
Prosty serwer XML-RPC
Przypisywanie nazw metod za pomocą haka hook_xmlrpc()
Automatyczna walidacja typów parametrów za pomocą haka hook_xmlrpc()
Wbudowane metody XML-RPC
system.listMethods
system.methodSignature
system.methodHelp
system.getCapabilities
system.multiCall
Podsumowanie
Rozdział 21. Tworzenie bezpiecznego kodu
Obsługa danych przesyłanych przez użytkownika
Typy danych
check_plain() i t() — metody na oczyszczenie danych
Wykorzystywanie funkcji filter_xss() do zapobiegania atakom typu cross-site scripting
Wykorzystywanie haka filter_xss_admin()
Bezpieczna obsługa adresów URL
Tworzenie bezpiecznych zapytań za pomocą funkcji db_query()
Kontrola dostępu do danych prywatnych — hak hook_query_alter()
Zapytania dynamiczne
Uprawnienia i wywołania zwrotne strony
Ataki typu CSRF (Cross-Site Request Forgery)
Bezpieczeństwo plików
Uprawnienia do plików
Pliki chronione
Wysyłanie plików
Nazwy plików i ścieżki
Kodowanie nagłówków poczty elektronicznej
Pliki w środowisku produkcyjnym
Obsługa SSL
Samodzielne pliki PHP
Bezpieczeństwo i AJAX, czyli atak przez powtórzenie żądania
Bezpieczeństwo formularzy API
Ochrona konta superużytkownika
Podsumowanie
Rozdział 22. Dobre praktyki programistyczne
Standardy kodowania
Wcięcia i białe znaki
Operatory
Rzutowanie
Instrukcje kontroli przepływu
Wywołania funkcji
Deklaracje funkcji
Nazwy funkcji
Wywołania konstruktorów
Tablice
Cudzysłowy
Złączanie łańcuchów znaków
Komentarze
Przykłady dokumentacji
Dokumentowanie stałych
Dokumentowanie funkcji
Dokumentowanie implementacji haków
Dołączanie kodu
Znaczniki kodu PHP
Średniki
Przykładowe adresy URL
Konwencje nazewnicze
Sprawdzanie stylu kodowania za pomocą modułu coder
Szybka nawigacja w kodzie Drupala za pomocą narzędzia grep
Podsumowanie
Rozdział 23. Optymalizacja Drupala
Pamięć podręczna — klucz do wydajności Drupala
Optymalizacja PHP
Przekierowanie pliku pamięci podręcznej kodu operacyjnego PHP na /dev/zero
Ustawienia puli procesów PHP
Dostosowywanie serwera Apache
mod_expires
Przenoszenie dyrektyw z pliku .htaccess do pliku httpd.conf
Preforkowanie MPM vs. Apache MPM Worker
Dopasowywanie rozmiaru puli Apache
Zmniejszanie czasu oczekiwania Apache
Wyłączenie nieużywanych modułów Apache
Nginx zamiast Apache — zmiana serwera WWW
Pressflow
Varnish
Normalizacja żądań przychodzących w celu zwiększenia wydajności Varnisha
Varnish: znajdywanie dodatkowych cookies
Boost
Boost a Varnish
Konfiguracja systemu Linux w serwerach o wysokim natężeniu
Używanie szybkich systemów plików
Serwery dedykowane a serwery wirtualne
Unikanie wywoływania zewnętrznych usług sieciowych
Obniżanie czasu oczekiwania serwera
Optymalizacja bazy danych
Włączenie pamięci podręcznej zapytań MySQL
Wydajność silnika MySQL InnoDB w systemie Windows
Wydajność Drupala
Pozbycie się błędów 404
Wyłączenie niewykorzystywanych modułów
Optymalizacje Drupala
Pamięć podręczna dla stron
Optymalizacja pasma
Czyszczenie tabeli sesji
Zarządzanie ruchem użytkowników zalogowanych
Wywoływanie programu cron
Architektury
Pojedynczy serwer
Odrębny serwer bazodanowy
Odrębny serwer bazodanowy i klaster serwerów WWW
Wiele serwerów baz danych
Znajdowanie wąskich gardeł
Serwer WWW z obciążonym procesorem
Serwer WWW nie dysponuje wystarczającą ilością pamięci RAM
Podsumowanie
Rozdział 24. Profile instalacji
Tworzenie nowego profilu instalacji
Plik enhanced.info
Plik enhanced.profile
Plik enhanced.install
Haki hook_install_tasks i hook_install_tasks_alter
Podsumowanie
Rozdział 25. Testowanie
Konfiguracja środowiska testowego
Tworzenie testów
Tworzenie testów
Asercje testowe
Podsumowanie
Dodatek A. Spis tabel bazy danych Drupala
Dodatek B. Zasoby
Programowanie
Repozytorium kodu Drupala (GIT)
Przykłady
Dokumentacja API Drupala
Porady dotyczące bezpieczeństwa
Aktualizacja modułów
Aktualizacja skórek
Podręczniki
Forum
Listy dyskusyjne
Development
Themes
Translations
Grupy użytkowników
Internet Relay Chat
Ameryka Północna
Europa
Azja
Ameryka Łacińska/Karaiby
Oceania
Afryka
Nagrania wideo
Dzienniki sieciowe
Konferencje
Obsługa Drupala
Skorowidz

Drupal 7. Zaawansowane programowanie
 9788324638406, 9788324633678, 8324633677, 8324638407

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Recommend Papers