Drupal 7. Zaawansowane programowanie
Book information
Description
Drupal to nie tylko kolejny, nieco lepszy od innych CMS. Ten system zarządzania treścią zrobił ostatnio oszałamiającą karierę jako doskonały framework do tworzenia wszelkiej maści aplikacji internetowych. Dzięki niezwykłej łatwości i szybkości, z jaką Drupal pozwala programistom tworzyć rozbudowane blogi, profesjonalne witryny korporacyjne czy serwisy społecznościowe, zainteresowanie tą technologią zaczęło dynamicznie wzrastać. Co więcej, choć już dziś wydaje się, że sposoby wykorzystania tego CMS-a ogranicza jedynie ludzka wyobraźnia, system jest wciąż intensywnie rozwijany przez liczną społeczność entuzjastów na całym świecie. Możliwość czerpania z ogromnych zasobów wiedzy tysięcy programistów poprawi jakość Twoich nawet najbardziej wyrafinowanych internetowych projektów. Jeśli chcesz tworzyć nowoczesne, rozbudowane witryny internetowe z wykorzystaniem Drupala 7, właśnie znalazłeś idealny podręcznik dla siebie! Omówiono tu wszystko, co będzie Ci potrzebne, począwszy od podstawowych zagadnień, takich jak architektura i struktura plików systemu, przez sposoby wykorzystania API formularzy czy dodawania własnych modułów w celu rozszerzania możliwości, aż po metody tworzenia bezpiecznego, wydajnego kodu. Dowiesz się więcej na temat pracy z bazą danych, uruchomienia własnej strony wyszukiwarki oraz korzystania z jQuery w Drupalu. Nauczysz się także sprawnie optymalizować Drupal i przeprowadzać skuteczne testy oraz poznasz wiele innych praktycznych zagadnień, które sprawią, że bez trudu zrozumiesz zasady działania tego CMS-a oraz pokonasz wszelkie problemy napotykane w trakcie pracy. Z tej książki dowiesz się między innymi: Todd Tomlinson - przez piętnaście lat zajmował się projektowaniem, rozwijaniem, wdrażaniem i konserwacją zaawansowanych rozwiązań internetowych. Pracował m.in. w Oracle Corporation jako specjalista od opracowywania planów strategicznych pod kątem najlepszego wykorzystania możliwości Internetu. Todd uwielbia Drupal, który jest przez niego wykorzystywany jako główne narzędzie do tworzenia przyjemnych dla oka i funkcjonalnych witryn. Jest autorem książki "Drupal 7. Od podstaw". John K. VanDyk jest starszym architektem aplikacji webowych w Lullabot — firmie zajmującej się szkoleniami i konsultingiem Drupala. Wcześniej był analitykiem i adiunktem na Stanowym Uniwersytecie Naukowo-Technicznym w Iowa (USA). Na swoim koncie ma już jedną książkę na temat tego CMS-a: "Pro Drupal Development. Second Edition". 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
Similar books
Kwantechizm - elementarz doktrynalny mechaniki kwantowej
Kwintesencja wszystkiego. Dwanaście eksperymentów, które zmieniły nasz świat
2024 · PDF
Pieśń komórek. Nowa epoka medycyny
2024 · PDF
Serce Europy
2014 · PDF
Depresja. Jak pokonać śmiertelny smutek
2021 · PDF
Śladami chasydzkich cadyków w Podkarpackiem
2008 · PDF
Historia Polski 1918-1945
2006 · PDF
Systemy teletransmisyjne
2006 · PDF