P R O G R A M M E R
T O
P R O G R A M M E R ™
V Profesjonalne tworzenie stron WWW
Dan Rahm el /
w rox
»•RlVXAM M ERTliPROCKAM M IR
Helion
_
h ttp ://h e lio n .p l
Podziękowania Na długo przed tym, zanim napisałem pierwsze zdanie tej książki, zespół tworzący Joomla! poświęcił niezliczone godziny na stworzenie aplikacji używanej dziś na całym świecie. Nie trzeba dodawać, że książka ta nie powstałaby, gdyby nie jego niestrudzone wysiłki, dążenie do opracowania aplikacji na najwyższym światowym poziomie, jaką jest Joomla!. Podobnie jak większość ludzi regularnie używających Joomla!, nie jestem w stanie wyrazić wdzięcz ności zespołowi za jego wspaniałe dzieło. Chciałbym podziękować wszystkim ludziom z wydawnictwa Wrox — szczególnie biorąc pod uwagę ich cierpliwość, kiedy próbowaliśmy stworzyć tę książkę w oparciu o nieustan nie zmieniany projekt. Kieruję podziękowania do Kita Kempera, który pomógł mi sprecy zować to, co wtedy było jeszcze niejasnym pomysłem na książkę. Kieruję je także do Jenny Watson, która musiała przebrnąć przez wiele poprawek powodujących opóźnienia. Jestem winien wdzięczność Chrisowi Davenportowi, redaktorowi technicznemu, którego wnikliwe sugestie i mądre zalecenia znacząco poprawiły jakość tej książki. Dziękuję Kevinowi Shaferowi za wytrwałość podczas najcięższych etapów oraz wykonanie fenomenalnej pracy przy składaniu książki w całość. Chciałbym także podziękowań Ami Frank Sullivan, Kirkowi Batemanowi i wszystkim z wydawnictwa Wiley, którzy niestrudzenie pracowali nad stwo rzeniem tej książki. Muszę także podziękować bliźniaczym gwiazdom mojego życia — mojej żonie Elizabeth i córce A leksandrze — za nadawanie znaczenia mojemu życiu. Rzadko kiedy narzekając, Elizabeth podołała obciążeniom nocnej pracy, straconych weekendów, za co dziękuję Ci z głębi serca. Spotkanie Ciebie było najlepszą rzeczą w moim życiu. Chciałbym podziękow ać mojemu rodzeństw u (Davidowi i Darlene) oraz przyjaciołom (Joelowi Harrisowi, Juanowi Leonffu, Gregowi M ickey’emu, Johnowi Taylorowi, Edowi Gildredowi, Donowi Murphy’emu i Weldowi 0 ’Connorowi) za ich bezwarunkowe wsparcie. Jestem bardzo wdzięczny Sandrze Villagran za to, jak fantastycznie utrzymywała kurdupla szczęśliwym. Przede wszystkim chciałbym podziękować Tobie, Czytelniku. Poprzez zakup tej książki sprawiasz, że członkowie przemysłu wydawniczego m ogą dobrze wykonywać swoją pracę. Mam nadzieję, że informacje w niej zawarte pomocą Ci zrealizować Twoje marzenia. Dzięki.
Spis treści O a u to r ze ...................................................................................................................................................................................................................... 13 W prow adzenie......................................................................................................................................................................................................... 15 Rozdział 1. Wprowadzenie do Jo o m la !...................................................................................................................................................21 Zapoznanie z Joomla! ..........................................................................................................................22 Wpływ elastyczności na popularność Joomla! ................................................................................ 23 Dla kogo je s t ta k s ią ż k a ......................................................................................................................24 W ebm asterzy.................................................................................................................................. 24 Projektanci stron WWW ................................................................................................................25 Deweloperzy stron WWW .....................................................................................................i ......27 Joomla! w wersji 1.0 a użytkownicy Mambo ....................................................................................28 Podsumowanie .....................................................................................................................................29
Rozdział 2. Szczegóły instalacji i konfiguracji................................................................................................................................31 Cztery serwery systemu Joomla! ....................................................................................................... 31 Decyzje podczas Instalacji ...........................................................................................................32 Etapy instalacji Joomla! ................................................................................................................37 Konfiguracja Apache Web Server ................................................................................................40 Konfiguracja PHP ...........................................................................................................................47 Konfiguracja MySQL ......................................................................................................................52 Konfiguracja Joomla! .....................................................................................................................58 Serwer testowy a serwer produkcyjny ...............................................................................................62 Ustawienia serwera testowego ....................................................................................................63 Ustawienia serwera produkcyjnego ............................................................................................ 64 Podsumowanie .................................................................................................................................... 65
Rozdział 3. Tworzenie własnych szab lon ó w ...................................................................................................................................67 Struktura szablonu .............................................................................................................................. 67 Pliki i fo ld e ry ................................................................................................................................... 68 Logika szablonu: plik index.p h p .................................................................................................. 69 Prezentacja szablonu: plik CSS .................................................................................................. 73 Metadane szablonu: plik tem plateD etails.xm l.......................................................................... 78 Zmienne szablonu: plik param etrów ...........................................................................................79
6
Joomla!. Profesjonalne tworzenie stron WWW
Grafika szablonu: folder images ................................................................................................ 79 Miniatura sza b lo nu ........................................................................................................................80 Tworzenie trójkolumnowego układu ................................................................................................. 81 Tworzenie struktury szablonu .....................................................................................................82 Tworzenie pliku index.php ........................................................................................................... 83 Tworzenie dystrybucyjnego pliku templateDetails.xml ..................................................................94 Zaawansowane techniki tworzenia szablonów ............................................................................... 96 Wykorzystanie grupy szablonów a CSS ..................................................................................... 96 favicon, ¡ c o ...................................................................................................................................... 97 Modyfikacja wyglądu rozszerzeń ................................................................................................ 98 Tworzenie układu strony dla telefonów komórkowych ............................................................99 Adaptowanie szablonów Mambo lub Joomla! 1.0 .................................................................101 Podsumowanie ................................................................................................................................. 102
Rozdział 4 . Dodawanie i modyfikacja dostępnych r o z s z e r z e ń ..................................................................................... 103 Katalog rozszerzeń ........................................................................................................................... 104 Funkcjonalność i obsługa strony .................................................................................................... 105 Instalacja dodatkowego edytora WYSIWYG ............................................................................106 Dodawanie własnych stylów do TinyMCE ............................................................................... 108 Dodawanie obsługi plików i FTP............................................................................................... 109 Dodawanie mapy s tro n y .............................................................................................................110 Community B u ild e r..................................................................................................................... I l l Organizacje I e-commerce ............................................................................................................... 117 Menedżer subskrypcji ................................................................................................................ 118 Sklep internetowy MicroShop z płatnościami P aypal............................................................119 Menedżer projektów Project Fork .............................................................................................120 Rozszerzenie kart pracy .............................................................................................................121 Dodawanie na stronie platformy a u kcyjn ej.............................................................................122 Zawartość s tro n y ............................................................................................................................... 123 Podcasting w Joomla! ................................................................................................................ 124 Galeria zdjęć na stronie J o o m la !..............................................................................................125 Komunikacja na stronie ...................................................................................................................127 Dodawanie komentarzy do artykułów ..................................................................................... 128 Księga g o ś c i................................................................................................................................ 128 Czat na stronie Joomla! .............................................................................................................129 Uruchamianie systemu wiki w Joomla! ................................................................................... 130 eWritlng ........................................................................................................................................133 Implementacja ogłoszeń ........................................................................................................... 134 Dodawanie śledzenia wyników sportowych ........................................................................... 135 Dodawanie gier hazardowych ...................................................................................................137 Obsługa q u izów ........................................................................................................................... 138 Podsumowanie ..................................................................................................................................138
Rozdział 5. Tworzenie prostych ro zsze rze ń : m o d u ły........................................................................................................... 141 Tworzenie modułu Hello W o rld ........................................................................................................ 142 Tworzenie modułu Świąteczne Życzenia........................................................................................ 145 Tworzenie pliku deskryptora ..................................................................................................... 146 Tworzenie kodu modułu ............................................................................................................ 147 Tworzenie tabeli i zapisywanie przykładowych danych .........................................................149 Konfiguracja modułu ................................................................................................................. 150 Tworzenie modułu Kontakt z Nami ................................................................................................152 Podsumowanie .................................................................................................................................157
Spis treści
7
Rozdział 6. Zaawansowane rozszerzenia: komponenty.......................................................................................................159 Przygotowanie środowiska programistycznego..............................................................................159 Stosowanie systemu kontroli wersji SVN ...................................................................................... 160 Instalacja SVN ............................................................................................................................. 162 Tworzenie repozytorium SVN .....................................................................................................163 Korzystanie z E clip se .................................................................................................................. 164 Tworzenie komponentu Księgi Gości ............................................................................................. 166 Ochrona przed s p a m e m ............................................................................................................. 167 Część frontowa komponentu ..................................................................................................... 168 Część administracyjna komponentu .........................................................................................171 Plik deskryptora ...........................................................................................................................174 Tworzenie archiwum ....................................................................................................................176 Instalacja komponentu ...............................................................................................................176 Korzystanie z phpDocumentor .........................................................................................................179 Instalacja ......................................................................................................................................179 Wstawianie sekcji DocBlock w kodzie źródłowym ................................................................. 180 Podsumowanie .................................................................................................................................. 181
Rozdział 7 . Joomla! i A j a x ............................................................................................................................................................................. 183 Struktura technologii Ajax ................................................................................................................183 Prosty komponent ajaksowy ............................................................................................................ 185 Tworzenie komponentu ...............................................................................................................185 Tworzenie strony W W W ...............................................................................................................187 Tworzenie komponentu Serwer-Żądanie.........................................................................................189 Tworzenie kom po nen tu...............................................................................................................189 Tworzenie modułu ajaksowego ................................................................................................. 192 Wady technologii Ajax ....................................................................................................................... 197 Niedostępność dla robotów internetow ych..............................................................................198 Gromadzenie informacji ............................................................................................................. 198 Zagrożenia bezpieczeństwa....................................................................................................... 198 Podsumowanie .................................................................................................................................. 199
Rozdział 8. W zorce projektowe a Jo o m la !..................................................................................................................................... 201 Wzorce projektowe ............................................................................................................................202 Trzy główne kategorie wzorców ....................................................................................................... 203 Wzorce konstrukcyjne ................................................................................................................. 203 Wzorce strukturalne ................................................................................................................... 205 Wzorce czynnościowe .................................................................................................................206 Wzorce współbieżności ...............................................................................................................207 Wzorce architekturalne ...............................................................................................................207 Wzorzec Model-Widok-Kontroler ...................................................................................................... 209 Wykorzystanie wzorca MVC w tworzeniu komponentów ....................................................... 211 Podsumowanie .................................................................................................................................. 215
Rozdział 9. Ingerencja w fundamenty Joomla!: w ty c zk i.......................................................................................................217 Przegląd wtyczek Joomla! ................................................................................................................. 217 Zdarzenia typu C o n te n t.............................................................................................................. 219 Zdarzenia typu E d ito r.................................................................................................................. 220 Zdarzenia typu System i Search .............................................................................................. 221 Zdarzenia typu User ................................................................................................................... 221
8
Joomla!. Profesjonalne tw orzenie stron WWW
Wtyczka Hello World! ........................................................................................................................222 Tworzenie pliku deskryptora ....................................................................................................223 Tworzenie kodu w ty c z k i..............................................................................................................224 Wtyczka Automatyczne S k ró ty.........................................................................................................225 Kod deskryptora XML ................................................................................................................ 226 Kod wtyczki ................................................................................................................................. 227 Budowa platformy Joomla! ............................................................................................................ 229 Struktura CMS Joomla! (JAppllcation) ...................................................................................232 Ścieżki Joomla! ........................................................................................................................... 234 Wskazówki przydatne podczas pracy z kodem Joomla! ........................................................ 235 Wykorzystywanie funkcji przeszukiwania katalogów ............................................................. 235 Badanie co m _co n te n t................................................................................................................ 237 SVN Joomla!: najnowsze osiągnięcia ..................................................................................... 237 Podsumowanie ................................................................................................................................. 239
Rozdział 10. Budowanie społeczności w Jo o m la!.......................................................................................................................241 Planowanie wirtualnej społeczności ..............................................................................................242 Trzy stadia wirtualnej społeczności ......................................................................................... 243 Znaczenie stabilności i regularności ...................................................................................... 246 Dlaczego warto stworzyć wirtualną społeczność ................................................................... 247 Technologie wirtualnych społeczności .......................................................................................... 248 Księga gości ................................................................................................................................ 249 Czat ...............................................................................................................................................253 Forum dyskusyjne ...................................................................................................................... 257 Sondy ........................................................................................................................................... 260 K om entarze................................................................................................................................. 262 Sieci społecznościow e............................................................................................................... 266 Kalendarz wydarzeń.................................................................................................................... 267 Systemy Wiki ............................................................................................................................... 272 Uruchamianie wirtualnej społeczności .......................................................................................... 274 Dobór m oderatorów ....................................................................................................................274 Prowadzenie społeczności............................................................................................................... 275 Podsumowanie ................................................................................................................................. 276
Rozdział 11. Prowadzenie profesjonalnej s t r o n y .................................................................................................................... 2 7 7 Programowanie i testy ............................................................................................................... 277 Ustawienia diagnostyczne......................................................................................................... 278 Interfejs wiersza poleceń PHP ................................................................................................. 280 Zautomatyzowane testy .............................................................................................................281 Uruchamianie s tro n y .........................................................................................................................282 Przenoszenie strony na serwer produkcyjny .......................................................................... 282 Kopia zapasowa Joomla! .......................................................................................................... 283 Konfiguracja wirtualnych serwerów A p a c h e ............................................................................284 Kontrola serwera Apache z wiersza poleceń ......................................................................... 285 Zarządzanie wieloma serwerami ..............................................................................................285 Testy obciążeniowe .................................................................................................................... 286 Równoważenie obciążenia.........................................................................................................287 Umiędzynaradawianie ................................................................................................................ 288 Automatyczne cenzurowanie treści ......................................................................................... 289 Dostrajanie wydajności MySQL ...................................................................................................... 289 Ustawianie dysku przechowującego dane ..............................................................................289 Wybór typu serwera ................................................................................................................... 290
Spis treści
9
Źródło problemów ....................................................................................................................... 292 Optymalizacja in d e ksów ............................................................................................................. 292 Optymalizacja istniejącego s y s te m u .........................................................................................297 A dm inistracja......................................................................................................................................298 Uwierzytelnianie LDAP ......................................................................... 298 O bsługa............................................................................................................................................... 300 Czyszczenie s y s te m u .................................................................................................................. 300 Bezpośredni dostęp do M ySQ L................................................................................................. 301 Podsumowanie .................................................................................................................................. 303
Rozdział 12. Łączenie z zasobami ze w n ę trzn y m i......................................................................................................................305 Pobieranie zewnętrznych materiałów ............................................................................................. 305 Kanały RSS .................................................................................................................................. 305 Rozszerzenie Auto Articles 3 0 0 0 ............................................................................................. 311 Zarządzanie programami p a rtn e rs k im i........................................................................................... 313 Program partnerski Google A dS e n se....................................................................................... 314 Program partnerski firmy Amazon ............................................................................................ 316 Komunikacja biznesowa z zastosowaniem EDI ............................................................................ 319 Dokumenty EDI ............................................................................................................................ 320 Standardy E D I.............................................................................................................................. 320 Rozszerzenie Skylark .................................................................................................................. 329 Komunikacja z sieciami zewnętrznymi ...........................................................................................330 Komponent typu screen s c ra p e r...............................................................................................330 Komponent Joomlamap ............................................................................................................. 336 Wyszukiwanie adresów z zastosowaniem XML ...................................................................... 340 Podsumowanie .................................................................................................................................. 346
Rozdział 13. Pozycjonowanie i marketing w w yszukiw arkach internetow ych...............................................347 Ustawienia Joomla! ....................................................................................................................... '..3 4 8 Proste adresy .............................................................................................................................. 348 M etadane ......................................................................................................................................350 Aktywacja modułu Breadcrumbs ...............................................................................................351 Mapa strony .................................................................................................................................353 Ogólne techniki .................................................................................................................................. 354 Główne wyszukiwarki .................................................................................................................. 354 Badanie słów kluczowych........................................................................................................... 355 Tytuły s tr o n ................................................................................................................................... 359 Atrybut alt dla obrazów i innych m u ltim e d ió w .........................................................................359 PageRank G oogle........................................................................................................................ 360 System wymiany odnośników ................................................................................................... 361 Ajax a SEO ................................................................................................................................... 362 Google Analytics ......................................................................................................................... 363 Czego nie należy robić ................................................................................................................363 Marketing w wyszukiwarkach internetowych (SEM) ....................................................................... 364 Komponowanie skutecznego tekstu reklam ow ego................................................................ 364 Pay per click i pay per view ....................................................................................................... 365 Google A dsense ...........................................................................................................................365 Podsumowanie ..................................................................................................................................366
Rozdział 14. Bezpieczeństwo Jo o m la !................................................................................................................................................367 Typy a ta k ó w ........................................................................................................................................ 367 Ataki na hasła ............................................................................................................................. 368 SQL Injection ................................................................................................................................368
10
Joomla!. Profesjonalne tw orzenie stron WWW
Niestandardowe żądania — szczególnie przez A ja k s a ......................................................... 371 Cross-Site Scripting (X S S ).........................................................................................................372 Skanowanie katalogów ..............................................................................................................372 Atak Denial of Service (DoS) .................................................................................................... 373 Podsłuchiwanie pakietów HTTP ...............................................................................................373 Bezpieczeństwo serwera W W W ...................................................................................................... 376 Zabezpieczanie serwera Apache ..............................................................................................376 Odmowa dostępu do plików z danym rozszerzeniem ............................................................377 Bezpieczeństwo PHP ....................................................................................................................... 378 PHP Safe Mode .......................................................................................................................... 378 PHP d o c _ ro o t...............................................................................................................................379 PHP disab le_fu n ctlo n s............................................................................................................... 379 PHP d isa b le _ cla s s e s................................................................................................................. 379 PHP display_errors ..................................................................................................................... 380 PHP e xp ose _p h p .........................................................................................................................380 Bezpieczeństwo MySQL ...................................................................................................................380 Bezpieczeństwo Joomla! ..................................................................................................................381 Usuwanie plików instalacyjnych ............................................................................................... 381 Edytor HTML Joomla! ................................................................................................................. 381 Uruchamianie wewnątrz s y s te m u .............................................................................................382 Rozwijanie i testowanie .............................................................................................................382 Podsumowanie ................................................................................................................................. 383
Rozdział 15. Czego Joomla! nie p o tra ti..............................................................................................................................................385 Kontrola wersji dokumentów .......................................................................................................... 385 Import, konwersja i eksport p lik ó w ................................................................................................ 387 Ograniczone funkcje zabezpieczeń i autoryzacji .......................................................................... 387 Równoważenie obciążania I replikacja danych .............................................................................388 Poziomy interfejsu użytkownika, obsługa skórek ........................................................................ 388 Standardowa funkcjonalność groupw are...................................................................................... 389 Funkcjonalność portalu ....................................................................................................................390 Podsumowanie ................................................................................................................................. 393
Rozdział 16. Rzut okiem na popularne strony oparte na Jo o m la !................................................................................395 Strony akademickie .......................................................................................................................... 396 Wydział Biologii Molekularnej P rin ce to n ..................................................................................396 The Shakespeare Birthplace T r u s t.......................................................................................... 397 Journal o f Intercultural and Interdisciplinary Archaeology ...................................................398 Graphic User Interactive Learning and Development (GUILD) ............................................399 Ministerstwo Edukacji na Wyspach Dziewiczych ................................................................... 400 Strony poświęcone zdrowiu i rodzinie ............................................................................................401 S e n io rN e t..................................................................................................................................... 401 KidsCHANNEL..............................................................................................................................402 A Story for Bedtime ....................................................................................................................403 Second Wives Club ....................................................................................................................404 Better Health Here ..................................................................................................................... 406 Profesjonalne s tro n y ......................................................................................................................... 407 Mistrzostwa Świata 2 0 1 0 w Republice Południowej A fry k i.................................................. 407 Best Association Resources and Tools ................................................................................. 408 Relacje podróżnicze Randalla Wooda ..................................................................................... 409 Turbo Trade ................................................................................................................................. 410 Sonetto ........................................................................................................................................ 411 John Avon Illustration ................................................................................................................412
Spis treści
11
Media (Aktualności, magazyny itp.) ................................................................................................ 413 MainSPOT.NET ............................................................................................................................413 Centrum Informacji ONZ dla Europy Z achodniej.....................................................................414 HCJB Global .................................................................................................................................415 Asiaing.com ..................................................................................................................................416 The C h a se r................................................................................................................................... 417 Creative Guy Publishing ............................................................................................................. 418 Strony hobbystyczne ......................................................................................................................... 419 Success and Sport (S .A .S .)....................................................................................................... 419 Safari V e n tu re s............................................................................................................................420 Sky Systems ................................................................................................................................4 21 KISSin’ UK ................................................................................................................................... 422 Calialive.com ............................................................................................................................... 4 2 3 Strony poświęcone technologii ....................................................................................................... 4 2 4 Strona główna projektu Joomla! .............................................................................................. 4 2 5 Open Workbench ........................................................................................................................ 4 26 Joomlahut .................................................................................................................................... 427 Projekt OScar .............................................................................................................................. 428 Podsumowanie .................................................................................................................................. 429
S k o ro w id z................................................................................................................................................................................................................*3 1
12
Joomla!. Prolesjonalne tworzenie stron WWW
O autorze Dan Rahmel jest najszerzej znany z pracy z systemami bazodanowymi, PHP i Visual Basic. Posiada kilkunastoletnie doświadczenie w projektowaniu oraz implementowaniu systemów informatycznych i rozwiązań klient-serwer w oparciu o MySQL, M icrosoft SQL Server, Microsoft Access i Visual FoxPro. Swoją karierę rozpoczął, pisząc między innymi dla DBMS, American Programmer i Internet Advisor. Jest autorem kilkunastu książek przetłumaczonych na wiele języków, takich jak chiński, japoński, hiszpański, francuski i portugalski. W roku 2006 wydawnictwo Focal Press przygotowało specjalną edycję Nuts and Bolts Filmmaking: Practical Techniques fo r the Guerilla Filmmaker1 (Focal Press, 2004), przeznaczoną na rynek indyjski.
1 Jedna z książek Dana Rahmela pośw ięconych tworzeniu niezależnych film ów — przyp. dum.
14
Joomla!. Profesjonalne tworzenie stron WWW
Wprowadzenie Centrum strony internetowej stanowi potrzeba organizowania i prezentowania treści. Przez ostatnie 10 lat statyczne strony zdominowały internetowy krajobraz, a zarządzanie stroną było mozolnym, często frustrującym procesem. W ebmasterzy musieli borykać się z tysiącami linii kodu HTML, umieszczonymi w ogromnej liczbie plików. Technologia dynamicznego tworzenia stron wymagała dużej liczby dodatkowego programowania i stwarzała wiele nie przewidzianych zagrożeń bezpieczeństwa. Wydanie w 2005 roku systemu zarządzania treścią (C M S — Content Management System) Joomla! rozpoczęło nową epokę niedrogiego tworzenia zaawansowanych stron internetowych. Zarządzanie treścią stało się możliwe bez konieczności programowania. Elastyczność systemu Joomla! pozwoliła tworzyć skomplikowane rozszerzenia, które dodatkowo wzbogacały CMS. Dziesiątki tysięcy programistów zainteresowało się Joomla!, a dostępność rozszerzeń osiągnęła masę krytyczną (przynajmniej 1700 według ostatnich wyliczeń), czyniąc Joomla! najważniej szym. niekomercyjnym systemem CMS na świecie. Joomla! stał się ważnym narzędziem dla webmasterów, służącym do tworzenia i obsługi stron bez wyczerpującego wysiłku. Możliwość szerokiego wykorzystania stworzyła wiele okazji dla profesjonalnych programistów Joomla!. Biorąc pod uwagę, że Joomla! został pobrany, licząc do połowy 2007 roku ponad 2,5 miliona razy, programiści mają dużą grupę potencjalnych klientów. Niezależnie od tego, czy tworzysz szablony XHTML, aby sprzedać je stronie subskrypcyjnej, czy świadczysz usługi ¡ako ekspert Joomla! lub tworzysz rozszerzenia w ramach społeczności open source, znajdziesz swoje miejsce w świecie Joomla!. Biorąc pod uwagę różnorodność potrzeb zaawansowanych czytelników, napisałem tę książkę z zamiarem przekazania wiedzy na poziomie pełnoetatowego programisty lub członka ekipy programistycznej Joomla!. Starałem się dostarczyć przykładów dla dwóch głównych obszarów profesjonalnych zastosowań tego systemu: projektowania oraz tworzenia oprogramowania i zakładania stron. Projektowaniu i tworzeniu oprogramowania zostały poświęcone cztery rozdziały, w których opisano implementowanie własnych szablonów, tworzenie rozszerzeń wszystkich trzech typów (moduły, komponenty i wtyczki), wykorzystanie najnowszej technologii Ajax w dodat kach do Joomla!, adaptację profesjonalnego środowiska programistycznego z systemem kontroli wersji, zastosowanie wzorców projektowych i wiele innych.
16
Joomla!. Profesjonalne tworzenie stron WWW
Dokładne zapoznanie się ze strukturą platformy Joomla! pozwoli Ci dogłębnie zrozumieć działanie systemu, dzięki czemu podczas tworzenia dodatków dla Joomla! będziesz w stanie lepiej wykorzystać bogactwo możliwości. W rozdziałach poświęconych zakładaniu stron poznasz technologie leżące u podstaw Joomla! (PHP, Apache itd.). Odpowiednia konfiguracja tych technologii zapewni najwyższą wydajność systemu. Zarządzanie stroną, pozycjonowanie (SEO), komunikacja z treściami zewnętrznymi, ustawienia zabezpieczeń i uwierzytelniania LDAP (Lightweight Directory Access Protocol) — wszystkie te tematy zostały opisane w ramach tej książki. Mam nadzieję, że po zakończeniu lektury będziesz miał wiele pomysłów, jak zmienić i roz szerzyć Joomla!. aby zaspokoić potrzeby swoje (lub) swoich klientów. Spędziłem wiele godzin, analizując kod platformy Joomla!, co pozwoliło mi docenić ogrom genialnej pracy wykonanej przez ekipę Joomla!. Podejrzewam, że im więcej czasu spędzisz, pracując z Joomla!, tym chętniej będziesz podzielać mój zachwyt nad tym cudem open source.
Dla kogo jest ta książka Joomla!. Profesjonalne tworzenie stron WWW skierowana jest do projektantów i twórców stron WWW, hobbystów, małych i średnich firm, organizacji e-commerce i non profit. Sze rokie zainteresowanie nabywaniem umiejętności pracy z Joomla! wykracza poza społecz ność projektantów i twórców, ponieważ wiele firm — od pośredników nieruchomości, po przez kluby fitness, aż po domy pogrzebowe — tworzy swoje strony w oparciu o Joomla!. Książka ta powinna zainteresować także bloggerów, twórców treści firmowej oraz wspomóc specjalistów. Również każda osoba dysponująca dostępem do serwera z obsługą PIIP/MySQL będzie w stanic stworzyć stronę Joomla! wykorzystującą wszystkie funkcje przedstawione w tej książce. Aby efektywnie pracować z tą książką, powinieneś mieć przynajmniej podstawowe doświad czenie w instalowaniu systemu. Jeśli pracowałeś z poprzednimi wersjami Joomla!, nie będziesz miał problemu z żadną z przedstawionych technik i funkcji. Uaktualnienia Joomla! cha rakteryzuje zachowanie ciągłości poza reorganizacją menu główne aspekty zarządzania systemem pozostają niezmienne. Programowanie Joomla! znacznie się zmieniło, dlatego zwróć szczególną uwagę na przykłady i wskazówki, które przedstawiają nowe sposoby progra mowania. Ze względu na dużą liczbę programowania w PHP oraz potencjał tej książki, z którego warto skorzystać, wymagane są podstawowe umiejętności w tym obszarze. Kompetencje w zakresie konfiguracji serwera WWW są zalecane, chociaż nie są niezbędne, jeśli samodzielnie nie zarządzasz serwerem. Starałem się napisać tę książkę tak, aby kolejne rozdziały opierać na informacjach zawartych w poprzednich rozdziałach. Chociaż można ją czytać dowolnie, polecałbym przeczytanie przynajmniej sześciu pierwszych rozdziałów w kolejności. Dalej można swobodnie, bez ryzyka pogubienia się, przechodzić do rozdziałów o interesującej tematyce z pominięciem pozostałych.
Wprowadzenie
17
:o zawiera ta książka Joomla! jest darmowym, dostępnym na wiele platform (Windows, Linux i MacOS) systemem CMS o otwartym kodzie źródłowym. Ta książka opisuje now ą wersję Joomla! — 1.5, wraz ze wszystkimi funkcjami (nie tylko nowymi). W miarę możliwości zaznaczałem różnice między poprzednią wersją — 1.0.x, a nową, aby ułatwić użytkownikom przejście na nowy system. Narzędzia programistyczne niezbędne do skorzystania z tej książki i podanych przykładów są, podobnie jak Joomla!, darmowe i powszechnie dostępne (pomijając specyficzne przykłady z wykorzystaniem program ów takich jak Adobe D ream weaver i M icrosoft Frontpage). Dołączono adresy stron internetowych wszystkich programów i rozszerzeń, które zostały wykorzystane w tej publikacji.
Jak zbudowana jest ta książka Książkę napisano z myślą o użytkowniku średnio zaawansowanym, który chciałby pokonać określone etapy, aby zostać użytkownikiem zaawansowanym. Na początku opisany jest proces instalacji, konfiguracji, dalej jest rozszerzanie systemu Joomla! przez tworzenie własnych szablonów, modułów, komponentów i wtyczek. Następnie przedstawiono zaawansowane aspekty tw orzenia stron, od budow ania internetow ych społeczności, przez kom unikację z treściami zewnętrznymi, aż po pozycjonowanie. Książka ta zawiera następujące rozdziały: ■
Rozdział 1. „W prowadzenie do Joom la!” — opisano różne aspekty Joomla! dotyczące webmasterów, projektantów i twórców stron.
■
Rozdział 2. „Szczegóły instalacji i konfiguracji” — zawarto informacje na temat czterech serwerów systemu Joomla! (Joomla!, PHP, MySQL i Apache lub 1IS), pokazano, jak zainstalować i skonfigurować każdy z nich, aby uzyskać najwyższą wydajność. Dodatkowo zaprezentowano szczegółowo różnice w konfiguracji środowiska testowego i produkcyjnego.
■ Rozdział 3. „Tworzenie własnych szablonów” — przedstawiono, jak od podstaw stworzyć własny szablon. Na przykładzie prymitywnego szablonu Hello World omówiono jego strukturę. Następnie szablon został rozwinięty do poziomu złożonego, trójkolumnowego układu z wykorzystaniem CSS. Na koniec opisano techniki zaawansowanego tworzenia szablonów, takie jak tworzenie grupy szablonów, generowanie ikony ulubionych i adaptacja na potrzeby telefonów komórkowych. ■ Rozdział 4. „Dodawanie i modyfikacja dostępnych rozszerzeń” — ten rozdział zawiera szczegółowy przegląd wielu dostępnych rozszerzeń, a także ich podstawową konfigurację i wykorzystanie. Przedstawiony został także katalog rozszerzeń Joomla! (JED). Przytoczono przykłady z różnych kategorii (funkcjonalność i obsługa strony, opcje dla organizacji i e-commerce, zawartość i interaktywność strony).
18
Joomla!. Profesjonalne tw orzenie stron WWW
■ Rozdział 5. „Tworzenie prostych rozszerzeń: moduły” — przedstawiono proces tworzenia modułu od samego początku, począwszy od programu Hello World, nakreślono strukturę i zastosowanie rozszerzeń typu moduł. Następnie opisano dwa projekty o postępującym stopniu złożoności, jednym z nich jest moduł Świąteczne życzenia, który wykorzystuje oddzielną tabelę do przechowywania własnych życzeń świątecznych. Drugim jest moduł Kontakt z nami, który demonstruje dostęp do tabeli systemu Joomla! z poziomu rozszerzenia. ■ Rozdział 6. „Zaawansowane rozszerzenia: komponenty” — tematem jest tworzenie komponentu księgi gości opartej na formularzu. Przedstawiono cały proces procesjonalnego pisania kodu, zaczynając od konfiguracji zintegrowanego środowiska programowania Eclipse, przez wykorzystanie systemu SVN do kontroli wersji, aż po zastosowanie phpDocumentator do automatycznego stworzenia dokumentacji projektu. ■
Rozdział 7. „Joomla! i Ajax” — zademonstrowano tworzenie dwóch komponentów, których można użyć do dynamicznego pobierania danych. Po nakreśleniu zasady działania technologii Ajax stworzony zostanie komponent Joomla-Ajax, który można wykorzystać na dowolnej stronie. Następnie przedstawiono tandem moduł i komponent jako przykład zastosowania tej technologii. Komponent odpowiedzialny jest za komunikację z systemem, a moduł odpowiada za interaktywny widok.
■
Rozdział 8. „W zorce projektowe a Joom la!” — ten rozdział poświęcono wykorzystaniu modeli pojęciowych, znanych jako wzorce projektowe, do rozwiązywania częstych problemów programistycznych. Przedstawiono kilka z nich, a także wyszczególniono wykorzystanie w elementach platformy Joomla!. Następnie, krok po kroku, tworzony jest komponent w oparciu o wzorzec MVC, jako przykład wykorzystania wzorców projektowych w tworzeniu oprogramowania dla Joomla!.
■ Rozdział 9. „Ingerencja w fundamenty Joomla!: wtyczki” — zaprezentowano system wtyczek i wydarzeń dostępnych w Joomla!, które można łączyć z procedurami zawartymi we wtyczkach. Wtyczka Hello World! ilustruje podstawowe wykorzystanie zdarzenia — dołączanie powitania do artykułów. Następnie przedstawiono tworzenie wtyczki, która automatycznie tworzy skróty na podstawie wprowadzonego tekstu, a także dynam icznie rozw ija skróty. Proces ten zostaje uruchomiony podczas wyświetlania artykułu na stronie, pozostawiając zawartość bazy danych nietkniętą. Na końcu opisano schemat platformy Joomla!. ■
Rozdział 10. „Tworzenie społeczności Joomla!" — skupiono się na procesie budowania i rozwijania wirtualnych społeczności. Począwszy od planowania i projektowania, przedstawiono metodę określania grupy docelowej, która będzie tworzyć wirtualną społeczność danej strony. Następnie wprowadzono różne rozszerzenia, które wzbogacają Joomla! o funkcje witryn społecznościowych. Dalej w rozdziale podsumowano najlepsze sposoby tworzenia społeczności i zarządzania nią.
■
Rozdział 11. „Zarządzanie profesjonalną stroną” — wyszczególniono środki, które trzeba podjąć, aby skutecznie stworzyć stronę. Oprócz procedur ustawiania środowiska mających pomóc w usuwaniu błędów, tworzenia zautomatyzowanych testów i przenoszenia strony z serwera testowego do serwera produkcyjnego można znaleźć tu także informacje o doskonaleniu ustawień MySQL i autoryzacji LDAP.
Wprowadzenie
■
Rozdział 12. „Komunikacja z treściami zewnętrznymi” — prześledzono komunikację z zewnętrznymi stronami w celu wymiany informacji, zarządzanie programami partnerskimi, komunikację biznesową z wykorzystaniem elektronicznej wymiany danych (EDI) i inne rodzaje połączeń zewnętrznych. Pokazano, jak stworzyć własne rozszerzenie Joomla!, aby umożliwić połączenie z usługami zewnętrznymi, a także zademonstrowano komponent, który wykorzystuje technikę screen scraping, oraz dodatek, który łączy się z usługą Google Maps, i rozszerzenie, które wykorzystuje wyszukiwanie kodów ZIP na stronie USPS.com.
■
Rozdział 13. „Pozycjonowanie (SEO) i pozyskiwanie klientów za pośrednictwem wyszukiwarek (SEM)” — zawarto opis technik i procedur, które można wykorzystać do pozycjonowania strony, a także pozyskiwania klientów za pośrednictwem wyszukiwarek. Zaprezentowano konfigurację parametrów SEO dostępnych w Joomla! oraz podkreślono znaczenie pozostałych funkcji, takich jak metadane, breadcrumbs i mapy strony. Przedstawiono ogólne sposoby pozycjonowania strony wraz z wpływem, jaki wywiera stosowanie takich technologii jak Flash i JavaScript.
■
Rozdział 14 „Bezpieczeństwo Joomla!” — omówiono najważniejsze ustawienia, które zagwarantują wyższy poziom bezpieczeństwa strony Joomla!. Opisano także główne typy ataków (a także wskazówki, jak im zapobiegać), które mogą zostać wykorzystane przeciw ko systemowi Joomla!. D odatkowo znajdują się w nim informacje na temat zabezpieczania poszczególnych serwerów (Apache lub 1IS, PIIP, MySQL i Joomla!).
19
■ Rozdział 15. „Czego Joomla! nie potrafi” — oceniono niedostatki, jakie można dostrzec w porównaniu z profesjonalnymi systemami CMS. Wyszczególnione zostały ograniczone m ożliwości w zakresie kontroli wersji, konwersji plików, bezpieczeństwa, równoważenia obciążenia, replikacji, funkcjonalności zespołowej i obsługi portalu. ■ Rozdział 16. „Rzut okiem na popularne strony oparte na Joomla!” — przedstawiono wiele różnorodnych stron opartych na Joomla!. Do każdej opisanej strony dołączono podsumowanie zawierające szczegóły na jej temat (takie jak użyty szablon, domyślna rozdzielczość docelowa i inne), a także informacje o rozszerzeniach wykorzystywanych na stronie.
Czego będziesz potrzebować Pomijając system Joomla! (który można pobrać za darmo z intemetu), potrzebujesz dodatkowe go oprogramowania, aby wykorzystać przykłady przedstawione w tej książce. Środowisko programistyczne Eclipse jest prawdopodobnie najw iększą aplikacją opisaną w tej książce, którą można pobrać z internetu. Pakiet zajmuje 230 MB, dlatego wymagane jest szybkie połączenie z intemetem, aby pobrać instalator. Pozostałe programy zajmują średnio od 10 do 20 MB. Książkę tę napisano z naciskiem na niezależność od wybranego systemu operacyjnego. Ponieważ większość komunikacji z systemem Joomla! przebiega za pośrednictwem inter fejsu administratora będącego stroną WWW, przedstawione instrukcje znajdą zastosowanie
20
Joomla!. Profesjonalne tworzenie stron WWW
niezależnie od w ykorzystanej przeglądarki lub systemu operacyjnego. W sytuacji kiedy poszczególne opcje konfiguracyjne różniły się dla różnych systemów operacyjnych, przed stawione zostały instrukcje odnoszące się do Linuksa, MacOS-a i Windowsa.
Konwencje W książce wykorzystano kilka konwencji, aby pomóc Ci zrozumieć jak najwięcej z przed stawionego tekstu, a także pomóc w orientacji: Ramki, takie jak ta, zawierają ważne informacje bezpośrednio odnoszące się do otacza jącego tekstu, które trzeba zapamiętać.
Wskazówki, podpowiedzi, sztuczki i inne informacje niehędące częścią tekstu zostały zapisane w ten sposób. Odnośnie do stylów wykorzystanych w tekście: ■
Ważne nowe pojęcia pojawiają się jako wyróżnione przy pierwszym wykorzystaniu w tekście.
■
Skróty klawiszowe zapisywane są w następujący sposób: Ctrl+A.
■ Nazwy plików i katalogów oraz adresy internetowe są wyróżnione. ■
Kod pojawiający się wewnątrz tekstu jest oznaczony następująco: persi stence.p ro p e rti es.
■
W przypadku podawania ścieżek dostępu jako separator poszczególnych nazw katalogów wykorzystywany jest lewy ukośnik (1), pomimo iż platformy uniksowe używają do tego celu prawego ukośnika (/).
■
Kod przedstawiony jest na dwa sposoby: Nowe i ważne fragm enty kodu przykładów wyróżniane są szarym tłem . Kod m niej znaczący w danym ko n te kście lu b t a k i. k tó ry p o ja w ił s ię ju ż w k s ią ż c e , n ie je s t zaznaczony.
Kody źródłowe Podczas pracy z przykładami wykorzystanymi w tej książce możesz samodzielnie wpisać cały kod z klawiatury lub wykorzystać pliki przygotowane przez autora. Wszystkie kody źró dłowe, które zostały użyte w tej książce, mogą zostać pobrane z ftp://ftp.helion.pl/przyklady/ jooptw.zip.
1 Wprowadzenie do Joomla! Jeśli czytasz tę książkę, to prawdopodobnie wiesz już, że Joomla! staje się jedną z najszerzej wykorzystywanych technologii sieci Web. System zarządzania treścią (CM S — Contenl Management System) Joomla! dostarcza łatwego w użyciu, graficznego interfejsu użytkownika, który umożliwia tworzenie stron WWW i zarządzanie nimi. Początkujący użytkownik jest w stanie szybko opanować podstawy Joomla! i tworzyć piękne, profesjonalne strony, takie jak na rysunku 1.1, bez znajomości HTML-a. W tej książce założono, że znasz podstawy tworzenia stron w oparciu o Joomla! i chcesz rozwinąć swoje umiejętności, aby budować witryny światowej klasy — jak tego dokonać, dowiesz się podczas lektury. lysunek 1.1.
Domyślna nstalacja loomla! zawiera lemonstrację zawansowanego orojektu strony składającego się r pionowego venu, pola vyszukiwania, zaokrąglonych ■ogów, sondy automatycznego jkiadu
Yesterday .all servers in th e U S w ent out on strike in a b id to get m ore RAM and belter CPUs A s po kes p erson s a id that the need for better Ram w as due to s om e fool increasing the fto nt-sid e b us speed In future, bu ses w ill be told to slo w dow n in residentia l m otherboards
Joom la! About Joomla!
Features
News
Tlie CouuiMiimy S zu ka j
L a te st N ew s ■ Home > Joomla.' «»veivtew > loo m la ! Lice nse ■ M o te about loomin'. . FA u » lire New s
• WebLmks ■ N ew s Feeds
P opular » Joom la1Overview • Ex te n s io n s
• ■ ■ i • ■ • ■ • N ew sflash <
• W e lc o m e to Jv o m ia t • W hat's New in 1 rv
• N? -'li'-hi
Polls
W e lcom e to th e F rontpage Welcome to Joomlai
JL
_J
J o o itiln : is a fte e open s ou rce fra m e m o rk and c on te nt p u blislm rg syste m de sign ed lo t «prickly a ea ting I uglily inte r a c tiv e m ulti language W eb s ite s , online c om m un ities, m e d ia p o rtals , I dogs a nd eC o m m e tce a p plica tion s.
}ą _J o o m la !
Jo o m la ' provides an easv-to-use graphical uset interface that s im p lifie s the m anagem ent and publish in g o f large volum es o f contenl including HTML, docum ents, and rich m ed ia Joom la ! is u se d bv orrjariisations o f all sizes for Public W eb sites
Joom lo! is use d b O
C om m unity Sites
Q
Public Branc Sites
Q
eC om m erce
O
Bk»gs
O
Intranets
O
Pholo and Media Sites
Metoda opanowania Joomla! będzie zależeć od Twoich potrzeb oraz roli, jaką grasz w pro cesie tworzenia i prowadzenia stron WWW. W tym rozdziale wyjaśniono, w jaki sposób różni użytkownicy Joomla! (webmasterzy, projektanci i deweloperzy stron WWW) mogą wyko rzystać tę książkę, aby zdobyć specyficzne umiejętności i poznać technologie, które opowia dają ich potrzebom i pragnieniom.
22
Joomla!. Profesjonalne tworzenie stron WWW
We wszystkich przykładach zamieszczonych w tej książce staraliśmy się przedstawić infor macje tak jasno i jednoznacznie, jak było to możliwe. Zdajemy sobie sprawę, że chcesz opano wać Joomla!, ale niekoniecznie inne technologie (MySQL, CSS, PUP itd.), na których jest oparty. Wydawnictwo Helion ma w ofercie książki, dzięki którym poznasz pozostałe tech nologie. Celem tej jest pomoc w ukończeniu Twoich projektów opartych na Joomla!, które zamierzasz wprowadzić w życie. Właśnie dlatego staraliśmy się dokładnie opisać każdy krok — nawet jeśli nie jesteś mistrzem np. w tworzeniu kaskadowych arkuszy stylów (CSS), będziesz w stanie śledzić przykłady i osiągnąć swój cel.
Zapoznanie z Joomla! Joomla! jest jedną z kluczowych aplikacji, których wykorzystanie zainicjowało ponowne narodziny WWW w formie nazwanej Web 2.0. W przeciwieństwie do Web 1.0, gdzie więk szość stron internetowych była zarządzana ręcznie, a możliwości interakcji minimalne, sercem Web 2.0 jest automatyczna administracja, komunikacja na stronie i między witrynami, wirtu alne społeczności, dynamiczna interakcja. Joomla! obejmuje wszystkie nowe osiągnięcia, a ponieważ jest CMS-em, stworzenie i zarządzanie zaawansowaną stroną osiągalne jest nawet dla małej grupy ludzi (być może nawet dla jednej osoby). Strona oparta na Joomla! może rywalizować z możliwościami i prezencją stron wartych miliony dolarów. Najlepsze z tego wszystkie jest jednak to, że Joomla! jest całkowicie, w 100 procentach darmowy. Joomla! wydano w 2005 roku. Od tego czasu zaobserwowano wykładniczy wzrost zarówno wśród liczby webmasterów, jak i twórców stron internetowych. Założono dosłownie dziesiątki tysięcy stron WWW na całym świecie. Aby sprostać temu rozrostowi, społeczność twórców powiększyła się — w czasie, kiedy pisałem tę książkę — do ponad 45 000 zarejestrowanych podmiotów. Setki deweloperów są aktywne każdego dnia na forach poświęconych Joomla!, dzielą się informacjami, wskazówkami i nowym kodem. Stale pow stają nowe dodatki i szablony, które rozszerzają bogate możliwości zawarte w dom yślnej instalacji Joom la!. Biorąc pod uwagę całą aktywność wokół tego systemu, ciężko nie ulec zachwytowi nad możliwościami płynącymi z wykorzystania go. Dzięki tej książce będziesz miał szansę dołączyć do rewolucji, prowadzony krok po kroku przez uruchamianie, tworzenie i projektowanie zaawansowanej strony Joomla!. Nauczysz się modyfikować i rozszerzać Joomla!. Dowiesz się, jak dostroić go, aby sprostać popularności, która zagroziłaby poprawnemu działaniu zwykłej strony. Twoja instalacja Joomla! obsłuży duże obciążenie bez wysiłku. Ta książka pomoże Ci, jeśli chcesz wykorzystać Joomla! do: ■ Tworzenia komercyjnych dodatków, które oferują funkcje pożyteczne dla kogoś z 2,5-milionowej rzeszy użytkowników Joomla!. ■ Otwarcia sklepu internetowego, który posłuży nie tylko do sprzedawania towarów, ale także stworzenia internetowej społeczności, mającej sprawić, że powtórne zakupy staną się zasadą, a nie przypadkiem.
Rozdział 1. ■ Wprowadzenie do Joomla!
23
■ Stworzenia szablonu lub otwarcia sklepu z szablonami w modelu subskrypcji, do którego mogą zapisać się użytkownicy, aby wykorzystać swój szablon do zmiany swoich stron w dzieła sztuki. ■
Publikacji opinii politycznych na blogu wraz z odwołaniem do dokumentacji dowolnego typu popierającej Twój punkt widzenia dowiesz się jednocześnie, które tematy uważane są przez Twoich użytkowników za ważne.
■ Dołączenia do grona osób zarabiających na tworzeniu stron dla innych ludzi w oparciu o CMS. Informacje zawarte w tej książce dadzą Ci przewagę nad konkurencją. ■ Założenia prywatnej strony WWW z galerią zdjęć (Twoich dzieci, ze specjalnych okazji itd.) i forum, dzięki któremu Twoi krewni będą mogli kontaktować się z Tobą. W tej książce zawarta jest wiedza potrzebna do podążania każdą z tych różnorodnych ścieżek, a także wieloma innymi. W nowym, ekscytującym świecie, gdzie wiele babć zna HTML, ograniczenia w opanowywaniu Joomla! stawiane są głównie przez Twoje własne ambicje. Dzięki Joomla! nawet mozolny proces tworzenia stron staje się jeśli nie przyjemny, to przy najmniej satysfakcjonujący. Kolejną zaletą Joomla! jest łatwość rozbudowywania CMS-a w podobny sposób, w jaki aplikacje typu CMS wprowadzają porządek w chaosie zarządzania stroną WWW.
Nplyw elastyczności na popularność Joomla! Zanim doszło do rozpow szechnienia aplikacji typu CM S, sieć uginała się pod ciężarem ogromnej ilości treści, którą trzeba było zarządzać. Tworzenie witryny w oparciu o pojedyncze strony było bardzo ograniczające i sprawiało, że zarządzanie stroną nawet średniej wielkości było niesamowicie kosztowne, jeśli chodzi o czas i zasoby. Strony dynamiczne, tworzone na zamówienie w oparciu o PHP lub Active Server Pages (ASP), były nie tylko drogie w imple mentacji, ale także stwarzały spory potencjał zagrożeń i błędów, przez co rozwiązania oparte na nich były niepewne. Systemy zarządzania treścią takie jak Joomla! znacząco obniżyły koszty zarządzania małymi i dużymi stronami WWW. Poprzez organizację wszystkich treści w bazie danych i daleko idące oddzielenie ich od warstwy prezentacji i kodu programu administracja z użyciem CMS-a jest elastyczniejsza niż w przypadku innych metod tworzenia stron internetowych. Twórcy Joomla! położyli szczególny nacisk na stworzenie technologii, która — zamiast być uniwersalną i spełniać wszystkie potrzeby — jest uniwersalną, dostosowywalną do własnych potrzeb. To wystarczająco złożony system, żeby można było go modyfikować, rozszerzać i dopasowywać, aby sprostać większości wymagań stawianych przed stroną WWW. Wraz z wydaniem wersji 1.5 Joomla! wysunął się na prowadzenie pośród dostępnych CMS. Zagmatwaną strukturę aplikacji znaną z poprzednich wersji zastąpiono nową platformą, dzięki której tworzenie dodatków — od szablonów, aż po wtyczki — stało się łatwe.
24
Joomla!. Profesjonalne tworzenie stron WWW
Mimo że Joomla! można wykorzystać prawie do każdego projektu strony WWW, nie znaczy to, że m usi on być użyty w ten sposób. Jest takie stare powiedzenie, że jeśli jesteś młotkiem, to wszystko wygląda jak paznokieć. Istnieją zastosowania, dla których skorzystanie z Joomla! nie byłoby najlepszym wyborem. Z tego powodu książka zawiera rozdział 15. „Czego Joomla! nie potrafi’’ . Ważne je s t, żebyś był świadom ograniczeń każdego programu, zanim zaczniesz duży projekt. Wiele ograniczeń Joomla! (na przykład precyzyjne opcje zabezpieczeń) można pokonać przez połączenie własnego kodu i dostępnych rozszerzeń. Do Ciebie należy decyzja, czy pokonanie tych barier je s t mądrym posunięciem lub czy nie lepszym pomysłem byłoby wybranie innej aplikacji, która zawiera już funkcje pasujące do wymagań Twojego projektu.
W wersji 1.5 wprowadzono dużo lepszy model oddzielania warstwy kodu od warstwy pre zentacji. Nowa struktura ułatwia projektantom stron i grafikom tworzenie szablonów, ponie waż nie są już przesadnie obciążeni programowaniem. Deweloperzy z kolei mogą kształtować logikę systemu niezależnie od wielu aspektów warstwy prezentacji.
Dla kogo jest ta książka Jeśli miałeś ju ż styczność z Joomla!, prawdopodobnie całkiem dobrze rozumiesz podstawy jego działania. Wiesz już, jak dodawać artykuły, zarejestrować użytkowników, dodać sekcje i kategorie, zainstalować nowy szablon lub rozszerzenie (wtyczkę, komponent lub moduł). Jest to jednak zaledwie wierzchołek góry lodowej, jeśli chodzi o potęgę Joomla!. Poszczególne obszary Twoich zainteresować będą różnić się w zależności od roli, jaką grasz w procesie tworzenia stron. Webmasterzy mogą skupić się na implementowaniu i instalowaniu strony opartej na Joomla! oraz adm inistrowaniu nią. Projektanci stron WWW mogą kształtować projekty graficzne i warstwę prezencji, tworząc wizualnie olśniewający interfejs. Rola deweloperów wskazuje na poznanie elastyczności programowania rozszerzeń, co pozwala opanować do perfekcji sztukę ich tworzenia.
Webmasterzy Na w ebm asterach spoczyw a praw dopodobnie największa odpowiedzialność w zakresie doskonalenia strony WWW opartej na Joomla!. Ostateczna odpowiedzialność za poprawne działanie strony spada właśnie na webmastera. Z tego powodu kluczowe jest zrozumienie technologii leżącej u jego podstaw. Niezależnie od tego, czy prowadzisz hobbystyczną stronę, czy jesteś administratorem zarządzającym wieloserwerową instalacją Joomla!, większość informacji zawartych w tej książce będzie dla Ciebie użyteczna. Joomla! jest złożonym systemem. Mimo iż instalacja systemu nie stanowi bariery nawet dla początkujących, to zaawansowane funkcje pozostają dla nich po prostu niedostępne. Będziesz mieć szansę zoptymalizowania instalacji Joomla!, aby osiągnąć maksymalną wydajność, ale także aby zabezpieczyć stronę przed hakerami.
R o zd zia li. ■ Wprowadzenie do Joomla!
25
Być może projektanci lub deweloperzy Joomla! pracują dla Ciebie, w takiej sytuacji książka ta dostarczy Ci doskonałych wskazówek, co można osiągnąć w ramach platformy. Jeśli grasz każdą z wymienionych ról, praktycznie wszystkie informacje będą dla Ciebie ważne. Z pewnościąjednak do Twoich zadań administracyjnych będzie należeć pośrednia lub bezpośrednia administracja stroną. Jeśli jesteś webmasterem i administratorem strony WWW, skorzystaj z narzędzi i technik opisanych w tej książce, które pozwolą Ci na: ■ Zbudowanie wirtualnej społeczności z wykorzystaniem technologii Joomla!. Będziesz w stanie skorzystać z internetowego trendu utożsamianego przez takie witryny jak MySpace i YouTube. ■ Zarządzanie serwerem WWW, stroną Joomla! i bazą danych SQL, a także uczynienie z tej konstrukcji sprawnie działającej maszyny. ■ Stworzenie kopii zapasowej danych, plików strony i opcji konfiguracyjnych. ■ Skorzystanie z technik SEO, które poprawią pozycjonowanie Twojej strony i zoptymalizują Joomla! pod kątem robotów internetowych. ■
Dbanie o bezpieczeństwo strony dzięki poprawnym zabezpieczeniom i obronie przed atakami hakerów.
■ Poznanie technik wykorzystywanych przez profesjonalne witryny oparte na Joomla! do prowadzenia strony i utrzymywania jej popularności. ■ Dostrojenie systemu Joomla! w celu uzyskania maksymalnej wydajności. Omówione zostaną tematy od optymalnego planowania, po odpowiednie ustawienie poszczególnych serwerów. ■
Równoważenie i testowanie obciążenia strony Joomla!, zarządzanie wieloma stronami jednocześnie.
■ Określenie, czy Joomla! spełnia Twoje potrzeby lub czy powinieneś zainwestować w CMS wyższej klasy. Wiele aspektów administracyjnych jest poruszanych w tej książce w ramach opisów danej technologii (np. autoryzacji LDAP). Upewnij się, że przynajmniej pobieżnie zapoznałeś się z materiałami, które nie są bezpośrednio związane z Twoimi zadaniami lub umiejętnościami.
’rojektanci stron WWW Rola projektantów jest bardziej specyficzna niż webmasterów. Często to webmaster nakreśla kierunek rozwoju i funkcjonalność strony. Projektant jest w takiej sytuacji wybrany przez osobę, firmę lub organizację, aby stworzyć wygląd strony — warstwę prezentacji, która spełnia określone potrzeby. W przypadku Joomla! projektanci dysponują świetną platformą do publikacji i zarabiania na swoich pracach — rynek szablonów Joomla!. Liczba dostaw ców komercyjnych szablonów jest ogromna, a sam obszar działalności zdaje się całkiem dochodowy.
26
Joomla!. Profesjonalne tworzenie stron WWW
W iększość komercyjnych stron z szablonami wykorzystuje model subskrypcji, w którym klienci płacą m iesięczny lub roczny abonam ent, aby uzyskać nieograniczony dostęp do szablonów dostępnych na stronie. Taki model jest bardzo korzystny dla projektantów, ponie waż strona musi stale uaktualniać ofertę nowymi szablonami, aby utrzymać dotychczasowych klientów. W ten sposób regularną pracę znajduje wielu projektantów. Jeśli jesteś jednym z nich, znajdziesz w tej książce wiele użytecznych informacji, które pozwolą Ci być na bieżąco w Twojej profesji. Nowi projektanci zdobędą bogate informacje na temat planowania i konstrukcji szablonów. Ze względu na to, że skuteczny szablon to połączenie kodu PHP, grafiki i CSS, zaprojekto wanie dobrego szablonu wymaga sporej ilości planowania i sprawnego kierowania. Czytając tę książkę, napotkasz opisy wszystkich etapów tego procesu. Nawet jeśli dotychczas nie programowałeś, wskazówki dołączone do tej książki pozwolą Ci skonstruować szablon w stylu plug and play1. Dopóki rozumiesz ogólną zasadę działania przedstawionego kodu, będziesz w stanie wkleić go w odpowiednie miejsce. Zaawansowani projektanci będą mieli okazję poprawienia swoich umiejętności dzięki radom opartym na doświadczeniu, a także dodatkowej funkcjonalności, takiej jak obsługa technologii Ajax na stronach Joomla!. Dalsze wskazówki w rozdziałach poświęconych technikom SEO i internacjonalizacji zmienią Cię w specjalistę w Twojej dziedzinie. Nabędziesz nowych umiejętności i pozyskasz informacje w zakresie projektowania stron. Są to: ■
Modyfikowanie kodu i arkuszy stylów istniejących szablonów.
■
Proces tworzenia nowego szablonu od podstaw, niezbędne minimum dla działającego szablonu, a także techniki stosowane w zaawansowanych szablonach do omijania ograniczeń.
■
Procedura autoryzacji nowych modułów, które m ogą zostać użyte w dowolnym szablonie.
■
Wykorzystanie nowej technologii Ajax do komunikacji klient-serwer, aby wzbogacić stronę Joomla! o aktywny, nowoczesny interfejs.
■
Metody planowania, które zagwarantują obsługę treści w wielu językach i internacjonalizację.
■
Dopasowywanie dostępnych rozszerzeń (takich jak sondy, reklamy i galerie zdjęć) do ogólnego projektu strony w celu osiągnięcia jak najlepszego jej wyglądu.
■ Szczegóły dostosowywania CSS mające zapewnić stronie spójny wygląd. ■
Wskazówki na temat zgodności z Wytycznymi dotyczącymi Dostępności Treści Internetowych ( W C AG — Web Content Accessibility Guidelines), ułatwiające korzystanie ze strony ludziom niepełnosprawnym.
1 Z ang. podłącz i używaj — oznacza zdolność wstawienia now ego elementu w istniejący system bez koniecznej m odyfikacji pozostałych elem entów — przyp. dum.
Rozdział 1. ■ Wprowadzenie do Joomla!
27
Projektanci stron WWW są zatrudniani zazwyczaj na wczesnym etapie tworzenia strony, a im więcej wiedzą o Joomla!, tym lepiej można w sumie wykorzystać bogactwo tej tech nologii. Szczególnie w dziedzinie tworzenia szablonów wykorzystanie możliwości drzemią cych w Joomla! może doprowadzić do stworzenia strony, która nie tylko spełni potrzeby, ale także będzie łatwa w zarządzaniu i przyszłym uaktualnianiu. Projektanci są w stanie w największym stopniu wykorzystać rozszerzenia pisane w celu rozbudowy systemu.
eweloperzy stron WWW Ludzie zajmujący się programowaniem stron z pewnością docenią, że platforma Joomla! jest najelastyczniejsza, a także najprostsza pod względem rozwijania i pisania kodu ze wszystkich dostępnych CMS-ów. Od wprowadzenia wersji 1.5 cała struktura Joomla! została napisana od nowa po to, by stworzyć coś więcej niż tylko CMS. CMS Joomla! jest właściwie aplikacją opartą na szerszej platformie Joomla!. Oznacza to, że możesz, korzystając z tej platformy, zaprogramować projekt dowolnej wielkości — włączając w to stworzenie całkiem nowego CMS-a (jeśli byłyby powody). Nie musisz zaczynać od początku. Badanie i zmienianie istniejących rozszerzeń Joomla! (dodatków, komponentów i modułów) jest prawdopodobnie najlepszym sposobem wzbo gacenia swoich um iejętności. Kiedy zrozum iesz, w jaki sposób rozszerzenia funkcjo nują w systemie, świat Joomla! stanie przed Tobą otworem. Zagłębiając się w lekturę tej książki, dowiesz się, jak stworzyć bardziej zaawansowane rozszerzenia, a nawet jak napisać sprytną implementację ajaksowego interfejsu po stronie klienta. Dowiesz się także, w jaki sposób możesz skorzystać z wzorców projektowych Joomla!, aby udoskonalić własny kod. Po opanowaniu interfejsu rozszerzeń będziesz mógł przejść do modyfikacji samego syste mu Joomla! albo dołączyć do grupy deweloperów. Dostępnych jest bardzo wiele sposobów współpracy z ponad 45 000 zarejestrowanych deweloperów Joomla!. Kiedy dotrzesz do ostat niej strony tej książki, znajdziesz się pod względem umiejętności w górnej części tej piramidy. Większy stopień wykorzystania Joomla! idzie w parze z bogatszymi perspektywami zatrud nienia, ponieważ internetowy rynek pełen jest ofert związanych z Joomla!. Niezaprzeczalnie jest to bodziec ekonomiczny wzmacniający chęć poprawy własnych umiejętności. Jeśli chodzi o domenę programowania stron WWW, Professional Joomla! nauczy Cię: ■ Tworzyć własne dodatki w oparciu o przykłady, od najprostszej wtyczki Hello World!, aż. do zaawansowanego tworzenia rozwiązań e-commerce. ■ Wykorzystywać profesjonalne techniki tworzenia kodu i wzorce projektowe w Twoich projektach Joomla!. ■ Używać skryptów i technologii Ajax do żywej komunikacji ze stroną klienta, bez potrzeby ponownego generowania strony. ■ Swobodnie posługiwać się kodem platformy Joomla!, aby umożliwić modyfikacje systemu. ■ W ykorzystywać i modyfikować dostępne rozszerzenia w celu dodania funkcjonalności, której brak w domyślnej instalacji Joomla!.
28
Joomla!. Profesjonalne tworzenie stron WWW
■
Adaptować środowisko programistyczne PHP do potrzeb programowania Joomla! z wykorzystaniem możliwości tworzenia dokumentacji i poprawnego pisania kodu.
■
Implementować system kontroli z wykorzystaniem oprogramowania Subversion (SVN) w celu umożliwienia zespołowego tworzenia szablonu, dodatku, komponentu lub modułu dla Joomla!.
■ Zarządzać profesjonalnym wdrożeniem produkcyjnego.
od serwera testowego, aż do serwera
Deweloperzy stron WWW znajdą w Joomla! bogate źródło osobistej i zawodowej satysfakcji. W ielu z nich m iało ju ż kontakt z Joomla! i zainw estow ało sporo wysiłku w opanowanie podstaw. Ta książka dostarczy Ci jasnych wskazówek dotyczących umiejętności, których potrzebujesz przy minimalnej ilości niejasności lub dodatkowej pracy.
Joomla! w wersji 1.0 a użytkownicy Mambo Czytelnicy, którzy wcześniej nie mieli styczności ze światem CMS, powinni wiedzieć, że projekt Joomla! został zapoczątkowany w 2005 roku, kiedy grupa deweloperów opuściła społeczność Mambo i zabrała ze sobą kod źródłowy będący u podstaw tego CMS-a. Różnica między pierwszym wydaniem Joomla! a Mambo w wersji 4.5.2.3 była minimalna. Nawet rozszerzenia obu systemów były kompatybilne. Prawdziwa zm iana nadeszła wraz z Joomla! 1.5. Cała architektura została przebudowana w oparciu o nową, obiektową platformę PHP. Zmiany były na tyle znaczące, że żadne z roz szerzeń, a nawet żaden z szablonów przeznaczonych dla Joomla! nie mogły pracować w nowej wersji (pom ijając tryb spuścizny). U now ocześniona architektura stworzyła możliwości doskonalenia i rozbudowy obecnych szablonów, wtyczek, komponentów lub modułów. Ta sytuacja je st w stanie przypraw ić także o ból głowy, ponieważ rzeczy, które dotychczas działały bezbłędnie, nie zadziałają w nowym systemie. Jako webmaster, projektant lub twórca stron internetowych musisz rozumieć konsekwencje płynące ze stworzenia nowego programu na bazie systemu Mambo. Możesz być zmuszony do uruchomienia na serwerze Joomla! trybu spuścizny, aby sprostać wymaganiom swoich klientów, jeśli potrzebne elementy nie zostały jeszcze uaktualnione do pracy w nowym śro dowisku. Jeśli zdecydujesz się na ten krok, utracisz rozszerzoną funkcjonalność i zwiększoną wydajność, które oferuje nowy system (a straty są znaczące). Starałem się w miarę możliwości dołączyć wskazówki, które pozwolą Ci płynnie przejść ze starego systemu do nowego. Jedną z najwspanialszych rzeczy w środowisku open source jest fakt, że jest open source — masz dostęp do kodu źródłowego. Jeśli napotkasz komponent, którego potrzebujesz, ale jest on niekompatybilny z nowym systemem Joomla!, a dysponujesz wystarczającą motywacją i czasem, to nie wszystko stracone. Teoretycznie możesz zaadap tować taki komponent samodzielnie. W tej książce w odpowiednich rozdziałach dostarczam wskazówek i wytycznych, które pomogą użytkownikom przejść z Joomla! 1.0 lub Mambo do najnowszej wersji.
Rozdział 1. ■ Wprowadzenie do Joomla!
29
Uruchomienie strony o wysokim natężeniu ruchu w oparciu o poprzednie wersje Joomla! było problematyczne, ponieważ Joomla! miał tendencję do znacznego zwalniania przy dużym obciążeniu. W oryginalnej wersji aplikacja była przetwarzana jako jeden monoli tyczny blok kodu PHP przy każdym wywołaniu strony — niezależnie od tego, czy dana strona wymagała wszystkich funkcji, czy nie. W wersji 1.5 grupa deweloperów Joomla! zajęła się tym problemem i praktycznie go rozwiązała. Kod został poddany refaktoryzacji, dzięki czemu ładowany i uruchamiany je s t tylko ten fragm ent i te moduły, które są niezbędne do wygenerowania żądanej strony. Nowa metoda spowodowała ogromny wzrost wydajność na dużych stronach.
*odsumowanie System Joomla! jest platformą, którą opanować mogą ludzie mający różne cele, np. webma sterzy, projektanci i deweloperzy stron WWW. Niezależnie od powodów, którymi kierujesz się, gdy chcesz skorzystać z Joomla!, w tym rozdziale mogłeś znaleźć informacje, które pomogą Ci: ■ Zrozumieć system CMS, jakim jest Joomla!, a także informować innych o zaletach korzystania z niego. Świat Web 2.0 opiera się na automatycznym zarządzaniu treścią, dynamicznej interakcji i wirtualnych społecznościach. Joomla! jako CMS umożliwia skorzystanie z nowych technologii każdemu — od pojedynczych osób, aż po duże organizacje — po zaskakująco niskiej cenie, za darmo. ■
Poprawić swoje umiejętności webmasterskie w tworzeniu strony Joomla! i administrowaniu nią. Bez względu na to, czy jesteś samodzielnym webmasterem z hobbystycznym nastawieniem, czy osobą zarządzającą wieloserwerową instalacją Joomla!, dowiesz się z tej książki, jak budować internetową społeczność, zarządzać serwerem, zabezpieczyć treści i użytkowników oraz zoptymalizować stronę pod kątem pozycjonowania.
■ Udoskonalić wygląd i zachowanie strony Joomla!, jeśli jesteś jej projektantem. Nauczysz się nie tylko tworzyć i modyfikować szablony Joomla! (dla zabawy, w ramach kontraktu lub dla jednej z wielu komercyjnych stron z szablonami), ale także zrozumiesz, jak zapewnić zgodność swojej strony z wymaganiami internacjonalizacji i dostępności dla osób niepełnosprawnych. ■ Tworzyć dodatki, komponenty i moduły, jeśli jesteś deweloperem stron Joomla!. Poznasz strukturę platformy Joomla! w stopniu, który pozwoli Ci wprowadzać zmiany w samym systemie. Ponieważ prawie na każdy aspekt działania systemu wpływa kod w plikach CSS lub PHP, możliwe zmiany są prawie nieograniczone. ■ Uaktualnić kod źródłowy, szablony i inne technologie działające z wcześniejszymi wersjami Joomla! lub nowymi instalacjami Mambo. W rozdziale 2. przedstawiono szczegóły instalacji i konfiguracji strony Joomla!. Uruchomienie podstawowej strony je st banalne, jednak dobranie ustaw ień, które zapew nią optym alną wydajność, jest jednocześnie sztuką i nauką. Dzięki dokładnemu zapoznaniu się z wyborem ustawień dla różnych serwerów możesz sprawić, że Twoja instalacja Joomla! będzie działać jak dobrze naoliwiona maszyna.
30
Joomla!. Profesjonalne tworzenie stron WWW
2 Szczegóły instalacji i konfiguracji Joomla! do poprawnego działania wymaga połączenia czterech technologii serwerowych. Jeśli Apache nie jest w stanie uruchomić PHP lub PHP nie może się połączyć z MySQL albo Joomla! nie może zapisywać danych w bazie MySQL, system zawiedzie. W tym rozdziale opisano konfigurację każdego elem entu system u, bez której nieum ożliw e jest poprawne funkcjonowanie całości. Działanie każdego serwera kontrolowane jest listą dyrektyw i opcji konfiguracyjnych, a ich optymalny dobór zapewni właściwe funkcjonowanie systemu. W tym rozdziale opisano także różne techniki poprawy poszczególnych aspektów systemu, tak aby serwer sprawniej odpowiadał na żądania, dostarczając najlepszych wrażeń z użytkowania.
iztery serwery systemu Joomla! Konstelacja serwerów środow iska Joomla! (zobacz rysunek 2.1) to cztery dynam icznie współpracujące elementy: serwer WWW, silnik wykonywania skryptów PHP, serwer baz danych MySQL i serwer Joomla!. Termin serwer nie jest traktowany dosłownie, ponieważ ani PHP, ani Joomla! nie są uruchamiane jako niezależne serwery. Taka szersza definicja pozwoli Ci lepiej zrozumieć działanie i proces konfiguracji, ponieważ zarówno PHP, jak i Joomla! funkcjonują w roli serwera stron i wymagają oddzielnej konfiguracji. Podstawą systemu jest serwer WWW, który dostarcza funkcjonalności związanej z obsługą HTTP. Joomla! może działać poprawnie zarówno w oparciu o Apache Web Server, jak i Microsoft Internet Information Server (1SS). ISS w przeciwieństwie do Apache, który działa na dziesiątkach systemów operacyjnych (Windows, MacOS i wielu wariantach Uniksa), jest ograniczony wyłącznie do platformy Windows. Oprócz obsługi protokołu HTTP zadaniem serwera WWW jest także uruchamianie silnika PHP i serwera Joomla!. Wewnątrz systemu Joomla! silnik PHP uruchamia aplikację Joomla!, która korzysta z wtyczki do PHP, aby komunikować się z serwerem MySQL. W bazie danych MySQL zapisane są wszystkie dane Joomla!, tylko opcje konfiguracyjne zapisane s ą w pliku configuration.php.
32
Joomla!. Profesjonalne tw orzenie stron WWW
Rysu ne k 2 .1.
Cztery serwery, z których sktada się system Joomla!
Opcja 1
Opcja 2
Minimalne wymagania dla każdego z serwerów składających się na Joomla!: ■
PHP w wersji co najmniej 4.3.* z aktywowanymi modułami MySQL, XML i Zlib;
■
MySQL w wersji co najmniej 3.23.x;
■ Apache w wersji co najmniej 1.13.19. Twoje decyzje dotyczące instalacji i konfiguracji będą miały daleko idący wpływ na sukces Twojej strony opartej na Joomla!.
Decyzje podczas instalacji Prawdopodobnie masz już jakieś doświadczenia z instalacją Joomla!, mimo to poniżej opisano pokrótce procedurę instalacji, dzięki czemu m ożesz rozważyć inne opcje. W momencie planowania przyszłej konfiguracji musisz zdecydować się na instalację lokalną lub zdalną, wybrać platformę, na której zostanie uruchomiony Joomla!, określić metodę przeprowadzenia instalacji, a w końcu wybrać serwer WWW. Mimo iż większość z tych wyborów zależy od wymagań docelowego środowiska, a nie od osobistych preferencji, pow inieneś poznać wady i zalety każdego rozwiązania, aby być świadomym jego ograniczeń. Zwróć uwagę na różnice pomiędzy poszczególnymi środowiska mi, ponieważ często inną platformę wykorzystuje się na etapie testów, a inną na serwerze
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
33
produkcyjnym. Częstym wyborem dla środowiska testowego jest Windows lub MacOS, pod czas gdy ostatecznie strona działa pod kontrolą serwera WWW uruchomionego w Linuksie. Dzięki dostrzeżeniu różnic na wczesnym etapie prac łatwiej będzie Ci później przenieść wyniki do innego środowiska.
.okalna lub zdalna instalacja Pierwszą decyzją podczas instalacji jest określenie, czy Joomla! zostanie zainstalowany lokal nie, czy zdalnie. Być może masz konto u dostawcy usług internetowych, np. GoDaddy.com lub SiteGround.com, na którego serwerze możesz zainstalować stronę. W takim przypadku niezbędne oprogramowanie, włączając w to PHP i MySQL, jest już zainstalowane i gotowe do użycia. Aktywacja Joomla! sprowadza się wtedy do skopiowania plików instalacyjnych na serwer i przeprowadzenia instalacji. Jeśli masz zamiar zainstalować Joomla! lokalnie, masz dużo więcej pracy do wykonania. Instalacja lokalna ma kilka zalet: ■ Dowolność konfiguracji — M ożesz dopasować działanie każdego z serwów, ahy najlepiej spełniał Twoje potrzeby. Dostawcy usług internetowych rzadko pozwalają na zmianę kluczowych opcji konfiguracyjnych, chcą uniknąć potencjalnego zagrożenia dla systemu i pozostałych użytkowników. ■ Dogłębna znajomość systemu — Zdecydowanie lepiej poznasz system, który skonfigurowałeś i którym samodzielnie zarządzasz. Możesz wykorzystać tę wiedzę, nie tylko aby uzyskać lepszą wydajność, ale także lepiej zrozumieć możliwości i ograniczenia systemu, które przekładają się na tworzenie modułów, komponentów i dodatków. ■ Potencjalna wydajność serwera — Uruchomienie własnego systemu pozwala przeznaczyć maksimum zasobów dla strony Joomla!. W przypadku zdalnej instalacji prawdopodobnie będziesz musiał dzielić się połączeniem z bazą danych i internetem ze sporą liczbą innych użytkowników. Może to doprowadzić do spowolnienia serwerów i pogorszenia wydajności w czasie szczytowego obciążenia. ■ Elastyczność tworzenia kopii zapasowych W przypadku instalacji lokalnej możesz skorzystać z bogatych opcji tworzenia kopii zapasowych, od ich ręcznego kopiowania plików, aż po użycie dodatkowego dysku w macierzy RAID. Tworzenie kopii zapasowych zdalnej instalacji może być nużące i wymagać samodzielnego skopiowania plików (przez FTP) oraz bazy danych (przez jakiś interfejs administracyjny). Poniżej przedstawiono kilka wad instalacji lokalnej: ■
Więcej pracy — Jeśli zdecydujesz się na instalację lokalną, jesteś także odpowiedzialny za konfigurację serwera i zarządzanie nim. Taka konfiguracja wymaga skutecznego podziału zasobów maszyny między elementami systemu.
■ Możliwa wydajność systemu — Chociaż w większości przypadków wykorzystanie własnego, dedykowanego serwera zapewni Ci prawdopodobnie lepszą wydajność niż instalacja zdalna, nie jest to regułą. Dostawcy usług internetowych wkładają wiele wysiłku w zapewnienie optymalnej wydajności serwerów. Często wykorzystują także droższy sprzęt, który radzi sobie z większym obciążeniem.
34
Joomla!. Profesjonalne tworzenie stron WWW
■ Zabezpieczenie przed usterkami — Większość dostawców stosuje przynajmniej jeden typ redundancji w systemie, aby zagwarantować nieprzerwane działanie stron klientów. Mogą to być zapasowe serwery DNS, automatyczne macierze RAID, architektura wielomaszynowa, zapasowe baterie i wiele innych technologii, które gwarantują poprawne działanie strony w przypadku uszkodzenia jednego z elementów. Zastosowanie takich zabezpieczeń w przypadku własnego, lokalnego serwera jest trudne i kosztowne. Jeśli chciałbyś wykorzystać instalację lokalną, a nie masz wystarczająco szybkiego łącza, sprawdź ofertę kolokacji, jak ą dysponuje Twój lokalny dostawca usług internetowych (ISP). Wielu dostaw ców ma bardzo korzystne oferty, które pozwolą Ci za odpow iednią opłatą umieścić u nich swój serwer i podłączyć go do intemetu.
W y b ó r p latfo rm y: W indow s, Linux lub M acOS W ybór platformy może być trudny, ponieważ w grę wchodzi zbyt wiele zmiennych, aby przedstawić ich kompletną listę. Główne z nich dotyczą komfortu obsługi danego systemu operacyjnego oraz kosztów licencji (Linux jest darmowy, natom iast W indows i MacOS wymagają opłat licencyjnych). Chociaż wybór platformy może wpłynąć na wydajność, nie powinien mieć znaczącego wpływu na proces instalacji Joomla!. Większość administracji przebiega za pośrednictwem interfejsu WWW, dlatego wybrana platforma nie wpływa na interakcje z systemem. Joomla! w ykorzystuje technologie PHP i MySQL, które działają prawie identycznie na wszystkich platformach. Z tego powodu zarządzanie systemem będzie praktycznie niezależne od wybranej platformy.
Instalacja p o szczególnych s e rw e ró w c zy instalacja łączona Możesz zdecydować się na instalację poszczególnych serwerów lub wykorzystać łączony instalator, taki jak XAMPP. Opisując proces instalacji, administratorzy często korzystają z takich akronimów, jak WAMP, LAMP lub MAMP. Skróty te określają docelową platformę, sygnalizowaną przez pierwszą literę ( W = Windows, L = Linux, M = MacOS), pozostałe litery reprezentują serwery, które zostaną zainstalowane (Apache, MySQL i PHP). Najpopularniejszy łączony instalator to XAMPP, w przypadku którego X oznacza zmienną, ponieważ dostępne są wersje dla trzech różnych systemów operacyjnych. Dwa PP w nazwie „XAMPP” odpo wiadają oprogramowaniom PHP i Perl, zawartym w pakiecie. Chociaż Joomla! nie wyko rzystuje Perlą, nie będzie miał on znaczącego wpływu na wydajność serwera. Instalator XAMPP przezwycięża jedną z największych bolączek oprogramowania open source: kompatybilność. Deweloperzy open source notorycznie upubliczniają oprogramowanie, które samodzielnie działa stabilnie, a problem pojawia się przy połączeniu z wcześniejszymi wer sjami pozostałych programów (np. nowa wersja Apache nie zadziała ze stabilną wersją PHP). XAMPP zapobiega tym problemom dzięki dostarczeniu wersji w pełni ze sobą zgodnych. Oznacza to, że możesz pobrać z intemetu jeden instalator, uruchomić go i uzyskać kompletny, działający system w bardzo krótkim czasie.
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
35
Chociaż instalator XAMPP umożliwia łatwą i szybką instalację w środowisku testowym, ma kilka poważnych wad. Najważniejszą jest bezpieczeństwo. Domyślne instalacje serwerów zawartych w paczce XAMPP są podatne na ataki różnych typów. Ponadto instalowanych jest wiele niepotrzebnych aplikacji (takich jak Perl), rozszerzeń i modułów, które mogą spowolnić Twój system. Ilość miejsca zajmowana na dysku twardym może być nawet trzy razy większa niż w sytuacji, kiedy instalowałbyś każdy z serwerów oddzielnie. Jeśli jesteś początkującym użytkownikiem, instalator XAMPP jest fantastycznym narzędziem, które pozwoli Ci zacząć pracę w bardzo krótkim czasie. Jeżeli jesteś odrobinę bardziej za awansowany, to pomijając pojedyncze problemy, które napotkasz, indywidualna instalacja może być dobrym wyborem. Pamiętaj o tym, że decyzja odnośnie do platformy wpływa także na sposób, w jaki będziesz przeprowadzać instalację. Przykładowo w MacOS jest już zainstalowany serwer Apache — trzeba go tylko aktywować. Podobnie w przypadku ISS, który jest prawdopodobnie zain stalowany na platformie Windows. W najgorszym wypadku domyślnie zainstalowany serwer może powodować konllikt z tym, który chcesz zainstalować. W innej sytuacji będzie tylko zbędnym oprogramowaniem.
W ybór s e rw e ra W W W : Apache c zy M ic ro s o ft Internet Inform ation S e rv e r (IIS) Jeśli uruchamiasz Joomla! na platformie Windows, musisz dokonać wyboru serwera WWW: Apache albo Microsoft Internet Information Server (IIS). Jest to trudne z kilku powodów. Główną przyczyną, dla której warto wykorzystać Apache w systemie Windows, jest solidnie potwierdzona kompatybilność Joomla! i Apache. Jest jednak kilka elementów, z powodu których mógłbyś zdecydować się na 1IS: ■ Natywna obsługa SSL — Szyfrowanie SSL jest dostępne natywnie w IIS na platformie Windows. W czasie pisania tej książki użytkownik Apache byłby zmuszony do ręcznej kompilacji serwera w celu zyskania obsługi Secure Sockets Layer (SSL). Skompilowana wersja Apachc dla Windowsa domyślnie nie zawiera tej opcji. ■ D ostrojona wydajność — M icrosoft pośw ięcił dużo czasu i pieniędzy na zoptymalizowanie IIS pod kątem maksymalnej wydajności w Windowsie. Apache działa w tym środowisku dobrze, jednak optymalizowany jest głównie pod względem platformy linuksowej i innych wariantów Uniksa. ■ Zintegrowana ochrona katalogów — IIS został napisany z myślą o natywnej obsłudze bezpieczeństwa katalogów w Windowsie, działa nawet w połączeniu z technologią Active Directory. Wykorzystanie Apache wymaga częściowej integracji zasad zabezpieczeń z systemem Apache. ■
Wbudowany serwer FTP — Domyślna instalacja IIS zawiera serwer File Transfer Protocol (FTP), który może być użyteczny w zarządzaniu systemem Joomla!, a także może dołączać dodatkową funkcjonalność do wielu różnych rozszerzeń (np. opcja pobierania lub wysyłania w komponencie galerii zdjęć).
■
Większość komputerów ma ju ż IIS zainstalowany — Na platformie W indows większość komponentów niezbędna do uruchomienia IIS jest już zintegrowana z systemem operacyjnym. Oznacza to, że narzut IIS jest bardzo mały, ponieważ liczba dodatkowych elementów, które zostaną zainstalowane w systemie, jest niewielka.
36
Joomla!. Profesjonalne tworzenie stron WWW
Jeśli chcesz zainstalować Joomla! w systemie Windows, sprawdź najpierw, czy IIS działa poprawnie. Możesz to zrobić, otwierając Panel Sterowania/Dodaj luh usuń programy. Kliknij przycisk Dodaj/Usuń składniki systemu Windows, znajdź na liście pozycję Internetowe Usługi Informacyjne i upewnij się, czy jest zaznaczona. Jeśli nie, zaznacz ją i przeprowadź instalację. Aby sprawdzić, czy IIS działa poprawnie, uruchom w przeglądarce poniższy adres, powinieneś zobaczyć domyślą stronę: h t t p : / / lo c a l ho s t
Zanim skorzystasz z Joomla!, musisz zainstalować PHP i MySQL, co doda usługę urucha miania skryptów i baz danych. PHP możesz pobrać z poniższej strony: h ttp ://w w w .p h p .n e t
Instalacja PHP przebiega podobnie jak dla każdego innego programu. Na stronie Web Server Setup wybierz wersję IIS, jak pokazano na rysunku 2.2. Instalator automatycznie skonfiguruje IIS do współpracy z PHP. Rysunek 2 .2 .
Wybierz wersję IIS, na której będzie działać PHP
1$
P H P 5 . 2 . i S e tu p
Web Server Setup Se le c t th e W e b S e r v e r y o u w is h t o s e tu p .
O
A p a c h e 1 . 3 . x M o d u le
O
A p a c h e 2 . 0 . x M o d u le
O
A p a c h e 2 . 2 . x M o d u le
O
Apache C G I
0 n s I S A P I m o d u le
O ns O
F a s tC G I
US CGI
O n s api O
Xitam i
O
Sam bar Se rve r
O
N e tS e rv e W e b Se rve r
O
O th e r C G I
O
D o n o t s e tu p a w e b s e rv e r
Back
Mimo iż po zakończeniu instalacji PHP nie zostaje wyświetlony komunikat o potrzebie po nownego uruchomienia komputera, należy to zrobić. Dzięki temu zmienna systemowa Path będzie wskazywać na nowy katalog PHP. Jeśli masz trudności z uruchomieniem PHP, sprawdź zawartość zmiennej Path, otwierając Panel Sterowania/System i klikając przycisk Zmienne środowiskowe w zakładce Zaawansowane. Zmień wartość zmiennej Path (zobacz rysunek 2.3), by wskazywała na katalog z zainstalowanym PHP. Najprawdopodobniej znajduje się on w głównym katalogu dysku (przykładowo c: 1) lub w podkatalogu programów (np. c:\Program Files). Jeśli silnik PHP nadal nie działa poprawnie (zobacz następny podrozdział, aby dowiedzieć się, jak to sprawdzić), sprawdź, czy w folderze Windows znajduje się plik PHP.ini. Jeśli tak, upewnij się, że zawarte w nim wpisy w skazują na właściwy katalog. Spróbuj skopiować PHP.ini, jeśli go tam nie ma. Po każdej zmianie powinieneś zatrzymać serwer i uruchomić go ponownie, aby mieć pewność, że rozszerzenie PHP działa z nowymi ustawieniami.
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
Rysunek 2 .3 .
Edytuj wartość zmiennej Path, aby upewnić się, że zawiera katalog PHP
37
Zmienne środowiskowe Z m ienne u ż y tk o w n ik a d a M r. Heh
Zmienna LANG
W a r to ś ć Pi
PATH TEM P
C :\ D o c u m e n ts a n d S e ttin g s \ M r . H e h \ U s ., .
TM P
C :\ D o c u m e n ts a n d S e ttin g s \ M r . H e h \ U s .. .
Edytuj
W in d o w s N T .C O M ; .EXE; .BAT; ,C M D ; . VBS;.VBE;. J5; . . . . x86
>
Edytuj
Usuń
A n u lu j
Etapy instalacji Joomla! Instalacja Joomla! jest względnie prosta dla doświadczonego użytkownika. W tym podroz dziale opisano pokrótce poszczególne etapy instalacji, co pozwoli Ci zapoznać się z procesem instalacji, jeśli nie miałeś dotychczas żadnych doświadczeń w tej dziedzinie. Rozpocznij instalację od pobrania aktualnej wersji Joomla! (z www.joomlci.org) na dysk twardy. Rozpakuj archiwum (będzie to plik .zip lub .tar.gz albo ,tar.bz2), następnie umieść pliki Joomla! w katalogu serwera WWW. W przypadku instalacji zdalnej możesz wykorzy stać program FTP, taki jak darm ow a FileZilla, aby umieścić pliki w głównym katalogu serwera WWW. Zanim rozpoczniesz instalację na zdalnym serwerze, pow inieneś sprawdzić, czy PHP działa poprawnie. Możesz łatwo to zrobić, tworząc plik w edytorze tekstu (takim ja k Notatnik) o nazwie test.php w którym umieścisz linię . Zapisz plik i wyślij go na zdalny serwer. Po wywołaniu tego pliku przez przeglądarkę (wpisując adres URL taki ja k /i///;://www.przyklad.com/test.phpj zobaczysz stronę z pogrupowanymi parametrami PHP. Jeśli PHP nie działa poprawnie, skontaktuj się z dostawcą usługi. Po skończeniu próby upewnij się, że usunąłeś ten plik, ponieważ niepowołane użycie może zdradzić hakerowi wiele informacji na temat Twojego serwera WWW. Informacje ze strony php i nf o( ) można w razie potrzeby bezpiecznie odczytać w interfejsie administracyjnym Joomla!. Po skopiowaniu plików do głównego katalogu strony WWW uruchom w przeglądarce interne towej plik index.php. Powinieneś zobaczyć pierwszy ekran procesu instalacji, jak przedsta wiono na rysunku 2.4. Zawiera listę wyboru z dostępnymi językam i1. Zaznacz wybrany język i kliknij przycisk Dalej, aby przejść do kolejnego kroku. 1 Polski pakiet język ow y dla zaplecza i strony głównej można pobrać ze strony h ttp://w w w .joom la.pl/ — przyp. tłum.
38
Joomla!. Profesjonalne tworzenie stron WWW
Rysunek 2 .4 .
Pierwsza strona instalacji pozwala na określenie języka
Kroki
W ybierz język
1 : Je ży k
W y b ie rz je ż y k ?.: P i zeijl.K ł u s ta w ie ń
Wytnęre ią?yt, w którym chcesz otrzymywać informacje podczas nstałacy Joomtoi
J : Licencja I : B a z a ik in y c li 5 : U s ta w ie n ia FTP « : K<>nti(|ui .tc ja
7 : Zakończ
i I
e l-G R - G ree k e n -G B - E n g lis h ( U n ite d K in g d o m ) eo->C><- E s p e ra n to e s -E S - S p a n is h (E s p a ñ o l in te rn a c io n a l) e u -E S - B a s q u e (E u s k a ra e ste n d o rra ) ta -IR - P e r s i a r i i ^ j L y ) ti-FI - F in n is h ( S u o m i) fr-F R - F re n ch (Fr) h e - iL - H e b re w (IL ) hi-IN - D e v a n a g a n /H in d i (India) h r-H R - C ro a tia n (Hr) h u -H U - H u n g a ria n (M a g y a r) it-IT - Ita lia n (Italy) ia - J P - J a p a n e s e (J F ’) 10-LA - L a o (’ . • . • ) 11-LT - L ith ua nia n Iv -L V • L a tv ia n n b -N O - N o r s k b o k m é l (N o rw a y) nl-N L N e d e r la n d s (N L -B E )
jest Wolnym Oprogramowaniem udostępnianym na Ncencji üNU/GPl
Następny ekran (zobacz rysunek 2.5) umożliwi Ci sprawdzenie przed rozpoczęciem instalacji, czy wszystkie niezbędne elementy systemu działają poprawnie. Jeśli ustawienie któregoś z parametrów koliduje z wymaganiami Joomla!, w podrozdziale „Konfiguracja PHP” poszukaj wyjaśnienia opcji, które trzeba poprawić. Rysune k 2 .5 .
Ekran sprawdzania przed instalacją potwierdzi, czy wszystkie niezbędne funkcje działają poprawnie
r *yf
-
■ Wersja1.51
Kroki
Przegląd ustawień
SfM
ponow iH r
O
1: Jeżyk P rz e g lą d u s ta w ie ń dla J o o m la ! 1.5.0 P ro d u c tio n S table [ K h e p ri ]
2: P iz e rjM il ust.iwWMi wyiozrtone na t./w w o n o , pros»; podeimti działania w edu ich zmiany, teík ipgo r « ztobtsz nst alaria I x t i 1moze być tK®rc>z»wa.
3 : L ice ncja
-MySQL Domyślny (ęzyk wiełobajtowy Nadpływanie funky wełobaitowych wyłączone confguratton.php Nezapisywalne
4 :B a z .i ikMiyr li
5 : Hst.łwIeiwFTP i>:
Wets» PHP > -4 .3 .1 0 - obsługa kompresji zllb - obsługa XMl
.k R
7 : Zakończ Z a le ca n e u s ta w ie n ia : Te ustawienia są rabcane JoomlaI może nadal daalac rumo, j c ustawienia Twojego s e r v ia nie są do t or,ca z runu zgodne. Jednał re w » w niedostosowanym siodo**ik >j może powodować ióme riespodriewane problems Dlatogo zalecamy iirnanę ustawę:A. a tnsk to
Safe Mode: Wyiwletlai błędy Wczytywanie pkkbw: Magr (Quotes:
Wyłączone W ył,., ron Włączone Włączone Wyłączone W y ld iz t Wyłączone W yło i /«
Register 'Jcbats Buforowanie kodu Wyłączor wynikowego: AutomatycTne uruchomienie
W yło i W ylą i
Kolejny etap wymaga wyrażenia zgody na warunki Powszechnej Licencji GNU. Po kliknięciu D alej zostaniesz przeniesiony do ekranu konfiguracji bazy danych (zobacz rysunek 2.6). Możesz tutaj ustawić adres serwera MySQL (w przypadku instalacji lokalnych jest to często local host), wpisać nazwę użytkownika bazy danych i hasło. Zwróć uwagę, że niektórzy dostaw cy usług internetow ych nie pozw alają na tworzenie baz danych przez programy. W takiej sytuacji utwórz bazę ręcznie, a jej nazwę wpisz w odpowiednie pole. Instalator Joomla! utworzy wewnątrz niej niezbędne tabele. W zakładce Dodatkowe ustawienia, na dole ekranu znajdziesz opcje umożliwiające utworzenie kopii lub usunięcie istniejących danych w bazie.
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
57 J o o r r f a ! ' Instalacja
łysunek 2 .6 .
Ekran konfiguracji bazy danych umożliwia Ci wprowadzenie danych dostępu do konta i nazwę bazy
Kroki 1 : Język
™
K onfiguracja bazy danych U s ta w ie n ia p o łą c z e n ia :
2 : Pi ze
"
39
i l . i ii y li
5: Ustawienia FTP t>: Koiifi<ł«ii .tcj.i 7: Z.ikoiicz
P o d s t a w o w e ii s l. iw l « ii -i Typ bazy danych
W tyra kroi u poświęconym I oriigurac* bazy danych, c to szę podai ad re s serw era. na Itóiyin łownia' m a byc zainstalowany Następr«e poda) nazwę .jry tl* « » rJa MySQl, hasłu uraz ra r w ę bazy danych, ito r ą m a używać Joorila1 tesli tw oi serwer posiada ogr ar*. zorsąSczbę oaz danych uzyi rożnych przedrostków t-stoel żeby zainstalować kit a serwisów >:«nla! przy użyciu i*dr«ri bazy danych '-4le sisz le w ustawieniach dodatkowych Tan m ozes: *owr»ez o ki eśfc sposób w rai i Jow ita! potraktuje istr«eiące tabele o tym samym ro wytn an y przedi OsH u.
m ysql
v
Nazwa serwera lo c a lh o s t TnytM ■ro o t łjfi w w u /yti j iu tet
Nazwa uzytkownka ro o t
ntOŚUCteżOSK'HVJ Te wZufcii'n
be/pteiseńsiwa bazo danym hstfer*
•Txzyi'in p V o n iv ’ d 1 nfrcs/G pod#
M.stusranv.a Tnejcyfc
serm'jó r# fp-rt&M ) na inopctix> tnw &ve 0a. ,fani irt -JJ>; nożny hwcij. ,ivierp u t:
Nazwa bazy danych
J jiitfy strd h v j I r
|oo m le 1 5 |
/deffww&nei w CJhuneHi M ik S'itaKJjt.i.' ć® i *0/?#
\ v m 4 i' w jedtyejbaz* ponęta/ o astowr, r-.c'Jto ST' a poncet
Konfiguracja główna (zobacz rysunek 2.7) polega na ustawieniu kluczowych parametrów strony. Możesz tutaj ustawić jej nazwę, hasło administratora, a także wczytać przykładowe dane. Po kliknięciu Wczytaj przykładowe dane w bazie danych MySQL zostaną zapisane przykładowe dane. W ten sposób możesz się upewnić, że komunikacja z serwerem baz danych przebiega bezbłędnie. r
Rysunek 2 .7 .
Na ekranie konfiguracji głównej można ustawić nazwę strony, hasło administratora, a także wczytać przykładowe dane
„
„
. T \ J O O T t t iO !
K roki
..... I n s t a la c ja
Wersta 1.5
j Cofnij
Główna konfiguracja
Dalej
1: Język 2 :P iz « c jl.v l iis t.iw ie n
N azw a w itry n y : Wpisz nazwę Twojej witryny
3 : Lłcei »•-).»
¡¡£ £ y
www J o o m le J u m p s ta rt c o m
4 : B . v .i d a nych
P o tw ie rd ź e m a il 1 h a s ło a d m in is tra to r a 5 : llstaA leiiM FTP
6 :h o iini|iu.K M
Wpisz adres w a li, będzw to główny adres witryny 1 adres glo'Miegc ednw*rtr * 0ra
7 : Z ak o nc z
Jesk imgnjjesz swoi serw» mo/w.z zrgnwowac tą sekcję, ponieważ tw oje dar>e będą przen«słone z poprzedniego serwisu
Twój emaJ „
o d m m @ J o o m lo J u m p s le rt c o m . .. .
administratora Potwierdź hasło ••••) administratora
Z a ła d u j p r z y k ła d o w e d a n e . d a n e z s e r w is u J o o m la ! I.O .x lu b k o p ii z a p a s o w e j W A /N f Zaleca się instalowanie przykładowych danych. Aby to zrobić, wybierz odpowiednią opcię 1 zstwrerdz tą, zamm przejdziesz dalej Przed zakończeniem nst akacji niżesz wypełnić bazę danych przyWećfcwą treścią. Oto jakie >ą możliwości
____1. nmiwślne done nr/irktodiiMM« n---------------
WczIi!L
r\MCOW .«JT «*** P . ‘
1K.'*I
-
1 Wczytaj! | Załaduj skrypt
.
1
v j,
Instalacja zwieńczona jest informacją o jej zakończeniu. Na ekranie pojawiają się także przyci ski kierujące na główną stronę Joomla! lub do interfejsu administracyjnego (zaplecza).
40
Joom laL Profesjonalne tw orzenie stron WWW
Jeśli instalacja nie pow iodła się, a na ekranie nie pojaw ił się żaden komunikat o błędzie, sprawdź, czy włączone je s t zgłaszanie błędów w PHP (zobacz podrozdział „Zmiana zgłaszania błędów PHP "). Sporadycznie pojawiają się problemy, które nie są wykrywane przez system Joomlał, w takiej sytuacji tylko inspekcja błędów generowanych przez PHP (które bez ustawienia odpowiedniej dyrektywy pozostają ukryte) może pom óc Ci w zdiagnozowaniu kłopotu.
Konfiguracja Apache Web Server Aby uzyskać najlepszą wydajność serwera Joomla!, musisz zacząć od dołu: od serwera Apaclie. Serwer Apache jest jednym z najlepiej sprawdzonych i przetestowanych serwerów świata. Wykorzystuje się go do prowadzenia największych, lecz także najmniejszych stron interne towych. Ponad 70 procent wszystkich stron internetowych uruchamianych jest na Apache. Ze względu na ogólnoświatowe rozm ieszczenie i testowanie stabilne wydania Apache są bardzo trwałe. Nawet jeśli wystąpi jakiś problem, to po jego zbadaniu okazuje się zazwyczaj, że spowodowany został błędną konfiguracją, a nie błędem w samym serwerze. Podstawowa instalacja Apache jest prosta, ale już w dopasowywaniu konfiguracji do własnych potrzeb mogą wystąpić trudności. W głównym pliku konfiguracyjnym (httpd.conf) dostępnych jest ponad czterdzieści różnych dyrektyw. Wiele z nich ma wpływ nie tylko na działanie serwera, ale także na bezpieczeństwo i wydajność.
Pliki konfiguracyjne Jeśli chcesz uzyskać najlepszą wydajność Joomla!, musisz po kolei sprawdzić wszystkie dyrektywy wykorzystywane przez serwer WWW. Ustawienia rekomendowane nie zawsze spełniają wszystkie potrzeby. Główny wpływ na konfigurację ma określenie grupy odbiorców. Czy spodziewasz się tysięcy użytkowników, którzy będą odwiedzać Twoją stronę tylko przez kilka minut? Czy może planujesz stworzenie portalu, na którym użytkownicy spędzą więk szość czasu poświęcanego na przeglądanie internetu? Ustawienie w łaściwych wartości dla niektórych parametrów, takich jak te odnoszące się do przekroczenia czasu, wymaga pewnego doświadczenia, chociaż wiele ustawień można zmienić od razu, aby ułatwić sobie życie, gdy jest się administratorem Joomla!. Trzy najważ niejsze dyrektywy Joomla! to: Di rectory Index, LogLevel i ServerRoot.
Dyrektywa Directorylndex Ta dyrektywa pozwala ustawić, który plik będzie traktowany jako plik indeksowy. Domyślnie dyrektywa ustawiona jest na Directorylndex index.html. Oznacza to, że wywołanie katalogu w przeglądarce bez podania nazwy pliku spowoduje zwrócenie pliku index.html. Ponieważ do uruchomienia Joomla! konieczny jest plik index.php, musisz dodać do listy odpowiedni wpis. Podczas przeglądania pliku httpd.conf powinieneś natrafić na poniższą dyrektywę: # Directorylndex: sets the ple that Apache will server if a directory is requested
D ire c to ry ln d e x in d e x.h tm l < /IfM o d u le >
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
41
Poprawne uruchamianie Joomla! wymaga dodania pliku indeksowego PHP do tej listy. Wstaw odwołanie do index.php tuż przed odwołaniem do pliku HTML, jak poniżej: D ire c to ry ln d e x in d e x .php in d e x.htm l
Następnym razem, kiedy użytkownik poda adres URL bez wskazania pliku (np. http://localhost), katalog zostanie przeszukany pod kątem obecności index.php, plik index.html zostanie wyko rzystany, jeśli nie uda się znaleźć pliku PHP.
lyrektywa LogLevel Ustawienie LogLevel wpływa na liczbę komunikatów zapisywanych przez system w dzienniku błędów. Podczas wczesnego poznawania Joomla! lub testów w czasie wdrażania zwiększenie LogLevel może znacząco ułatwić diagnozę i usuwanie problemów. Takie działanie pozwala Ci także natychmiast wyłapać małe problemy, zamiast później, gdy ciężko obciążony system może wyolbrzymić małe wady. Jak mówi stare powiedzenie — najlepiej zabić potwora, kiedy jest jeszcze mały. Domyślnym ustawieniem LogLevel jest warn. Poniżej wymieniono osiem dostępnych ustawień (w porządku rosnącym względem liczby komunikatów): ■
emerg — Zapisuj tylko krytyczne wpisy, gdy w systemie wystąpił błąd i system nie może dalej funkcjonować.
■ a le rt — Zapisuj ostrzeżenia wymagające natychmiastowej reakcji, aby zapobiec awarii części systemu. ■ c r i t — Przechowuj informacje o błędach, które mogą uszkodzić działanie serwera. ■ warn — Zapisuj wszystkie ostrzeżenia generowane przez system. Jest to domyślne ustawienie. ■ e rro r — Przechowuj błędy dotyczące uruchamiania systemu. ■ notice — Zapisuj informacje o normalnych okolicznościach, które nie zagrażają działaniu systemu. ■ in fo — Dostarczaj dodatkowych informacji wraz z sugestiami optymalizacji. ■ debug — Zapisuj wszystkie komunikaty systemu, włączając w to potwierdzenie uruchamiania procesów. Ustawienie LogLevel na danym poziomie spowoduje zapisywanie komunikatów przewidzia nych dla tego poziomu i wszystkich poziomów o wyższym znaczeniu. Komunikaty należące do poziomu notice są zapisywane zawsze, niezależnie od ustawienia LogLevel. Zalecanym ustawieniem dla serwera produkcyjnego jest przynajmniej c r it . Po ustawieniu na warn wpis do dziennika może wyglądać tak: [S a t Nov 18 08:16:04 2006] [ e r r o r ] [ c l i e n t 1 2 7 .0 .0 .1 ] F ile does not e x is t: C:/Program F iles/A pache Softw are Foundation/Apache2.2/htdocs/AVE. r e fe r e r : h t t p : / /www.yahoo. com
42
Joomla!. Profesjonalne tw orzenie stron WWW
Istnieje także dyrektywa LogFormat, która pozwala dostosować format wpisów do dziennika. W podręczniku Apache znajdziesz dokładne informacje na temat jej wykorzystania. Dyrektywa, która określa położenie i nazwę pliku dziennika błędów, nosi nazwę ErrorLog. Przydatną funkcją, dostępną za pośrednictwem ErrorLog, jest możliwość zapisywania wpisów na zdalny serwer. M ożesz wykorzystać zdalny serwer jako miejsce centralnego przecho wywania dzienników wielu serwerów do analizy. Przechowywanie dziennika na zdalnym serwerze uniemożliwia hakerom, jeśli uda im się włamać na któryś z serwerów, usunięcie dziennika zawierającego ślady ich działań. Aby skorzystać z funkcji wysyłania wpisów dziennika na zdalny serwer, musisz tylko określić zdalny serw ersyslog, jak pokazano poniżej: E rrorLog syslog:logw arehoase
Spowoduje to przesyłanie wpisów dziennika na serwer o nazwie logwarehouse. Aby uzyskać więcej informacji na temat uruchamiania zdalnego serwera wpisów dziennika, odwiedź artykuł w Wikipedii poświęcony standardowi syslog: h ttp : //e n .w l ki pedi a . o rg /w i ki /Sys1og
Dyrektywa ServerRoot Dyrektywa ServerRoot określa główny katalog serwera WWW. W przypadku systemu Linux dyrektywa byłaby ustawiona podobnie jak poniżej: ServerRoot " /u s r/lo c a l/a p a c h e "
Na platformie Windows wyglądałaby raczej tak: ServerRoot "C:/Program F iles/A pache Softw are Foundation/Apache2.2"
Wartość ta będzie dodana na początku do wszystkich ścieżek, które nie są w pełni odpowied nie. Jeśli dziennik nie jest zapisywany we właściwym miejscu lub pliki konfiguracyjne są niedostępne, sprawdź ustawienie tej dyrektywy.
Inne dyrektyw y httpd.conf W poprzednich podrozdziałach szczegółowo opisano najważniejsze dyrektywy, które nale ży ustawić na początku. Dostępnych jest jednak wiele innych, których ustawienie wpływa na Joomla!. Sugerowane ustawienia dla takich opcji, jak języki, SSL, katalogi użytkowników itd., można znaleźć w podkatalogu /defaults, w ewnątrz / conf, który z kolei znajduje się w głównym katalogu serwera WWW. Przykładowe pliki .co«/'zawierają sugestie, które mogą Ci pomóc w ustawianiu systemu pod kątem uzyskania danych funkcji. Tabela 2.1 zawiera listę znaczących dyrektyw i ogólny opis każdej z nich. Wszystkie dyrek tywy znajdziesz w pliku konfiguracyjnym. Odpowiednie ustawienie uzależnione jest od Twoich potrzeb względem instalacji.
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
43
Tabela 2 .1. Ważne dyrektywy serwera Apache D y re k ty w a
opis
AccessFileName
Określa nazwę pliku konfiguracyjnego.
AddCharset zestawZnaków rozszerzenie [ro z s z e rz e n ie ] ..
Przypisuje wybrane rozszerzenia do podanego zestaw u znaków.
AddDefaultCharset On | Off|zestawZnaków
Dodaje domyślny zestaw znaków do typu MIME text/plain i text/HTML,
AddLanguage
Przypisuje język dla plików z danym rozszerzeniem.
Al 1owCONNECT
Określa porty, na których m ogą być przyjmowane połączenia przez proxy.
A llow O verride
Określa typy dyrektyw, których użycie jest dozwolone w pliku htaccess.
CacheDefaultExpire
Oznacza dom yślny czas przechowyw ania dokumentu w pamięci podręcznej, jeśli nie zostanie ustawiony czas w ygaśnięcia tego pliku.
CharsetD efault
Określa dom yślny zestaw znaków.
CookieExpires
Przechowuje czas w ygaśnięcia tracking cookie w sekundach.
CustomLog
Pozwala ustawić własny plik dziennika, a także je g o format.
DefaultLanguage
Określa dom yślny język , który zostanie przesłany w postaci znacznika MIME.
Deny
Określa listę adresów, które mają zabroniony dostęp do serwera WWW. Ta dyrektywa m oże być ogromnie pożyteczna w przypadku obrony przed atakami hakerów lub ograniczenia połączeń z nieautoryzowanymi lub nieprzyjaznymi odw iedzającymi.
DocumentRoot
Przechowuje ścieżkę dostępu do głów nego katalogu przeznaczonego dla odw iedzających. Najczęściej dyrektywa ta wskazuje ścieżkę do folderu htdoes, w którym zainstalowany jest Joomla!. Na platformie W indows m oże być ustawiona jako C./P rogram F iles/A pache Softw are Foundation/Apachc’2. 2/htdocs.
ErrorDocument
W skazuje dokument, który zostanie zw rócony odw iedzającem u w przypadku wystąpienia błędu. System Joomla! nadpisuje to ustawienie i powoduje zwrócenie własnej strony z komunikatem o błędzie. Taką stronę można zastąpić określonym , własnym szablonem.
ErrorLog
Wskazuje ścieżkę do pliku dziennika, w którym zapisywane są komunikaty systemu.
Header
Pozwala ustawić nagłówek odpowiedzi HTTP.
HeaderName
W skazuje nazwę pliku, którego zawartość zostanie wstawiona przed listą plików w katalogu, jeśli ustawiono dyrektywę Header.
IdentityC heck
Włącza lub wyłącza zapisywanie informacji o odwiedzających, dostarczonych w postaci tożsamości RFC 1413 dołączanej przy żądaniu.
KeepAli ve
W łącza lub w yłącza obsługę trwałych połączeń lub sesji.
KeepAliveTimeout
Określa limit czasu, po przekroczeniu którego zostanie przerwane trwałe połączenie lub trwała sesja. .
44
Joomla!. Profesjonalne tworzenie stron WWW
Tabela 2 .1 . Ważne dyrektywy serwera Apache — ciąg dalszy D y re k ty w a
opis
L a n g u a g e P rio rity
Przechowuje kolejność wariantów językow ych, jeśli język nie został określony przez odwiedzającego.
Li sten
Um ożliwia ustawienie portu i adresu 1P, na którym serwer będzie czekać na połączenia. Zobacz także dyrektywę ServerName.
MaxKeepAli veRequests
Określa dopuszczalną liczbę żądań dla jednego trwałego połączenia. D om yślne ustawienie to 100.
S c r ip t
Wskazuje skrypt CGI (Common G atew ay Inter/ace), który zostanie uruchomiony w odpowiedzi na określone żądanie. W przypadku uruchamiania PHP przez CGI należy odpowiednio skonfigurować tę dyrektywę.
S crip tL o g
U żyteczna tylko w przypadku uruchamiania PHP przez CGI. W takim przypadku dyrektywa określa plik dziennika błędów, do którego trafiają komunikaty CGI.
ServerAdmi n
Podczas wysyłania w iadom ości od serwera do klienta dołączany jest adres e-mailowy. Administrator Joomla! może zdefiniować to ustawienie, aby um ożliw ić użytkownikom przesyłanie żądań i raportów.
ServerName
Nazwa komputera i port wykorzystywane przez serwer. Domyślnym ustawieniem jest ServerName lo c a lh o s t :80. Jeśli korzystasz z kilku serwerów na jednym komputerze (np. Apache i 11S), m ożesz użyć tę dyrektywę do zmiany portu, na którym Apache nasłuchuje połączeń.
TimeOut
Ilość czasu, jaką Apache m oże pośw ięcić na przetwarzanie żądania, zanim zostanie ono przerwane. Dom yślne ustawienie to 300 sekund.
TraceEnable
Włącza lub wyłącza obsługę zapytań TRACĘ. Domyślnie ustawiona na on.
TransferLog
W skazuje położenie pliku dziennika z informacjami o transferach.
U serD ir
Określa katalog, w którym użytkownicy mogą umieszczać swoje strony. Jeśli z Twojego serwera będzie korzystać wielu użytkowników, m ożesz tutaj ustawić odpowiedni katalog.
Vi rtualDocumentRoot
Pozwala ustawić głów ny katalog dla serwera wirtualnego. M ożesz wykorzystać tę dyrektywę J e śli chcesz uruchomić Joomla! na wirtualnym serwerze.
VritualDocum entRootIP
Określa adres IP wirtualnego serwera.
Pliki dziennika Pliki d zien nika serw era A p ach e m o g ą b yć bardzo p o m o cn e w m onitorow aniu serwera W W W . M im o iż n iek tó re r o z s z e r z e n ia Joo m la ! p o tr a fią tw o r z y ć sta ty sty k i, n ie j e s t to z a le c a n e , p o n ie w a ż o b n iża w y d a jn o ść sy stem u . Jeśli w ię c c h c e s z dok ład n ie m o n ito ro w a ć ruch na stronie, m u s is z w y k o r z y sta ć d o te g o d z ien n ik i serw era W W W . Istn ieją trzy ty p y tak ich d zien n ik ów : access, erro r i im ta lt.
' Informacje o próbie, informacje o błędach i komunikaty instalacyjne — przyp. tłum.
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
45
Analiza plików zawierających te dzienniki ułatwi Ci: ■
Wyrównywanie obciążenia - Musisz zdać sobie sprawę, że jeśli Twoja strona stanie się popularna, serwer, na którym działa, zostanie poddany sporemu obciążeniu. Powinieneś znać pory dnia, w których obciążenie jest największe, a także te, kiedy ruch na stronie jest bardzo mały. W określonych sytuacjach (np. opublikowanie informacji podawanych przez media) możesz spodziewać się ogromnego ruchu na stronie. Te ekstremalne przypadki mogą skłonić Cię do wyłączenia funkcji, które szczególnie obciążają procesor (np. funkcja wyszukiwania), dopóki obciążenie nie zmaleje. W czasie małej aktywności warto wykorzystać okazję i zrobić kopię zapasową strony.
■ Określenie, ja c y użytkownicy korzystają ze strony — Dzienniki zawierają ogromne ilości informacji, które m ogą okazać się szczególnie użyteczne dla administratora systemu. Czy nie chciałbyś poznać, jaki procent odwiedzających korzysta z danej przeglądarki? Częstojest to zaskakujące. A co jeśli połowa odwiedzających pochodzi z Holandii? Jakie ma to znaczenie przy doborze treści, które pojawią się na stronie? Czy nie chciałbyś dowiedzieć się, za pośrednictwem której strony trafiają do Ciebie użytkownicy z Holandii? To tylko kilka pytań, na które można odpowiedzieć, jeśli tylko dokładnie przyjrzeć się plikom dziennika. ■ Sprawdzenie, ja kie błędy wystąpiły na stronie — Jeśli któryś z modułów serwera nie działa poprawnie lub pojawia się błąd podczas uruchamiania jednej z funkcji, powinieneś o tym wiedzieć. Dziennik błędów zawiera informacje przydatne podczas usuwania problemów, dzięki czemu możesz zapewnić poprawne działanie serwera. ■ Dostrzeżenie prób ataków i włamań na stronę — Sieć Web przypomina trochę Dziki Zachód, ponieważ obowiązuje w niej niewiele reguł. W latach siedemdziesiątych rząd Stanów Zjednoczonych borykał się z problemem nastoletnich hakerów, którzy dla zabawy włamywali się do systemów komputerowych. Obecnie jest to problem globalny, a hakerów cechują często groźniejsze zamiary. Dzienniki m ogą zawierać informacje o próbach dostępu przeprowadzanych według pewnego wzorca. Dzieje się tak w sytuacji, kiedy haker próbuje zaatakować system z użyciem oprogramowania, które popularnie nazywa się botem. Jeśli dowiesz się, że system stał się obiektem ataku, możesz podjąć przeciwdziałania różnego typu — włączając w to zablokowanie dostępu z adresu IP, który wykorzystuje haker. Nie zdołasz zapobiec czemukolwiek, jeśli nie wiesz, co się dzieje. Uważna analiza plików dziennika może dostarczyć sygnałów, że system stanie się obiektem ataku. Po instalacji serwera Apache uruchom go na krótki czas, a następnie sprawdź zawartość podkatalogu /logs, który znajduje się wewnątrz głównego katalogu Apache. Znajdziesz w nim trzy pliki. Przejrzyj ich zawartość w zwykłym edytorze tekstu, aby zapoznać się z nimi. W miarę postępu pracy z tą książką będziesz wracać do plików dziennika, aby udoskonalać konfigurację i lepiej zarządzać stroną.
Foldery modules i extensions Foldery /modules i /extensions zawierają wszystkie wtyczki, które umożliwiają współpracę serwera Apache z innymi programami, np. PHP. Nie ma powodu, abyś zmieniał zawartość tych folderów podczas pracy z Joomla!. Jeśli jednak zauważysz dziwne zachowanie systemu.
46
Joomla!. Profesjonalne tworzenie stron WWW
w arto sprawdzić, czy są dostępne uaktualnione wersje modułów umieszczonych w tych katalogach. W systemie Linux, aby określić wersję moduhi lub rozszerzenia, powinieneś wykorzystać komendę f i le , przykładowo: f ile
mod_auth_dbm.so
W przypadku platformy Windows możesz sprawdzić wersję rozszerzenia lub moduhi, klikając zakładkę Wersja w oknie Właściwości pliku, jak przedstawiono to na rysunku 2.8. W internecie lub na stronie serwera Apache (www.apache.org) możesz sprawdzić, czy inni użytkownicy zgłaszali problemy z zainstalow aną u Ciebie w ersją wtyczki. Jeśli masz zamiar poprosić innych o pomoc w rozwiązaniu Twojego problemu, dołącz dokładne informacje o wersjach wtyczek, które wykorzystujesz. Umożliwi to precyzyjniejszą ocenę Twojej sytuacji. Rysunek 2 .8 .
Sprawdź wersje plików w folderach modules i extensions, je ś li napotkałeś trudności
Nie wszystkie moduły, które znajdują się w tych folderach, są aktywne. Korzystając z odpo wiednich dyrektyw w pliku httpd.conf możesz wyłączać lub włączać poszczególne wtyczki. Dodatkowe moduły, które nie są domyślnie zainstalowane, można pobrać ze strony: h ttp : / /moduł es.apache.org
Folder htdocs Domyślnie katalog ten zawiera pliki stron internetowych. Musisz zwrócić szczególną uwagę na zabezpieczenie folderu /htdocs. Ponieważ pliki wewnątrz tego katalogu m ają prawa pozwalające uruchamiać kod PHP, należy zapobiec sytuacji, w której haker mógłby umieścić własny kod lub wirusa wewnątrz /htdocs. W rozdziale 14. omówiono sposoby zabezpieczenia tego katalogu.
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
47
Konfiguracja PHP Konfiguracja PHP jest znacząco prostsza niż konfiguracja Apache, jednak niesie ze sobą nie mniej potencjalnych zagrożeń bezpieczeństwa. Silnik PHP bezpośrednio uruchamia kod, dlatego konieczna jest poprawna konfiguracja, która zapobiegnie lukom w zabezpieczeniach. W przypadku udanego ataku haker może zdobyć dostęp do informacji poufnych, usunąć dane lub uruchomić program, który pozwoli mu na dodatkowe szkodliwe działania. Joomla! wymaga do poprawnego działania PHP w wersji 4.3.0 lub nowszej. Przed rozpoczęciem instalacji (zwłaszcza zdalnej) sprawdź wersję PHP. aby uniknąć problemów. Częstą sztuczką wykorzystywaną przez hakerów jest uruchomienie fałszywej podstrony na Twoim serwerze. Poprzez skierowanie na nią użytkowników mogą zdobyć poufne dane, rozsyłać wirusy, przeprowadzać ataki DoS pochodzące z Twojego serwera lub rozsyłać spam. Najprostszym sposobem określenia konfiguracji PHP jest wykorzystanie funkcji phpinfoO . W ten sposób dowiesz się także, czy PHP działa poprawnie. Plik zawierający pojedynczą linię spowoduje wyświetlenie konfiguracji, jak przedstawiono na rysunku 2.9.
________
I______________ _
Rysunek 2 .9 .
Komenda phpinfo() wyświetli kompletną konfigurację PHP w sekcji Configuration
PHP C redits C o n fig u ra tio n PHP Core Mastei Value
Local Value
Dfcecltve .illow c all j a nej>as s je fe ie n c e On
On
allow j a I J open
On
On
.illnw ml inch ule
Off
Off
always_populate i awj»ost_«|«
Off
&
&
■uijje p a i «<01 .ot itpm
&.
&,
.ISpJ.KJS
Off
Off
«nito_appeiHl_flle
no value
no value
autojjlohals Jit
On
On
•TKojHepemlJWe
no value
no value
hi owscap
CtxampptphpXbrowscap \browscap.ini
C \xampp\php\browscap \browscap.ini
no value
no value
default jniinetype
text/html
text/html
define syshnj_v.il i.ihles
Off
Off
tlsable classes
no value .,n
no value —
Po przewinięciu strony do sekcji Configuration możesz przejrzeć listę dyrektyw oraz ich ustawienia. Poniżej w poszczególnych sekcjach przedstawiono konfiguracje dla poszcze gólnych wtyczek — wiele z nich zawiera także informacje o wersji. Sekcja PHP Variables, która znajduje się na dole strony, zawiera wartości zmiennych PHP. Możesz wykorzystać te informacje, aby lepiej zrozumieć działanie systemu, a także wytropić źródło występowania błędu.
48
Joomla!. Profesjonalne tw orzenie slron WWW
Jeśli ręcznie kompilujesz PHP, musisz dołączyć obsługę trzech bibliotek: MySQL, Zlib i XML. W przeciwnym wypadku Joomla! nie będzie działać poprawnie. Podczas uruchamiania systemu Joomla! sprawdzane są wartości kilku dyrektyw. Oto ich lista wraz z zalecanymi ustawieniami: ■ Safe mode — Ustaw safe_mode na Off. ■ Di spl ay Errors — Ustaw di spl ay_errors na On (tylko na serwerze testowym). ■
F ile Uploads — Ustaw f i le uploads na On.
■
Magic Quotes GPC — Ustaw magic_quotes_gpc na On.
■ Magic Quotes Runtime — Ustaw magic_quotes_runtime na Off. ■ Output B u ffe rin g - - Ustaw output_buffering na Off. ■ Session auto s ta rt — Ustaw session.auto_start na Off. ■ Regi s te r G1 obal s — Ustaw regi ster_gl obal s na O ff w pliku globals.php w instalacji Joomla!. ■ Register Globals Emulation — Ustaw RG_EMULATION na O ff () w pliku globals.php. ■ Z lib compression — Ustaw z l ib.ouput_compression na On. Upewnij się, że plik configuration.php znajduje się w katalogu Joomla!, a także że ma ustawio ne uprawnienia zapisu, aby możliwe były zmiany ustawień systemu Joomla! z poziomu interfej su administratora. Zapis powinien być także możliwy w katalogu zapisu sesji (ang. session sa\’e path), w przeciwnym wypadku pojawią się błędy w funkcjonowaniu Joomla!. Zmiany miejsca zapisu sesji możesz dokonać poprzez modyfikację dyrektyw PHP.
D y r e k ty w y PHP Nie wszystkie spośród wielu opcji konfiguracyjnych PHP mają bezpośredni wpływ na Joomla!. Wiele z nich nigdy nie będzie potrzebnych, dlatego w tym podrozdziale opisano tylko te, które m ają znaczenie dla użytkownika Joomla!.
Zgłaszanie błędów PHP Aby włączyć wyświetlanie komunikatów o błędach PHP (bardzo pomocne podczas usuwa nia błędów w szablonie lub nowym rozszerzeniu), musisz zmienić ustawienie dyrektywy di spl ay_errors w pliku php.ini. Aby włączyć di spl ay_errors użyj poniższej linii: d is p la y _ e rro rs = On
Ta dyrektywa jest domyślnie wyłączona, aby zapobiec zdobyciu przez hakera dodatkowych informacji na temat systemu, w którym działa strona. Komunikaty o błędach są jednak zapisy wane do pliku dziennika błędów serwera Apache, o ile ustawiona jest poniższa dyrektywa: lo g _ e rro rs = On
Rozdział 2 . ■ Szczegóły instalacji i konfiguracji
49
Jest to ustawienie domyślne. Podczas diagnozowania błędów w kodzie PHP ciągłe otwieranie pliku dziennika błędów, aby sprawdzić, czy problem został rozwiązany, jest niewygodne i niepraktyczne. Dużo prościej jest włączyć wyświetlanie infonnacji o błędach w oknie prze glądarki wraz z właściwą treścią strony. Funkcja display errors powinna być wyłączona na wszystkich serwerach produkcyjnych. Informacje o błędach mogą zdradzić konfigurację bazy danych, nazwy ścieżek, nazwy i adresy serwerów, a także wiele innych kluczowych informacji, które haker może wykorzystać podczas ataku. Podobnie jak w przypadku Apache, możesz kontrolować obfitość komunikatów o błędach. Do wyboru są poniższe ustawienia: E ALL — Wyświetla wszystkie błędy i ostrzeżenia, poza błędami E_STRICT.
■
■ E ERROR — Wyświetla krytyczne błędy wykonywania. ■ E_RECOVERABLE_ERROR — Wyświetla prawie krytyczne błędy wykonywania. ■ E_WARNI NG— Wyświetla ostrzeżenia. ■ E PARSE — Wyświetla błędy parsowania kodu PHP. ■
E_N0TICE — W y św ie tla w s k a z ó w k i.
■ E_STRICT — Informuje o zalecanych zmianach kodu, aby zapewnić kompatybilność z przyszłymi wersjami PHP. ■ E CORE ERROR — Wyświetla krytyczne błędy, które wystąpiły podczas uruchamiania PHP. ■ E_CORE_WARNI NG— Wyświetla ostrzeżenia, które wystąpiły podczas uruchamiania PHP. ■ E COMPILE ERROR — Wyświetla błędy dotyczące kompilacji kodu. ■ E_C0MPILE WARNING — Wyświetla ostrzeżenia dotyczące kompilacji kodu. ■ EJJSER ERROR — Wyświetla komunikaty o błędach zdefiniowane przez programistę. ■ E_USER_WARNI NG — Wyświetla ostrzeżenia wygenerowane przez użytkownika. ■ E_USER_NOTICE — Wyświetla wskazówki wygenerowane przez użytkownika. Domyślnym ustawieniem zgłaszania błędów jest E ALL, jednak możesz zmienić to ustawienie, aby dołączyć także ostrzeżenia E_STRICT. W ykorzystaj do tego celu operator OR ( |) , jak pokazano poniżej: e rr o r_ re p o rtin g * E_ALL|E_NOTICE
Możesz wykluczyć daną kategorię błędów, wykorzystując operatory AND (&) i N O T (~): e rr o r_ re p o rtin g = E_ALL & ~E_USER_NOTICE
Być może jeszcze nie zdajesz sobie sprawy z tego, jak ważne jest zgłaszanie błędów. Zro zumiesz to w momencie, kiedy natrafisz na problem, którego nie pojmiesz. Przykładowo możesz napotkać pustą stronę podczas próby dostępu do strony Joomla! bez żadnej wska zówki, gdzie leży problem. Dzięki włączonemu wyświetlaniu błędów możesz natychmiast przystąpić do szukania źródła problemu.
50
Joomla!. Profesjonalne tworzenie stron WWW
W przypadku instalacji pusta strona występuje najczęściej z powodu problemu ze ścieżką zapisu sesji. Dzięki włączonemu wyświetlaniu błędów (lub po zbadaniu treści dziennika błędów) zostanie wyświetlony komunikat podobny do poniższego: Warning: s e s s io n _ s ta r t( ) [fu n c tio n .s e s s io n _ s ta r t( ) ] : open(C:\D0CUME-l\danny\L0CALS~l\Temp\php\upload\sess_61p04kg4fu0fho31vagt3je8d74. 0_RDWR) f a ile d : No such f i l e o r d ir e c to r y (2 ) in C:\Program F iles\A pache Software F o u n d a tio n \A p a ch e 2 .2 \h td o cs\lib ra r1 e s\jo o m la \e n viro n m e n t\se ssio n .p h p on lin e 234.
Komunikat zawiera informację, że nie można rozpocząć sesji ponieważ „nie ma takiego pliku lub katalogu” (ang. no such file or directory). Oznacza to błędną konfigurację serwera PHP, co uniemożliwia zapisywanie i odczytywanie katalogu sesji. Otwórz plikphp.ini i wyszukaj dyrektywę session.save_path. Prawdopodobnie serwer WWW nie ma dostępu do podanej ścieżki. Ustawienie dyrektywy w taki sposób, aby katalog sesji znajdował się wewnątrz katalogu serwera WWW, rozwiąże problem na serwerze testowym. W środowisku produkcyjnym powinieneś wykorzystać narzędzia udostępnione przez dostawcę usług internetowych, żeby ustawić uprawnienia do wybranego katalogu. W przypadku platformy Windows dyrektywa ustawiona jest podobnie jak poniżej: session.save_path= " C:\DOCUME-l\danny\LOCALS~l\Temp\php\upload"
Aby rozwiązać problem, należy utworzyć folder o nazwie php session wewnątrz głównego katalogu serwera WWW, a następnie wskazać ten folder w konfiguracji PHP. Po stworzeniu nowego katalogu ustaw dyrektywę jak poniżej (całość w jednej linii): session.save_path="C :/P rogram F ile s/A p a che Software F oundation/A pache2.2/htdocs/php_sessions"
W przypadku instalacji zdalnej na serwerze z zainstalowanym Linuksem zmień ustawienie dyrektywy z przypominającej poniższą: s e ssion.save_path = /va r/p h p _se ssio n s
na katalog, do którego dostęp ma serwer WWW, na przykład: s e ssion.save_path = /b illc a t/w s /b l8 3 3 /p o w .d a n /p h p _ s e s s io n s
Następnie uruchom ponownie Apache, a Joomla! powinien działać poprawnie. Na podsta wie tego prostego przykładu możesz zaobserwować, jak bardzo wyświetlanie komunikatów o błędach może pomóc w rozwiązywaniu problemów. Opisana dyrektywa jest tylko wierz chołkiem góry lodowej w zakresie konfiguracji PHP.
Ważne ustawienia PHP W tabeli 2.2 przedstawiono skróconą listę dyrektyw PHP, które znacząco wpływają na działa nie Joomla!. Pierwsza kolumna zawiera nazwy dyrektyw, druga — możliwe ustawienia. W trzeciej kolumnie umieszczono krótki opis funkcji, którą pełni dana dyrektywa.
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
51
abela 2 .2 . Ważne ustawienia PHP D y re k ty w a
M o żliw e w a rto śc i
opis
doc_root
Ciąg znaków
Określa katalog, w którym będą uruchamiane skrypty PHP. W celu poprawnego działania Joomla! najlepiej pozostaw ić tę dyrektywę nieustawioną.
expose_php
On lub O ff
W yłącza informacje o PHP dołączane do nagłówka odpowiedzi. D om yślnym ustawieniem w w iększości środowisk produkcyjnych jest O ff.
e x te n s io n _ d ir
Ciąg znaków
Wskazuje katalog, w którym znajdują się rozszerzenia i moduły PHP. Sprawdź ustaw ienie tej dyrektyw y, je śli np. wystąpi problem połączenia z M ySQL.
file _ u p lo a d s
On lub O ff
W łącza lub w yłącza obsługę wysyłania plików. W iele funkcji system u Joomla!, takich jak dodawanie szablonów, rozszerzeń i obrazków, wym aga ustawienia na On.
i nclude_path
Ciąg znaków
Określa listę katalogów, które będą przeszukiwane przez funkcje re q u ire i in clu d e .
magic_quotes_gpc
On lub O ff
W łącza lub wyłącza automatyczne kodowanie apostrofów, cudzysłow ów , lew ych ukośników lub znaków zerow ych. U staw ieniem zalecanym dla Joomla! jest On, chociaż na wielu serwerach dom yślnie jest O ff.
magic_quotes_ '-►runtime
On lub O ff
W łącza lub w yłącza autom atyczne kodow anie apostrofów , cudzysłow ów , lew ych ukośników lub znaków zerow ych pochodzących ze źródeł zewnętrznych. U staw ieniem zalecanym dla Joomla! jest O ff.
max_execution_ '"►time
Liczba
Ustawia w sekundach maksymalny czas uruchamiania skryptu PHP. Ustawienie na 0 w yłącza limit. D om yślne ustawienie to 30 sekund. Jeśli przykładowo korzystasz z rozszerzenia, które potrzebuje sporo czasu, aby pobrać informacje z zewnątrz, m ożesz zw iększyć tę wartość.
m ax_input_tiire
Liczba
Ustawia w sekundach m aksymalny czas odbierania danych przychodzących. W pływa to także na czas oczekiwania na zakończenie wysyłania plików. Dom yślne ustawienie to 60 sekund. Jeśli przewidujesz, że w ysyłanie plików m oże trwać dłużej, zm ień ustawienie tej dyrektywy.
memor y j i mi t
Liczba
Ustawia limit pamięci.
safe_mode
On lub O ff
Wprowadza ograniczenia dla skryptów na współdzielonym serwerze (stosow ane często przez dostaw ców usług internetowych). Blokowane jest m iędzy innymi uruchamianie plików (oprócz plików PHP), funkcje chmod() (zmiana praw dostępu do katalogów i plików) i system( ). Jeśli safe mode jest włączona na serwerze, z którego korzystasz, w iele z pow yższych ograniczeń można ominąć (jednak nie za pośrednictwem PHP) dzięki narzędziom dostarczonym przez administratora.
52
Joomla!. Profesjonalne tw orzenie stron WWW
Tabela 2 .2 . Ważne ustawienia PHP — ciąg dalszy D y re k ty w a
M o żliw e w a rto ś c i
opis
upload_max_ '- ► f ile s iz e
Ciąg znaków
O kreśla m aksym alny rozmiar (w m egabajtach) w ysyłanych plików . D om yśln e ustaw ien ie to 2M, c o odpow iada 2M B.
upload_tmp_d1r
Ciąg znaków
Określa katalog, w którym tym czasow o zapisywane są w ysyłane pliki.
u s e r_ d ir
Ciąg znaków
Podstawowa nazwa katalogu używanego jako katalog domowy użytkownika dla plików PHP, na przykład p u b lic h tm l.
z lib . o u t p u t _ "-►compression
On, O ff lub lic z b a
W łącza lub w yłącza obsługę kompresji z lib . W yłączenie uniem ożliwia skorzystanie z tej funkcjonalności w Joomla!.
z lib .o u tp u t_ '-►handler
Ciąg znaków
W skazuje inną bibliotekę kompresji, gdy standardowa jest niedostępna. D om yślnie nieustawiona, co powoduje wykorzystanie standardowej biblioteki.
Zanim zaczniesz zmieniać ustawienia PHP, zrób kopię zapasową pliku php.ini, abyś zawsze mógł wrócić do ustawień oryginalnych. Ponieważ plik .ini jest plikiem tekstowym, i z tego powodu nie zajmuje zbyt dużo miejsca na twardym dysku, warto rozważyć robienie kopii zapasowej przy każdej większej zmianie ustawień. Pamiętaj, że po wprowadzeniu zmian w konfiguracji PHP musisz uruchomić ponownie Apache , lub IIS, aby nowe ustawienia zaczęły obowiązywać. Konfiguracja odczytywana jest podczas uruchamiania serwera PHP, dlatego ponownie uruchomienie serwera WWW spowoduje wprowadzenie nowych ustawień. Alternatywnym podejściem do robienia kopii zapasowych pliku php.ini jest zamiana aktualnego ustawienia w komentarz poprzez wstawienie znaku średnika (;) na początku linii. Nowe ustawienie wprowadza się poniżej. Jeśli dokonujesz zmian w konfiguracji z określonego powodu, zalecane je st dodanie komentarza, który opisze pow ód modyfikacji. Podczas konfigurowania następnego serwera możesz odwołać się do istniejącego pliku .ini, co ułatwi Ci dobór odpowiednich ustawień.
Konfiguracja MySQL Uruchomienie MySQL jest zaskakująco proste. Prawdziwą sztuką jest jednak dostrojenie wydajności pod kątem jak najszybszej odpowiedzi na żądania Joomla!. MySQL zawiera wiele ustawień, które pozwalają wpływać na sposób wykorzystania sesji i zużycia pamięci. Możliwa jest także taka konfiguracja, przy której obciążenie będzie równoważone na kilku serwerach. Jest to szczególnie przydatne, jeśli Twoja strona stanie się wyjątkowo popularna. Poprawna konfiguracja MySQL jest wynikiem obserwacji faktycznego wykorzystania zaso bów, a nie przewidywania przyszłych obciążeń. Najczęstszym ograniczeniem wydajności MySQL jest wyszukiwanie, czytanie i zapisywanie informacji na dysku twardym. Właściwy dobór ustawień możliwy jest tylko dzięki obserwacji, jak faktyczne kształtuje się obciążenie systemu.
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
53
istalacja M yS Q L Instalacja MySQL jest jednocześnie najprostsza i najbardziej skomplikowana ze wszystkich serwerów wykorzystywanych przez Joomla!. Serwer MySQL nigdy nic nastręczał trudności w nowym systemie, w przeciwieństwie do sporadycznych problemów z pozostałymi serwerami. Problemem może być natomiast komunikacja MySQL z pozostałymi serwerami — szczególnie z PHP.
oprawne ustawienie zmiennej Path w Windowsie Jeśli po uruchomieniu Joomla! na platformie W indows otrzymasz komunikat, że serwer MySQL jest wyłączony, upewnij się, że po instalacji PHP uruchomiłeś ponownie system operacyjny. Aby skorzystać z rozszerzeń PHP, zmienna Path musi wskazywać na katalog PHP. Podczas instalacji odpowiednie zmiany wprowadzane są automatycznie, a odpowiednia ścieżka wstawiana jest na listę wartości zmiennej Path. Zmiany nie zostaną jednak wprowa dzone do momentu ponownego uruchomienia systemu operacyjnego, ponieważ zmienna Path odczytywana jest wyłącznie podczas startu systemu. Aby sprawdzić, czy zmienna Path została właściwie ustawiona, przejdź do Panelu Sterowania, otwórz System i kliknij zakładkę Zaawansowane. Kliknij przycisk Zmienne środowiskowe na dole zakładki. Aktualna wartość zmiennej Path widoczna jest na liście Zmiennych sys temowych. Ciąg znaków przypisany zmiennej Pdth je st z reguły dość długi. Dlatego, je śli chcesz zmienić lub sprawdzić je j wartość, wybierz ją z listy i naciśnij przycisk Edytuj. Zmienna zostanie wyświetlona w polu tekstowym, a jeg o zawartość będzie zaznaczona. Naciśnij Ctrl+C, aby skopiować wartość zmiennej do schowka. Następnie wklej j ą do edytora (np. systemowego notatnika), co pozwoli Ci łatwiej określić aktualne ustawienie lub wprowadzić zmiany. Upewnij się, że wartość zmiennej zawiera odniesienie do katalogu PHP. Jeśli go brakuje, dodaj na końcu listy średnik (, ), a następnie wprowadź ścieżkę. Uruchom komputer ponownie i sprawdź, czy problem nadal występuje. W większości przypadków problem zostanie roz wiązany.
'otączenie z MySQL 5 Po ukończeniu pierwszego etapu instalacji Joomla!, kiedy zostanie wyświetlony ekran konfiguracji bazy danych, możesz natrafić na kolejny problem. Po wpisaniu poprawnego ad resu serwera MySQL, nazwy użytkownika i hasła może pojawić się komunikat „nie można się połączyć” (ang. can 7 connect). Powodem jest prawdopodobnie korzystanie z wprowadzonego w MySQL 5 nowego kodowania haseł. Istnieją dwa sposoby rozwiązania tego problemu. Możesz wyłączyć nowy rodzaj kodowania w całym systemie MySQL lub włączyć stare kodowanie haseł dla poszczególnych użytkow ników bazy danych. Jeśli oprócz Joomla! korzystasz z innych aplikacji, które łączą się z MySQL, zalecane jest drugie rozwiązanie.
54
Joomla!. Profesjonalne tworzenie stron WWW
Aby włączyć kodowanie haseł zgodne z MySQL 4., uruchom z wiersza poleceń narzędzie zarządzania MySQL. Po pojawieniu się znaku zachęty mysql> wprowadź poniższą linię, zastę pując admi ni stratorJoom I a właściwą nazwą użytkownika, amojehaslo hasłem, które będziesz wykorzystywać: SET PASSWORD FOR 'a d m in is tra to rJ o o m la ' = 0LD_PASSW0RD('m o je h a s lo '):
W odpowiedzi uzyskasz komunikat, że zapytanie dotyczyło 0 wierszy (ang. 0 rows affected). Mimo to zmiana kodowania hasła powinna zostać poprawnie wprowadzona. Uruchom ponow nie instalację Joomla!, a problem z połączeniem z bazą danych nie powinien już występować. Aby zmienić sposób autoryzacji w całym systemie MySQL, otwórz aplikację MySQL Admini s t r a t o r i kliknij przycisk Setup Variables. Wybierz zakładkę Security i przewiń na dół, do póki nie zobaczysz opcji Use old passwords. Zaznacz pole wyboru po lewej stronie. Aby zmiany zaczęły obowiązywać, uruchom ponownie serwer MySQL odpowiednią opcję znajdziesz, klikając przycisk Service Control.
Tryb Strict i problemy ze wstawianiem danych Poprawne połączenie z bazą danych może oznaczać koniec Twoich kłopotów z MySQL — lub nie. Podczas próby zainstalowania przykładowych danych Joomla! może pojawić się na ekranie lub w pliku dziennika błędów Apache, jeśli wyświetlanie błędów na stronie zostało wyłączone, błąd o treści przypominającej: SQL=BL0B/TEXT column 'comments' c a n 't have a d e fa u lt va lu e :
...
Przyczyną tego błędu jest prawdopodobnie serwer MySQL działający w trybie strict. Oznacza to włączenie opcji STRI CT_TRANS_TABLES lub STRICT_ALL_TABLES, czego wynikiem jest anulo wanie całej operacji, jeśli wystąpi błąd przy zapisywaniu choćby jednego rekordu. Otwórz panel Startup Variables w aplikacji MySQL Administrator. Wybierz zakładkę Advanced i sprawdź ustawienie opcji SQL Mode, jak to przedstawiono na rysunku 2.10. Jeśli w polu tekstowym, po prawej stronie pojawia się któraś z wyżej wymienionych opcji, oznacz pole wyboru, a następnie kliknij przycisk Apply Changes na dole ekranu. Opcja SQL Mode odczytywana jest podczas startu serwera — zmiany nie zostaną wprowa dzone, dopóki nie uruchomisz ponownie MySQL lub systemu operacyjnego.
Za rzą d za n ie M y S Q L System Joomla! automatycznie tworzy bazę danych serwera MySQL i zarządza nią. Jednak aby dokładnie zrozumieć działanie MySQL, powinieneś samodzielnie zbadać strukturę bazy danych Joomla!. Najłatwiej jest to zrobić, wykorzystując aplikację MySQL Administrator. Dom yślna instalacja serwera M ySQL nie zaw iera tego programu, ale je st on darmowy i dostępny jako część pakietu MySQL GUI Tools na stronie: http://dev.mysql.com.
’ Skąd m ożna pobrać program M ySQL Administrator, d ow iesz się w jednym z kolejnych podrozdziałów — przyp. dum.
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
G e n e ta l P a ra m e te rs
lysunek 2 .10 .
L o g files
Odznacz pole vyboru SQL Vlode, 3by wyłączyć :ryb strict
M y l S A M P a ra m e te rs R e p lic a tio n
I n n o D B P a ra m e te rs
A d v a n c e d N e t w o r k in g
S e c u rity
55
Performance Advanced
A dvanced C o n fig u re th e s tartu p variab le s N o t e th a t c h a n g e s will h a v e n o e ffe c t until y o u restart th e server
E a c h th re a d th a t d o e s a se q u e n tial s c a n allo c a te s a b uffe r of this s ize for e a c h ta b le it s c a n s If y o u d o m a n y s e qu e n tial s c a n s , y o u m a y w a n t to in c re a s e this v a lu e
0
S Q L M ode
S T R I C T _ T R A N S _ T A B L E S .N 0 _ A U 1
S y n ta x : sql m o d e = o p tio n [.o p tio n [ o p tio n
]]
w h e r e o p tio n c a n b e o n e of R EA L_ A S _ FLO A T . P IP E S _ A S _ C O N C A T A N S I_ Q U O T E S ,
□
U s e p o o l for te m p o ra ry files
0
R e a d rn d b uffe r s ize
U s in g this o p tio n wiH c a u s e m ost te m po rary files c re a te d to u s e a small set o f n a m e s , rather th a n a u n iq u e n a m e for e a c h n e w k
5 12
v
W h e n re a d in g to w s m so rted order after a s o rt, th e ro w s are re a d th io u g h this b uffe r to a v o id a d is k s e e k s . II n o t s e t, th e n it's s e t to th e v a lu e o f re co rd _ b u ffe r
Po uruchomieniu aplikacji wyświetlane są ogólne informacje na temat stanu serwera, jak to przedstawiono na rysunku 2.1 1. W lewej części okna programu umieszczono listę dostępnych timkcji, jak np. Service Control (pozwala uruchomić, zatrzymać i restartować serwer MySQL) lub Startup Variables (konfiguracja parametrów MySQL). Rysunek 2.11.
Program MySQL Administrator umożliwia łatwe zarządzanie bazą MySQL za pośrednictwe m graficznego interfejsu użytkownika
Ne
Ed*
,
View
Took
Window
Sassa Service Control Startup Vanabtes
Serve« status: ^
M ySQL S e iv e f is tu nn in g
tv
M y >QL
■v ) User Administration ^
Serve« Connections Jfj Healh
’.. I S e r v e i Logs
£
Connected to MySQL Server Instance Username: Hostname: Port
root locahost 3308
Replication Status Backij) Restore
Serve« Information MySQL Version
MySQL 5.0 51 b-communilyłit via TCP/IP
Network Name
localhost
IP
T27 0 0 1
Ckent Information Ve«s»on: Network Name:
MySQL CSe«r* Ve«s«on 5 1 11 hatd
IP Operabng System
Windows XP
Hardware
Jako administrator większość czasu poświęcisz prawdopodobnie opcji Catalogs, która jest ostatnią pozycją na liście w panelu po lewej stronie. Kliknięcie przycisku Catalogs spowo duje wyświetlenie listy dostępnych baz danych, a także schematu wybranej bazy. Po zazna czeniu bazy Joomla! (w tym przypadku/oom/a/5) na liście w panelu po prawej stronie zostanie wyświetlona lista tabel, jak zilustrowano to na rysunku 2.12.
56
Joomla!. Profesjonalne tworzenie stron WWW
Rysunek 2 .12 .
Schemat bazy danych zawierający wszystkie tabele systemu Joomla!
9 MySQI A dm in istra to r - C onnection: ro o ts lo c a lh o s t:3306 File
EtM
Wsw
Tools
Window
Jill Server Information
Schema Tables
¡¡jtj Service Control
— '
Server Connections
Stored procedures
Table Name ps_ banner
Engine
Rows
Data length
Index ten
MylSAM
8
1.3 kB
4 IB
2008 10-29 2322 42
Update hme
ps_bannerclient
MylSAM
1
76 B
2 kB
2008 10-29 23 2242
J j Server Logs
ps_bannertiack
MylSAM
0
OB
1 kB
2008 10 29 2316 34
0 Replication Status Jt. Backup
ps_ categories
Restore . Catalogs
Schemata
\ ~ = j
Views
User Admnrstration
* Health
,
Schema Indices
l ooml al 5 All tables ol the loomlal 5 schema
Startup Variables
=
cdcol m(ormalion_ schema ' *■ ■***tr“—-if mysql
.
MylSAM
22
1.7 kB
5 kB
200810-2923 2242
ps_components
MylSAM
32
3.9 kB
3 kB
2008-10-29232242
ps_contad_detafc
MylSAM
1
580 B
3kß
200810-29 2322.42
ps_contenl
MylSAM
43
64 4 KB
8 kB
200810-29 2322 42
ps_contenl_lron»page
MylSAM
5
45 B
2 kB
200810-29232242
ps_ contenl_ rating
MylSAM
0
OB
1 kB
200810-292316:36
pj_core_ad_aro
MylSAM
1
32B
4 kB
2008-10-29 232242
tos_core_ad_aio_gi
MylSAM
11
464 B
4 kB
200810-29232242
ps cote_ad_aro_map
MylSAM
0
OB
1 kB
200810-292316 36
ps_core_ad_aro_se
MylSAM
1
24 B
4 kB
2008-10-29232242
ps_cote_ad_groups
MylSAM
1
20 B
3 kB
200810-29 23 22 42
ps_core_fc>gjtemj
MylSAM
0
OB
1 kB
ps_cote_logL search
MylSAM
0
OB
1 kB
200810-29 231636
ps_groups
MylSAM
3
60 B
2 kB
200610 29 23 22 42
ps_menu
MylSAM
29
11.3 IB
4 kB
200810-29 23 22 42
Create Table |
|
Edit Table
|
*
2008-10-29 2316:36
v
| Maintenance
Widziałeś ju ż możliwości dwóch opcji konfiguracyjnych w panelu Startup Variables, które m ogą rozw iązać problem y z urucham ianiem Joomla!. W iększe możliwości daje jednak bezpośrednia manipulacja danych w bazie MySQL. Bezpośrednie zapytania do bazy danych m ogą utworzyć raport o stanie danych w tabelach Joomla!. Przykładowo Joomla! nie pozwala stworzyć listy artykułów, dla których nie usta wiono metadanych, i z tego powodu są kiepsko indeksowane przez roboty internetowe. Aby sprawdzić, których pozycji dotyczy taki problem, wystarczy wykonać zapytanie względem tabeli jos content i wyświetlić wszystkie artykuły, dla których pole metadesc jest puste. Zaznacz bazę danych Joomla! w programie MySQL Administrator, a następnie kliknij prawym przyciskiem pozycję jos_content. Wybierz opcję Edit Table Data z menu kontekstowego, jak zilustrowano to na rysunku 2.13. Zostanie wyświetlone okno z zawartością wybranej tabeli. Zauważ, że w górnej części okna znajduje się zapytanie, które zostało wykonane: SELECT * FROM 'jo o m la '. ' jo s _ c o n te n t'
Jest to zapytanie, które spow oduje pobranie wszystkich rekordów należących do tabeli jos_content. Możesz skorzystać z klauzuli WHERE, aby w prosty sposób ograniczyć pobierane rekordy. Poniższe zapytanie zwróci tylko te rekordy, dla których pole metadesc jest puste: SELECT * FROM ' jo o m la '. ' jo s _ c o n te n t' WHERE metadesc = ""
Kliknięcie przycisku Execute spowoduje wykonanie zapytania, a w oknie pojawią się tylko te rekordy, dla których nie ustawiono metadanych. W menu File znajduje się opcja eksportu do pliku. Do wyboru jest kilka formatów (np. XML, HTML, CSV i Excel). Raport utworzony w ten sposób możesz wykorzystać jako listę wpisów do poprawienia.
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
lysunek 2.13 .
S c h e m a T a b le s
Wybierz opcję żdit Table Data ' menu
S c h e m a In d ic e s
V ie w s
57
S t o ie d p ro c e d u e s
jo o m la 1 5 A ll ta ble s o f th e lo o m la l 5 s c h e m a
E n g in e
Row s
D a t a le n gth
In d e x len.
U p d a t e time
|o s_ b a n n e t
M yłS A M
8
1 .3 k B
4 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 :4 2
|os_ b an n e rc lie n t
M ylS A M
1
76 B
2 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 :4 2
|O S _ b a n n e rtra c k
M y lS A M
0
OB
1 kB
2 0 0 8 -1 0 -2 9 2 3 :1 6 :3 4
|o s_ c ate g o ries
M y lS A M
22
1 .7 kB
5 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 4 2
jo s _ c o m p o n e n ts
M y lS A M
32
3 .9 k B
3kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 :4 2
|o s_ c o n ła cł_ d e ta d s
M y lS A M
1
3 kB
2008 10 29 23 2 2 42
T a b le N a m e
H
f t l
B
—
C/Hih ta ić Tla o ie
__
Ed* Table D ata
.M y l S A M
5
45 B
2 kB
20 0 8 10 -2 9 2 3 2 2 4 2
__ *'
M a in te n a n c e
'M y l S A M ► M y lS A M
0
OB
1 kB
2 0 0 8 -1 0 -2 9 2 3 :1 6 :3 6
1
32 B
4 kB
2 0 0 8 1 0 - 2 9 2 3 :2 2 :4 2
C r e a te T a b le
M y lS A M
11
464 B
4 kB
2 0 0 8 -1 0 -2 9 2 3 2 2 :4 2
D r o p T able
M y lS A M
0
OB
1 kB
2 0 0 8 -1 0 -2 9 2 3 :1 6 .3 6
R e fr e s h
M y lS A M
1
24 B
4 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 :4 2
M y lS A M
1
20B
3 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 4 2
I1
|o s _ c o re _ a d _ g ro u p s io s _ c o r e _ lo g j!e m s
M y lS A M
0
OB
1 kB
2 0 0 8 -1 0 -2 9 2 3 :1 6 3 6
|o s _ c o r e _ lo g _ s e a tc h ..
M y lS A M
0
OB
1 kB
2 0 0 8 -1 0 -2 9 2 3 :1 6 :3 6
|o s_g rou p s
M y lS A M
3
60 B
2 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 :4 2
M y lS A M
29
1 1 .3 kB
4 kB
— -.
... .
|OS _m enu
H ÎÂ T oT
|
580 B M
D e ta ils »
"
3fi
|
—«
C r e a te T a b le
2 0 0 8 -1 0 -2 9 2 3 :2 2 :4 2
.... .. ,. .- .. ..
v
We*
ITT'“ (
*
1
I
E d i t T a b le
[
M a in te n a n c e
j
[
R e fr e s h
lesetowanie hasła u żytko w n ika M y S Q L Żaden użytkownik poza administratorem nie powinien mieć dostępu do tabeli użytkowników, w której przechowywane są informacje na temat użytkowników i ich uprawnień. Dostęp do tej tabeli oznacza w zasadzie kontrolę nad całym systemem. Jeśli jesteś administratorem Joomla! i od dłuższego czasu nie korzystałeś bezpośrednio z MySQL, może zdarzyć Ci się kłopotliwa sytuacja, kiedy zapomnisz hasła dostępu do MySQL. W systemie MySQL nie jest możliwe odzyskanie zapomnianego hasła. Ale można je zresetować. Przedstawiona poniżej metoda działa także dla kont administratora i roota, dlatego korzystaj z niej tylko na serwerach, do których masz uprawniony dostęp. Utwórz plik tekstowy, wprowadź do niego poniższą linię i zapisz plik pod nazwą resetpwd. txi w głównym katalogu: SET PASSWORD FOR ' r o o t ' @’ 1oca 1h o s t' = PASSWORDC'h a s ł o ') :
W przypadku Linuksa, aby zresetować hasło, uruchom następujące polecenie: mysql_safe - i n i t - f i l e = - / re s e tp w d .tx t &
W systemie Windows komenda powinna brzmieć: C :\m y s q l\b in \m y s q ld -n t - i n i t - f i l e = C : \re s e tp w d .tx t
Usuń plik resetpwd.txt po zresetowaniu hasła. N ierozważne jest pozostawienie na dysku rzeczy potencjalnie niebezpiecznej, która potem w jakiś sposób może zostać wykorzystana przez hakera.
58
Joomla!. Profesjonalne tworzenie stron WWW
Konfiguracja Joomla! Prawdopodobnie potrafisz ju ż skonfigurować Joomla! według potrzeb. Możliwe jednak, że przeoczyłeś mniej oczywiste funkcje, które potrafią znacząco wpłynąć na sprawne działanie systemu. Jeśli instalacja Joomla! sprawia Ci kłopot, skopiuj po prostu pliki i upewnij się, że główny katalog nie zawiera pliku configuration.php. Jego obecność świadczy o tym, że Joomla! został już zainstalowany i skonfigurowany. W przeciwnym razie instalator Joomla! automatycznie zostanie uruchomiony.
configuration.php Twórcy Joomla! zalecają wprowadzanie wszystkich zmian w konfiguracji z poziomu inter fejsu administratora. Bezpośrednia manipulacja pliku configuration.php może mieć jednak swoje zalety. Przykładowo jeśli zarządzasz wieloma stronami Joomla! i potrzebujesz wpro wadzić daną zmianę w kilku plikach, rozwiązaniem może okazać się napisanie makra. Ręczne modyfikacje z użyciem interfejsu graficznego byłyby w takim przypadku męczące. Główna konfiguracja systemu Joomla! znajduje się w pliku configuration.php. Wszystkie ustawienia przechowywane są wewnątrz klasy PHP o nazwie JConfig. Jeśli otworzysz plik konfiguracyjny w edytorze tekstu, zauważysz, że na początku znajduje się definicja klasy: c la s s J C o n fig {
Plik został podzielony na różne części. S ite Settings (ustawienia strony) to pierwsza grupa parametrów, przypominająca poniższą listę: /* Sile Sellings */ v a r S o f f lin e = ' 0 ’ : var $ o ff 1ine_message = 'T h is s it e is down f o r maintence.
Please check back again soon. ':
var var var var
isitenam e = 'Joom la!': Seditor = 'tinym ce': $ l is t _ li m i t = '2 0 ' : Slegacy = 'O':
/ / Name o f Joomla sile
Zwróć uwagę, że przedstawiony plik pochodzi z domyślnej instalacji. U Ciebie wartości powinny odpowiadać wprowadzonym ustawieniom. Sekcja Database (ustawienia bazy danych) wygląda podobnie, jak to przedstawiono poniższej: var var var var var var
Sdbtype = 'm y s q l' : $host - 'lo c a lh o s t': Suser = " ; / / MySQL username Spassword = " ; $db = " : $ d b p re fix = ' j o s _ ';
Rozdział 2 . ■ Szczegóły instalacji i konfiguracji
Sekcja Server S e ttl ngs (ustawienia serwera): / / Change this to som ething m ore secure var Ssecret = 'FBVtigI151ApEU4H': var Sgzip = 'O ': var S life tim e = '9 0 0 ': I t Session timeout value var $ e rro r_ re p o rtin g = ' - 1 ' : var S helpurl = ' h t t p : / / h e lp . jo o m la . o r g ': var $xm lrpc_server = 'O ': var $ ftp _ h o s t = 'O ': var $ ftp _ p o rt - 'O ’ ; var S f t p jis e r = " : var $ftp_pass = " : v a r $ ftp _ ro o t = " : var Sftp_enable = " ; var $tmp_path = '/ t m p ': var Slog_path = '/ v a r / lo g s ':
Sekcja Locale Settings (ustawieniajęzyka): var var var var var var
$ la n g _ s ite = 'en-G B ': S la n g _ a d m in is tra to r = 'en-G B ': Slanguage - 'en-G B'; Slang = 'e n g li s h ': S o ffs e t = 'O ': $ o ffs e t_ u s e r = 'O ’ :
Sekcja Mai 1 S e ttl ngs (ustawienia poczty): var var va r var va r var var var
Sm ailer = Sm ailfrom Sfromname Ssendmail Ssmtpauth Ssmtpuser Ssmtppass Ssmtphost
'm a il' : = ": - " : = '/u s r /s b in /s e n d m a il1; = 'O ': = " : = ": = 'lo c a lh o s t ':
Sekcja Cache Settings (ustawienia pamięci podręcznej): va r var var var
Scaching = 'O ': $caching_tmpl = 'O ': $caching_page = 'O ': Scachetime = '9 0 0 ':
Sekcja Debug S e tti ngs (ustawienia diagnostyki): var Sdebug = 'O ': var Sdebug_db = 'O ': var Sdebug_lang = 'O ':
Sekcja Meta Settings (metadane): va r var var var
SMetaDesc = 'Joom la! - th e dynamic p o rta l e n g in e ': SMetaKeys = 'jo o m la . Jo o m la ': S M etaTitle = ' 1 ': SMetaAuthor = ' 1'
59
60
Joomla!. Profesjonalne tworzenie stron WWW
Sekcja S t a t i s t i c s S ettin g s (ustawienia statystyk): v a r $ e n ab le _sta ts = ' 0 ': var $enable_łog_item s = ' 0 ': var $enable_log_searches = ' 0 ':
Sekcja Search-E ngine-O ptim ization (SEO) S e ttin g s (ustawienia opcji poprawiających pozycjonowanie): var $sef = '0 ‘ :
Sekcja Feed S ettin g s (ustawienia RSS): va r $ fe e d _ lim it = 10: va r $feed_suminary = 0:
} ?> Zawsze twórz kopię zapasową pliku konfiguracyjnego przed wprowadzaniem jakichkolwiek zmian. Jeśli nowe ustawienia okażą się błędne, będziesz mógł wrócić do poprzednich, zastępu jąc plik konfiguracyjny kopią bezpieczeństwa. Nie zapisuj kopii bezpieczeństwa w tym samym folderze, w którym przechowywany jest configuration.php. Jeśli nazwiesz kopię przykładowo „configuration.backup” , haker może wpisać adres URL odwołujący się do tego pliku, a ponieważ serwer WWW nie rozpozna typu pliku, jego zawartość zostanie wyświetlona na ekranie hakera — ujawniając przy okazji kluczowe informacje.
Resetowanie hasła u żytk o w n ika Joom la! Hasła są często zapominane przez użytkowników, ale za pośrednictwem interfejsu administrato ra można je zresetować. Jeśli jednak zdarzyło Ci się kiedyś zapomnieć hasła administratora, na pewno znasz frustrujące uezucie bycia odciętym od własnego systemu. Podczas pisania tej książki sam znalazłem się w podobnej sytuacji, kiedy w wyniku awarii dysku utraciłem lo sowo utworzone hasło zapisane w pliku. Nie muszę chyba dodawać, że nie pamiętałem tego hasła. Każde hasło w systemie Joomla! zapisywane jest jako skrót stworzony za pomocą algorytmu MD5, co uniemożliwia jego odzyskanie. Możesz jednak zresetować hasło poprzez bezpo średnią modyfikację tabeli zawierającej dane użytkowników Joomla!. Message-Digest 5 (MD5) je st algorytmem z dziedziny kryptografii, który na podstawie pobranego ciągu znaków generuje skrót określonej długości. Został opisany jako standard internetowy w RFC 1321. Skrót zapisywany je s t w postaci 128-bitowego ciągu (32 liczby heksadecymalne). Założeniem algorytmów tego typu jest, że minimalna zmiana danych wejściowych (np. dodanie jed n ej litery) znacząco zmienia cały skrót. Wykorzystanie skrótu jest z reguły bezpieczne, ponieważ potrzeba ogromnej ilości obliczeń, aby odzyskać dane wejściowe. Istnieją jed n a k bezpieczniejsze algorytmy (takie ja k SHA-I), które mogą zostać wykorzystane w Joomla! w przyszłości.
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
61
Uruchom aplikację MySQL A dm inistrator lub inną aplikację online, np. phpM yAdmin. W obu przypadkach procedura jest podobna. W programie MySQL Administrator wybierz tabelę jos_users w bazie Joomla!. Zwróć uwagę, że dostęp do poprawnie zabezpieczonej bazy danych, czyli także do tabeli jos_users, wymaga posiadania uprawnień administratora lub roota. Jeśli nie masz wymaganych uprawnień, poproś administratora systemu, aby zresetował Twoje hasło (jeśli zdarzyło Ci się je zapomnieć) lub nadał niezbędne uprawnienia. Po kliknięciu prawym przyciskiem pojawi się menu kontekstowe zawierające opcję Edit Table Data, jak zilustrowano to na rysunku 2.14. ysunek 2 .14 .
’o kliknięciu prawym przyciskiem os_users wybierz ■menu opcję .dit Table Data T
S c h e m a T a b le s
—
S c h e m a In d ic e s
V ie w s
-
A ll ta b le s
of
Ih e |o o m la 15 s c h e m a
D a t a le n g th
In d e x le n ...
|O S _ m e nu _ type s
E n g in e M y lS A M
352B
3 kB
2 0 0 8 1 0 - 2 9 2 3 :2 2 :4 2
jos_m es s ag e s
M y lS A M
OB
1 kB
2 0 0 8 -1 0 -2 9 2 3 :1 6 .3 6
jo s _ m e s s a g e s _ c fg
M y lS A M
OB
1 kB
2 0 0 8 -1 0 -2 9 2 3 :1 6 :3 6
|o s_ m igia fio n_ ba ckli
M y lS A M
OB
1 kB
2 0 0 8 - 1 0 - 2 9 2 3 :1 6 :3 6
T a b le N a m e
Row s
U p d a t e time
|Os_m o du le s
M y lS A M
41
8 .8 k B
4 kB
2 0 0 8 1 0 - 2 9 2 3 :2 2 :4 2
jo s _ m o d u le s _ m e n u
M y lS A M
33
297 B
2 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 :4 2
jo s _ n e w s fe e d s
M y lS A M
1 .1 kB
4 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 :4 2
|os_plugins
M y lS A M
2 ,6 k B
3 kB
2 0 0 8 1 0 - 2 9 2 3 :2 2 :4 2
32
|os_polls
M y lS A M
60 B
2 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 .4 2
jo s _ p o H _ d ała
M y lS A M
12
320 B
3 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 :4 2
|o s_p oll_da»e
M y lS A M
11
2 75 B
3 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 :4 2
|o s_p o ll_m en u
M y lS A M
OB
1 kB
2 0 0 8 -1 0 -2 9 2 3 :1 6 :3 6
|OS _secłion s
M y lS A M
400 B
3 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 :4 2
|ûs_se ssio n
M y lS A M
1 ,5 kB
5 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 ^ 4 2
|o s_ s ta ts _ ag e n ts
M y lS A M
OB
1 kB
2 0 0 8 1 0 - 2 9 2 3 :1 6 36
jo s _ te m p la te s _ m e n u
M y lS A M
40 B
3 kB
2 0 0 8 -1 0 -2 9 2 3 :2 2 4 2
79 2 B
3 kB
2 0 0 8 1 0 - 2 9 2 3 :2 2 :4 2
3 |O S _ w e b ln k s
_
E d it T a b le
M a in te n a n c e
1
S t o ie d p ro c e d u re s
jo o m la 1 5
D e fa ils »
J
C r e a t e T a b le D r o p T a b le
*
v
►
I
E d i t T a b le
j J
M a in t e n a n c e
|
[
R e fr e s h
j
W rezultacie powinno pojawić się okno edytora tabeli z wyświetloną aktualną listą użyt kowników Joomla!. W moim przypadku musiałem zresetować hasło administratora, dlatego wyszukałem wiersz, dla którego pole username („nazwa użytkownika”) odpowiadało wartości admi n. Przewiń zawartość okna w prawo, dopóki nie pojawi się kolumna oznaczona password, w której umieszczone są skróty haseł. W ybierz pole, którego wartość chcesz zmienić, a następnie, jeśli korzystasz z systemu Windows, naciśnij klawisz F2. Wprowadź teraz skrót MD5 nowego hasła. Poniższy skrót odpowiada słowu „hasło”4: 207023ccb44feb4d7dadca005ce29a64
Po wprowadzeniu tego długiego tekstu kliknij zakładkę A pply Changes na dole okna, jak przedstawiono to na rysunku 2.15.
Pisanemu bez polskich znaków! — przyp. tłum.
62
Joomla!. Profesjonalne tworzenie stron WWW
Rysune k 2 .15 .
Wprowadź znany skrót MD5 i zapisz zmiany w tabeli
M ożesz teraz zalogować się na konto, dla którego zmieniałeś hasło, wprowadzając słowo „hasło” jako hasło. Niezwłocznie zmień hasło na bezpieczniejsze. Jeśli nie masz dostępu do programu MySQL Administrator lub wolisz korzystać z tekstowego interfejsu MySQL, użyj poniższej komendy: UPDATE jo s _ u s e rs SET password='207023ccb44feb4d7dadca005ce29a64' WHERE name=' admin':
Zwróć uwagę, by w miejsce admin wstawić odpowiednią nazwę użytkownika. Ten kod zamieni aktualne hasło na „hasło”. Możesz teraz dostrzec, ja k proste byłoby dla hakera włamanie do systemu Joomla!. Dlatego kluczowe je s t zabezpieczenie instalacji MySQL. Wykorzystaj wskazówki i sugestie zawarte w rozdziale 14.
Serwer testowy a serwer produkcyjny W tym rozdziale przedstaw iono ogólną konfigurację systemu. Należy jednak pamiętać, że różne środowiska powinny mieć różne ustawienia. Podczas wstępnego tworzenia strony i dalszej pracy nad jej rozwojem powinieneś korzystać z serwera testowego, na którym możesz instalować dowolne rozszerzenia i wprowadzać znaczące zmiany. Na takim serwerze powinno być także w łączone w yświetlanie wszystkich komunikatów systemowych, co pozwala na szybkie rozwiązywanie problemów. Serwer testowy jest zazwyczaj słabo zabezpieczony, aby nie utrudniać dostępu i testowania.
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
63
Po ukończeniu prac nad stroną powinieneś ją przenieść na serwer produkcyjny (zwany także serwerem wdrożeniowym). Może być to zdalny serwer WWW (oferowany np. przez SiteGround.com) lub inna maszyna, która została odpowiednio zabezpieczona. W środowisku testowym ważne jest wyświetlanie jak największej ilości informacji, dokładnych komunikatów o błędach, monitorowanie wydajności i prób dostępu. Włączenie tych opcji negatywnie wpływa na w ydajność system u, poniew aż powoduje zużycie dodatkow ych zasobów. Dlatego ich stosowanie nie jest zalecane w środowisku produkcyjnym. Wszystkie komunikaty systemu w środowisku produkcyjnym powinny być przechowywane w ukryciu, ponieważ ich ujawnianie ułatwi hakerowi włamanie. Jeśli pracujesz na platformie Windows, możesz wykorzystać dedykowane rozwiązanie do testowania stron opartych na.Joomla!. Joomla Standalone Server (JSAS) to połączenie serwera Apache, PHP, MySQL i Joomla'., które nie wymaga praktycznie żadnej konfiguracji. Dodatkowo możliwe je s t jednoczesne uruchamianie kilku stron na jednej maszynie i zarządzanie nimi z poziomu pojedynczego interfejsu. JSAS możesz pobrać zjsas.joomlasolutions.com.
Istawienia serwera testowego Joomla! nie posiada trybu usuwania błędów z prawdziwego zdarzenia, dlatego rozwiązywanie problemów sprowadza się do analizy komunikatu systemu, umieszczania własnych komu nikatów (za pomocą instrukcji PHP echo) w kluczowych miejscach w kodzie, a także bada nia treści dziennika błędów. Zanim strona zostanie upubliczniona, jest poddawana testom w środowisku, w którym włączono wyświetlanie komunikatów systemu. Następnie strona przenoszona jest na serwer — jego konfiguracja blokuje pokazywanie informacji diagno stycznych, które ograniczają wydajność i mogą stanowić zagrożenie w przypadku wykorzy stania przez hakerów. Podobnie jak większość aplikacji PHP, praca nad Joomla! sprowadza się do zasady: wprowadź zmianę, odśwież stronę, popraw, spróbuj ponownie. Dodatkowe informacje dostarczane przez system ułatwiają zlokalizowanie i usunięcie przyczyny problemu, jeśli taki wystąpi. Komunikaty o błędach (pod warunkiem że odzwierciedlają źródło problemu) są prawdopo dobnie najbardziej użytecznym narzędziem podczas usuwania błędów w aplikacji Joomla!. Komunikaty PHP są w tym wypadku szczególnie pomocne, ponieważ nie tylko informują o problemie, ale także podają nazwę pliku i numer linii, w której wystąpił. Typowy komunikat o błędzie w kodzie komponentu wygląda tak: N otice: Use o f undefined constant kasjda - assumed 'k a s jd a ' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\components\com_content\content.php on lin e 32
Serwery WWW (zarówno Apache, jak i Microsoft Internet Information Server) przechowują dokładne informacje na temat występujących problemów w dzienniku błędów. Analiza pliku dziennika może okazać się niesam ow icie przydatna w rozw iązyw aniu nie tylko dużych problemów, które blokują działanie strony, lecz także mniejszych, które często pozostają niezauważone. Przykładowo głosowanie w sondzie powinno zakończyć się zapisaniem od danego głosu w odpowiedniej tabeli. Jeśli wystąpi błąd, ponieważ nie istnieje tabela o danej
64
Joomla!. Profesjonalne tworzenie stron WWW
nazwie, żaden komunikat nie zostanie wyświetlony. Dziennik błędów zawiera jednak infor mację, że instrukcja SQL Insert zakończyła się niepowodzeniem. Dzięki analizie dziennika możesz poprawić także małe błędy.
Ustawienia serwera produkcyjnego Po zakończeniu konfiguracji i testów systemu Joomla! zechcesz pewnie upublicznić swoją stronę w internecie. Założenia środowiska produkcyjnego, które wykorzystuje się do tego celu, różnią się diametralnie od tych dla serwera testowego. Głównym zmartwieniem jest w tym przypadku bezpieczeństwo i wydajność. Wiele ustawień, które są pomocne w usuwaniu błędów, może jednocześnie zdradzić informacje przydatne podczas ataku na system Joomla!. Dodatkowo konfiguracja pod kątem diagnozowania i rozwiązywania problemów spowalnia cały system. Ograniczenie liczby komunikatów diagnostycznych prowadzi do znaczącego wzrostu wydajności.
Dom yślne hasła w budow anych kont Często pierwszą czynnością wykonywaną przez hakera podczas ataku jest sprawdzenie, czy wbudowane konta nie m ają ustawionych domyślnych haseł. Dlatego powinieneś regularnie zmieniać hasła wszystkich wbudowanych kont. Poniższe serwery mają wbudowane konta: ■
MySQL — Konto root przeznaczone jest dla superadministratora systemu. Domyślnie w przypadku wielu instalacji hasło tego konta jest puste. Upewnij się, że zmieniłeś domyślne hasło. Warto także rozważyć utworzenie innego konta dla superadministratora i ograniczenie praw konta root.
■ Joomla! — Domyślne konto superadministratora Joomla! nosi nazwę admin. Dzięki zmianie tej nazwy, np. na jadmin, haker w pierwszym odruchu nie zdobędzie połowy danych niezbędnych do zalogowania się na konto administratora. Domyślna instalacja MySQL jest dobrze zabezpieczona. Powinieneś zmienić jak najwięcej domyślnych ustawień dostępu (np. port działania MySQL), co uniemożliwi hakerowi zgadnię cie (na podstawie najczęstszych wartości) części informacji niezbędnych do penetracji systemu. Wszystkie przykładowe hasła wykorzystane w tej książce powinny zostać zmienione. Materiały zawarte w tej książce są dostępne dla każdego, kto ją kupi. Nazwy kont i hasła umieszczone w tej książce mogą zostać dodane przez hakera do słownika, który zostanie wykorzystany do zautomatyzowanego ataku na hasła. Zmień wszystkie hasła pochodzące z tej książki, zanim zdecydujesz się upublicznić stronę.
Komunikaty o błędach dostarczają wskazówek na temat wewnętrznej struktury strony WWW, włączając w to nazwy folderów, baz danych, tabel itd. Podczas gdy informacje diagnostyczne mają kluczowe znaczenie w środowisku testowym, na serwerze produkcyjnym mogą pomóc hakerowi włamać się do systemu. Dlatego zawsze sprawdzaj, czy wyświetlanie komunikatów o błędach zostało ograniczone w środowisku produkcyjnym.
Rozdział 2. ■ Szczegóły instalacji i konfiguracji
65
ódsumowanie Instalacja i konfiguracja Joomla! wydaje się prosta, dopóki nie natrafi się na problemy. W tym rozdziale opisano sposoby instalacji i konfiguracji Joomla!, a w szczególności: ■ Opcje konfiguracyjne serwera Apache w pliku httpd.conf a także dyrektywy, dzięki którym można usprawnić działanie Joomla!. ■ Sposoby na poprawę wydajności serwera przez zmianę ustawień zgłaszania i zapisywania komunikatów systemowych. Dzięki zwiększeniu liczby komunikatów możesz łatwiej zdiagnozować źródła obecnych i potencjalnych problemów. ■ Udoskonalanie konfiguracji PHP przez zm ianę ustaw ień w pliku PHP.ini. Odpowiednie zmiany m ogą zapobiec przekroczeniom limitu czasu, a także udoskonalić zabezpieczenia. ■ Obszerny proces instalacji MySQL, włączając w to bezpośrednią manipulację bazą danych, co daje szerokie możliwości, od tworzenia raportów, po resetowanie haseł. ■ Zastosowanie serwera testowego, co ułatwia dokładne sprawdzenie i usunięcie błędów strony Joomla! bez konieczności publikacji w intemecie oraz pozwala uniknąć związanych z tym zagrożeń. ■ Migrację ze środowiska testowego do środowiska produkcyjnego. Właściwa, drobiazgowa konfiguracja strony Joomla! nie sprowadza się wyłącznie do usta wienia serwera pod kątem wydajności. Wizerunek profesjonalnego i solidnego portalu wymaga także właściwego wyglądu. W rozdziale 3. dowiesz się, jak samodzielnie wykonać atrakcyjny szablon, który może służyć za wzorzec dla kolejnych, które stworzysz w przyszłości.
66
Joomla!. Profesjonalne tworzenie stron WWW
3 Tworzenie własnych szablonów Możliwość wykorzystania szablonów jest jednym z kluczowych powodów, dla których Joomla! jest tak popularny na świecie. Stronę, której wygląd zasługuje na określenie „mierny”, można w ciągu pięciu minut zm ienić w im ponującą w itrynę dzięki profesjonalnym szablonom . Kwitnący rynek szablonów jest jednym z kluczowych segmentów działalności związanej z Joomla!. Wiele stron wykorzystuje model miesięcznej subskrypcji, podczas której klient może pobierać dowolne szablony będące w ofercie. Taki model gwarantuje zapotrzebowa nie na nowe szablony, które służą utrzymaniu zainteresowania abonentów. W tym rozdziale dowiesz się, jak od podstaw stworzyć szablon, a później wykorzystać arkusze stylów, aby wprowadzić złożony układ strony. Większość darmowych szablonów opiera się na jednej podstronie, która wykorzystywana jest na całej witrynie. Poznasz sposoby tworzenia grup szablonów, dzięki czemu nadasz swoim stronom profesjonalny wygląd, a zastosowanie arkuszy stylów pozwoli Ci kształtować spójny wizerunek lub markę strony internetowej. Zanim zaczniesz tworzyć szablony, warto przyjrzeć się ich strukturze. Dokładne zrozumienie tego zagadnienia ułatwi Ci projektowanie własnych i edycję istniejących, ponieważ struktura szablonu nie różni się znacząco w poszczególnych przypadkach.
Struktura szablonu Szablony Joomla! mogą składać się z dowolnej liczby plików i folderów, chociaż zastoso wanie się do przyjętych norm pozwala jednakowo postępować z każdym szablonem. Dzięki temu można zmienić wygląd i zew nętrzną funkcjonalność strony Joomla!, wybierając po prostu inny szablon. Dopóki zawiera on miejsce na wyświetlenie komponentu, a także kilka typowych pozycji modułów, można wykorzystywać go zamiennie z innymi. Z tego powodu musisz wiedzieć, jakie foldery powinien zawierać szablon (często jest są do dwa foldery t e i \images), a także jakie pliki (index.php, template.css i templadeDetails.xml), aby można było z niego poprawnie i bezproblemowo skorzystać. Istnieje też grupa nieobo wiązkowych plików (parameters.ini i template thumbnail.png), które ułatwiają zarządzanie
68
Joomla!. Profesjonalne tw orzenie stron WWW
szablonem. Ponieważ Twoje dotychczasowe doświadczenia mogą ograniczać się wyłącznie do perspektywy użytkownika szablonów, zaczniemy od ogólnej organizacji szablonu Joomla!.
Pliki i foldery W szystkie szablony instalowanie na stronie Joomla! są zapisywane w katalogu 1templates, który znajduje się wewnątrz głównego katalogu strony Joomla!. Folder \templates zawiera po jednym podkatalogu dla każdego zainstalowanego w systemie szablonu. Nazwa folderu musi dokładnie zgadzać się z nazwą szablonu, także pod względem wielkości liter. Przy kładowo szablon rhuk_milkyway musi znajdować się w folderze \rhuk_milkyway. Choć jest możliwe, by tylko jeden plik stanowił cały szablon (index.php), to nawet najprostsze z nich składają się przynajmniej z czterech plików (index.php, template.ess, templateDetails.xml i banner.jpg). Większość opiera się jednak na liczniejszej grupie plików, np. dodatko wych arkuszach stylów i obrazkach, pomocniczej grafice (służącej do tworzenia zaokrąglonych rogów, elementów oddzielających itd.). Każdemu głównemu plikowi przypisano oddzielną funkcję: ■ index.php — Zawiera logikę szablonu, miejsce na wyświetlenie komponentu i modułów. W tym pliku często znajduje się także odwołanie do skryptów JavaScript, wzbogacających funkcjonalność strony. Niestety, wiele szablonów umieszcza w tym pliku też informacje o układzie, np. wielokolumnowe tabele, obrazki i fonnatowanie tekstu. Właściwym miejscem dla definicji układu i wyglądu są arkusze stylów. ■ template.css — Określa krój pisma1, kolory, pozycjonowanie, obrazki i inne aspekty warstwy prezentacji danego szablonu. Ponieważ wszystkie główne przeglądarki obsługują technologię CSS, arkusz stylów umieszczony w tym pliku pozwala zdefiniować praktycznie każdy aspekt, od układu kolumn, po formatowanie list. ■ tem plateD etails.xm l— Przechowuje metadane na temat szablonu, które wykorzystywane są podczas instalacji, a także zarządzania w interfejsie administracyjnym Joomla!. Zapisano w nim listę wszystkich plików, z których składa się szablon, informacje o autorze i publikacji, a także parametry, które może zmieniać za pomocą interfejsu administratora. ■ banner, f f f — Chociaż nie jest absolutnie wymagana, większość szablonów zawiera graficzną formę nagłówka banner, która nadaje charakter szablonowi. W przypadku komercyjnych szablonów ich konstrukcja umożliwia wykorzystanie w ich miejsce logo, znaku handlowego lub nazwy strony, co sprawia, że strona wygląda jakby była projektowana na zamówienie. Banner zapisywany jest zazwyczaj w formacie JPG lub PNG (co odpowiada rozszerzeniom jp g i p ng w miejsce f f f podanego wyżej). Szablony zaw ierają zazw yczaj dwa foldery, w których um ieszcza się pliki template.css i banner.fff:
1 Zwany popularnie czcionkami komputerowymi — przyp. dum.
R o z d z ia li ■ Tworzenie własnych szablonów
■
less — Zawiera jeden lub więcej plików CSS, które są wykorzystywane w szablonie. Zazwyczaj umieszczony jest tutaj co najmniej plik template.css.
■
1images — Przechowuje wszystkie pliki graficzne użyte w szablonie. To tutaj najprawdopodobniej zamieszczony zostanie plik banner.jff. W przypadku większości szablonów umieszczono tutaj także małe pliki graficzne, które dopełniają układ strony.
69
Prawie wszystkie szablony Joomla!, które poznasz w przyszłości, zawierają co najmniej te podstawowe foldery i pliki. Dzięki zachowaniu opisanej wyżej struktury szablony można łatwo wykorzystać w systemie Joomla!. W przeciwieństwie do modułów i komponentów, które trzeba instalować w interfejsie administratora (dzięki czemu niezbędne ustawienia zo staną zapisane w bazie danych), aby wykorzystać szablon na stronie, wystarczy skopiować go do folderu 1templates. Szablony zawierają często dwa dodatkowe foldery: ■
■
\htm l — Przechowuje pliki, które zmieniają wygląd dodatków systemu Joomla!. Więcej informacji na ten temat znajdziesz w podrozdziale „Modyfikacja wyglądu dodatków”. JavaS cript — Zawiera kod JavaScript wykorzystywany w szablonie.
Szablony dostępne są zazwyczaj w postaci archiwum .zip lub .tar, które zawiera pliki w odpo wiednich podkatalogach. System Joomla! korzysta z biblioteki Zlib, aby rozpakowywać archiwa .zip, które dodano na stronę za pośrednictwem opcji Instaluj Rozszerzenia. Wypakowane pliki i foldery umieszczane są w katalogu o nazwie odpowiadającej nazwie szablonu. Najważniej szym z tych plików jest index.php, który przechowuje całą główną logikę szablonu.
ogika szablonu: plik index.php Plik index.php jest głównym i jedynym wymaganym elementem szablonu Joomla!. Stanowi on kombinację kodu HTML i PHP. Kod HTML zawiera głównie elementy, które w połączeniu z arkuszami stylów tw orzą warstwę prezentacji. W kodzie PHP umieszcza się odwołania do platformy Joomla!, aby wymagane treści pobrane z bazy danych umieścić na stronie. Najprostszy plik index.php przypomina poniższy: < jd o c :in c lu d e typ e -"h e a d " /> < h l> H e llo W orld!< /h l> < /h tm l>
Powyższy kod HTML nie je st raczej zgodny z w ytycznymi standardu World Wide Web Consortium (W3C), ale spowoduje wyświetlenie powitania „Hello World!”2 na stronie Joomla!. Dosłownie: „Witaj, św iecie!", w yśw ietlenie tej frazy stanowi w literaturze często pierw szy przykład wykorzystania danego narzędzia czy języka programowania — przyp. dum.
70
Joomla!. Profesjonalne tworzenie stron WWW
Zwróć uwagę, że ten podstawowy szablon nie wyświetli żadnej treści. Wywołanie funkcji Joomla! (w postaci znacznika ) powoduje wstawienie informacji nagłówkowych, jeśli są one dostępne. W dalszej części tego rozdziału dowiesz się, jak stworzyć bardziej skom plikowany szablon, wyświetlający kilka modułów i komponent. Powyższy szablon został maksymalnie ograniczony, abyś mógł zaobserwować, które elementy stanowią wymagane minimum, niezbędne do poprawnego działania szablonu. Prawdę mówiąc, usunięcie dyrektywy Joomla! nie sprawi, że szablon przestanie działać. Warto jednak zapoznać się z dyrektywami Joomla!, ponieważ stanowią one o potędze szablonu.
Instru kcje Joom la! Joomla! działa w oparciu o bezpośrednie wywoływanie kodu PHP, a aplikacja sama w sobie jest platform ą składającą się z klas PHP. Poprzez odwoływanie się do obiektów Joomla!, takich jak JDocurnent i JDocumentHTML, możesz umieścić w szablonie wynik działania modułów i komponentów, a także zdobyć informacje na temat środowiska, w którym uruchamiany jest kod.
W ykorzystanie obiektu JDocurnent W podstawowym szablonie przedstawionym wcześniej umieszczono wywołanie metody include obiektu jdoc. Większość wywołań odnosi się do klasy JDocurnent (dostępnej za po średnictwem obiektu jdoc). Widziałeś już wykorzystanie metody include w szablonie Hello World!. Została uruchomiona za pomocą poniższej instrukcji: < jd o c :in c lu d e type="head" />
Powyższy kod spowoduje uruchomienie metody, która zwróci informacje nagłówkowe dla danej strony Joomla!. Możesz także wykorzystać wywołanie include do wyświetlania komu nikatów systemowych. Poniższy kod spowoduje wyświetlenie komunikatów systemowych: < jd o c :in c lu d e type-"m essage" />
Najczęściej include wykorzystuje się do wstawienia kodu HTML modułu Joomla!. Przy kładowo aby dołączyć wydruk modułu top (co powoduje zazwyczaj wyświetlenie bannera strony), użyjesz poniższej instrukcji: < jd o c :in c lu d e type="modu1es" name="top" s ty1 e = "xh tm l"
/>
Oprócz dyrektyw jdoc możesz wykorzystać także ogólne polecenia PHP. PHP jest zaawan sowanym językiem programowania, który ma bogate możliwości — od struktur sterujących po programowanie obiektowe (OOP — ang. object oriented programming). Jeśli nie znasz PHP, ale rozumiesz ogólne zasady programowania, powinieneś pojąć większość przykładów przedstawionych w tej książce. Mimo to polecam lekturę Beginning PHP5 Apache and MySQL Web Development (Wiley, Indianapolis 2005), dzięki której zdobędziesz solidną wiedzę na temat PHP.
Rozdział 3. ■ Tworzenie własnych szablonów
71
W starszych wersjach Joomla! wykorzystywano w szablonach interpreter komend o nazwie patTemplatejako uzupełnienie dyrektyw Joomla!. W nowej wersji porzucono patTemplate, ponieważ nauczenie się go wymagało dodatkowego czasu, a wykorzystanie ograniczało wydajność serwera. Zastąpiono go kodem PHP, którego kompilacja pozwala osiągnąć jeszcze wyższą wydajność — pod warunkiem że nie korzysta się z dyrektyw Joomla!. Stare rozwiązanie wymagało od programistów, oprócz nauki PHP, poznania także funkcji sterujących interpretera (takich jak pętle).
korzystanie odwołania Sthis Jedną z najczęściej wykorzystywanych przez Ciebie dyrektyw PHP będzie instrukcja Sthis. Instrukcja ta umożliwia odwołanie do obiektu, w zakresie którego uruchamiany jest kod. W przypadku szablonu Joomla! Sthis zawiera referencję do obiektu JDocumentHTML. Klasa JDocumentHTML zawiera kilka przydatnych pól. Przykładowo aby wyświetlić wybrany język, należy wykorzystać wartość pola language: la n g u a g e : ?>
Poniżej znajduje się lista pozostałych pól klasy JDocumentHTML, których wartość można pobrać za pomocą odwołania Sthis: ■
d ir e c t io n -
In fo rm u je o k ie ru n k u c z y ta n ia , o d p ra w ej d o le w e j
(p r z y jm u je w a rto ść I t r 3), o d praw ej d o lew ej (p r z y jm u je w a r to ść r t l ) itd.
■ templ ate — Określa ścieżkę dostępu do katalogu szablonu. ■ t i t l e — Przechowuje tytuł dokumentu. ■ description — Zawiera opis dokumentu (z metadanych HTML). ■
1i nk — Wskazuje adres URL dokumentu.
■
1anguage — Określa język dokumentu, np. angielski (przyjmuje wtedy wartość en).
Klasa JDocumentHTML zawiera także kilka użytecznych metod, które można wykorzystać podczas tworzenia szablonu. Za pośrednictwem operatora Sthis można wywołać na przykład metodę countModules(), dzięki której określisz liczbę modułów na danej stronie. Aby pobrać liczbę wystąpień pojedynczego modułu, należy wywołać metodę, jak pokazano to poniżej: $ th i s ->countModule s ( ' u s e r l' ) :
Możesz wykorzystać tę funkcję do zliczenia sumy wystąpień kilku modułów: t t h i s->countModules( 'u s e r l + u s e r2 ') :
Możliwe jest także skorzystanie z operacji logicznych, takich jak: $ th is -> c o u n tM o d u le s ('u s e rl and u s e r2 ') : $ th is -> c o u n tM o d u le s < 'u s e rl o r u s e r2 ') :
Poniższy kod sprawdza, czy obszar top zawiera jakieś moduły. Jeśli tak, zostaną one wyświe tlone, w przeciwnym razie — zostanie wstawiony obrazek zastępczy (ang. placeholder).
72
Joomla!. Profesjonalne tworzenie stron WWW
c o u n tM o d u le s ( 'to p ') ) : ?> < jd o c :in c lu d e type="m odules" name=''top" /> < jd o c :in c lu d e type="component" />
Pamiętaj, że operator S th is odwołuje się do obiektu, w zakresie którego uruchamiany jest dany kod. Dlatego odwołanie $ th is w kodzie komponentu odnosi się do zupełnie innego obiektu niż w przypadku szablonu. Aby zapobiec bezpośredniemu uruchomieniu (szczególnie przez hakerów) kodu Joomla! z pominięciem systemu, powinieneś wstawić poniższą linię przed wprowadzeniem właściwego kodu PUP. d e fin e d !'_JEXEC') o r d ie C B ra k d o s tę p u '):
Powyższy kod sprawdza, czy stała JEXEC została zdefiniowana, w przeciwnym wypadku wyświetli komunikat o braku dostępu i zakończy uruchamianie kodu. Powyższa instrukcja jest bardzo ważna z punktu widzenia bezpieczeństwa Joomla!. Zanotowano przypadki włamań na strony Joomla! z wykorzystaniem stron zawierających kod PHP (takich jak pliki szablo nów), które nie zawierały powyższej dyrektywy.
Prym itywny index.php Prymitywny przykład wszystkich tematów poruszonych do tej pory wyglądałby podobnie do poniższego:
JEXEC') o r d ie C B ra k d o s tę p u ');
?> d ir e c tio n : ?>“ > < jd o c :in c lu d e type=''head" />
Rozdział 3. ■ Tworzenie własnych szablonów
73
< jd o c :in c lu d e type="message" /> < h l> H e llo W o rld !< /h l> c o u n tM o d u le s ( 'to p ')) : ?> < jd o c :in c lu d e type="m odules” name="top" /> p a ra m s-> g e t('sh o w C o m p o n e n t') ) : ?> < jd o c :in c lu d e type="component" />
Powyższy kod rozpoczyna się sprawdzeniem, czy uruchamiany jest wewnątrz platformy Joomla!. Jeśli nie, wykonywanie zostaje przerwane. Następnie wartości pól language i di r wprowadzane są do atrybutów znacznika . W nagłówku umieszczone zostaje odwołanie do informacji jdoc head. Treść dokumentu HTML rozpoczyna się wydrukiem komunikatów systemowych (które zazwyczaj nie występują). Teraz, po wyświetleniu powitania „Hello W orld!”, zostaje wyświetlony moduł dla pozycji top, o ile ją określono. W przeciwnym wypadku wyświetla się plik placeholder.gif Ostatnim elementem powyższego kodu jest sprawdzenie wartości parametru showComponent, i jeśli został ustawiony na True, dołączenie wydruku komponentu. Chociaż kod w powyższej postaci nie zadziała samodzielnie (do poprawnego funkcjonowa nie wymagane jest przynajmniej stworzenie parametru showComponent), ale pozwoli Ci lepiej zrozumieć strukturę szablonu niż minimalny szablon Hello World! przedstawiony wcześniej.
ezentacja szablonu: plik CSS Drugim najważniejszym elementem po index.php jest plik CSS. Szablony m ogą wykorzy stywać jeden lub więcej plików CSS, aby określić kolory, fonty i ich atrybuty, które zostaną wykorzystane do wyświetlania strony. Jeśli dany szablon spełnia Twoje potrzeby, ale chciałbyś, aby odnośniki były koloru czerwonego zamiast zielonego, wystarczy tylko zmodyfikować CSS. Wraz z wprowadzeniem wersji Joomla! 1.5 umożliwiono wykorzystywanie kilku plików CSS, podczas gdy w starej wersji wszystkie style musiały znajdować się w pojedynczym pliku. Celem programistów Joomla! było (maksymalnie możliwe) oddzielenie warstwy prezentacji od logiki programu. Dzięki wprowadzeniu jasnego podziału zmianę wyglądu i zewnętrznej funkcjonalności strony można przeprowadzić, wybierając inny szablon, bez wpływu na kod odpowiadający np. za koszyk z zakupami lub zapisanie w bazie danych głosu w sondzie. W ażną rolę w oddzielaniu warstwy prezentacji i logiki programu odgrywa CSS. Pozwala na zdefiniowanie formatowania dowolnego elementu od stylu font po kolor obramowania tabeli. W pliku HTML niezbędne jest tylko odwołanie do pliku CSS, aby zastosować okre ślone w nim style. Do stworzenia skutecznego szablonu niezbędna jest możliwość dokładnego określenia po zycji elementów, które znajdują się na stronie. Za pomocą CSS można wpływać na wygląd modułów, określać względną pozycję, opływanie i odstępy. Dzięki regułom i metodom do stępnym w arkuszach stylów jesteś w stanie dopasować wygląd tekstu do swoich wymagań.
74
Joomla!. Profesjonalne tworzenie stron WWW
Podczas tw orzenia arkusza stylów musisz wziąć p o d uwagę, ja k zostanie on zinterpretowany przez różne przeglądarki. Na maszynie testowej powinieneś mieć zainstalowane przynajmniej dwa programy tego typu. Niezależnie od systemu operacyjnego jednym z nich powinna być przeglądarka Mozilla Firefox. Jest to obecnie najpopularniejszy program spośród tych, które działają w wielu systemach operacyjnych. Nawet je śli nie korzystasz z systemu Windows, sprawdź tworzoną stronę w programie Internet Explorer (najlepiej w wersji 6 i 7) na komputerze z Windowsem. Prawdopodobnie większość odwiedzających będzie korzystać właśnie z tej przeglądarki. Regularnie sprawdzaj, ja k wygląda Twój szablon w różnych przeglądarkach, ponieważ są one stale rozwijane. Szablon może zawierać jeden lub kilka plików CSS. Prawdę mówiąc, nawet na pojedynczej stronie można w ykorzystać kilka plików CSS. Jeśli definicja stylu pokrywa się z inną, określoną wcześniej w (tym samym lub innym) pliku CSS, zostanie wykorzystana ostatnia definicja, która zastąpi wszystkie poprzednie.
Elem enty blokowe i liniowe W pliku CSS można określać styl dla dwóch typów elementów: blokowych i liniowych. Ele menty liniowe traktowane są jak zwykły tekst i nie wpływają na układ szablonu. Przykładem takich elementów są znaczniki , lub 4. Elementy blokowe określają konkretny obszar, np. z użyciem znaczników ,
, lub
. Podczas projektowania szablonu zwróć uwagę na odpowiedni dobór elementów. Odwołanie do pliku arkusza stylów wymaga wstawienia poniższych dwóch linii w nagłówek pliku index.php: <1 i nk rel="sty1esheet" href=''terrplates/_system/css/general .css" type="text/css” /> <1 ink reVstylesheet" href="templates/template: ?>/css/template.css" type="text/css" /> Pierwsza linia powoduje dołączenie podstawowych stylów systemu Joomla!. Określają one wygląd takich podstawowych elementów HTML, jak znacznik . Druga linia odwołuje się do głównego pliku CSS dla danego szablonu (tradycyjnie ten plik nosi nazwę témplate.css).
W budowane style Stworzenie poprawnego arkusza stylów, który można następnie wykorzystać w Joomla!, wymaga odpowiednich nazw stylów. Style dla elementów takich jak komponenty zawierają w swojej nazwie stosow ną informację. Przykładowo wygląd tytułu komponentu (zobacz rysunek 3.1) określa się przez odwołanie do stylu componentheadi ng.
Jeśli chciałbyś wyświetlić tytuł szablonu z dolnym obramowaniem w kolorze białym o sze rokości jednego piksela i z tekstem w kolorze czerwonym, powinieneś umieścić poniższą definicję stylu w pliku CSS:
4 W przypadku szablonów Joomla!, które są w głównej m ierze plikami XHTML., znaczniki należy pisać m ałym i literami — przyp. tłum.
Rozdział 3. ■ Tworzenie własnych szablonów
75
rsunek 3 .1.
1'ygląd tytułu jmponentu kreślą się rzez odwołanie 3 stylu omponent ■heading
.componentheading { c o lo r: red: border-bottom : lp x s o lid w h ite :
} Niektóre style nie są wyświetlanie na stronie, ponieważ nie zostały zdefiniowane. Z tego powodu pozostają niewidoczne. Dobrym przykładem jest styl a rticle_separator. Ponieważ wiele szablonów nie zawiera jego definicji, nie pojawia się on na stronie. Poniższa definicja spowoduje wyświetlanie zielonego separatora o szerokości dwóch pikseli między kolejnymi artykułami: , a r tic le _ s e p a r a to r { tnargin: 10px 0: b o rd e r: 2px s o lid #00FF00:
System Joomla! zawiera ogrom ną liczbę stylów. W iele z nich wykorzystywanych jest w szablonie dołączonym w domyślnej instalacji Joomla!. Na rysunku 3.1 przedstawiono domyślny szablon wraz z zaznaczonymi poszczególnymi stylami. Zwróć uwagę na miejsca, w których są wykorzystywane. Wbudowane style można podzielić na trzy główne kategorie: treść, administracja i rozszerzenia. Do kategorii treść należą poniższe style: ■
a rticle _se p a ra to r
■
author
■
content_emai1
■
content_rating
■
contet vote
76
Joomla!. Profesjonalne tw orzenie stron WWW
■
contentdescription
■
co nte n tp a g e title
■
contentpane
■
contenttoc
■
created-date
■
in tro
■
title
■
modifydate
■
sma11
■
smalldark
Dla kategorii administracja można odwoływać się do następujących stylów: ■
adminform
■
c lr
■
date
■
input
■
inputbox
■
o u tlin e
■
pagenav
■
pagenav_next
■
pagenav_prev
■
pagenavbar
■
pagenavcounter
■
pathway
Dla kategorii rozszerzenia można odwoływać się do poniższych: ■
bannerfooter
■
bannergroup
■
bannerheader
■
banneritem
■
blog
■
blogjnore
■
blogsection
■
button
■
buttonheading
Rozdział 3. ■ Tworzenie własnych szablonów
■
lastetnews
■
lo c lin k
■
message
■
metadata
■
module
■
newsfeed
■
pollstableborder
■
read
■
searchintro
■
sections
■
section tab le_foo ter
■
sectiontableentry
■
s e ction tab lefoo ter
■
sectiontableheader
■
s u b le v e l
■
wrapper
77
Nie musisz definiować wszystkich wyżej wymienionych stylów. Minimum w przypadku szablonu to zazwyczaj definicja stylu body, który określa, jak zostanie wyświetlony na stronie tekst, któremu nie przypisano innego stylu. Definicja stylu body będzie znajdować się na samym początku pliku CSS i będzie przypominać: .body { fo n t: 0.7em /1.5 Verdana. A r ia l. H e lv e tic a , s a n s -s e r if;
} Wykorzystanie stylu body pozwala na określenie fontu bez konieczności ingerencji w plik index.php, dzięki czemu można oddzielić warstwę prezentacji, której opis przechowywany jest w pliku arkusza stylów. Dobrym pomysłem jest także odwołanie do obrazków wyłącznie w ramach arkusza.
¡tawianie o b ra zk ó w w CSS Wstawianie obrazków w CSS może okazać się użyteczne, choć także problematyczne. Powi nieneś unikać tworzenia arkuszy, które są zbyt szczegółowe, co nie pozwala na wykorzystanie ich dla dowolnych artykułów. Jednocześnie odw ołania do kluczowych obrazków warto umieścić w pliku CSS. Dzięki temu wszystkie odwołania skupiane są w jednym miejscu. Jeśli przykładowo chcesz wstawić w m iejsce starego nowy obrazek, poniew aż w ygląd strony został zmieniony, poprawić trzeba wyłącznie jedno wystąpienie w pliku CSS, przez co pojawi się on na wszystkich stronach w miejscu starego.
78
Joomla!. Profesjonalne tw orzenie stron WWW
Ważniejszym zagadnieniem jest jednak problem techniczny: względny adres URL. Adres obrazka musi zostać określony tak, aby przeglądarka była w stanie znaleźć właściwy obrazek. W przypadku szablonu katalog images znajduje się na tym samym poziomie co katalog css Dlatego, aby z poziomu arkusza stylów odwołać się do obrazka, trzeba skonstruować ścieżkę, która odwoła się do katalogu images, znajdującego się poziom wyżej: background: u r l ( . . /im a g e s /b o tto m le ft.g if)
Metadane szablonu: plik templateDetails.xml
Każdy szablon potrzebuje pliku z metadanymi, który zawiera podstawowe informacje o autor stwie (nazwę szablonu, autora, prawa autorskie itd.), listę plików i ewentualne parametry, które można określić z poziomu interfejsu administratora.
Na listingu 3.1 przedstawiono przykładowy plik ze szczegółami szablonu. Puste linie służ;: do oddzielania czterech części pliku. Listing 3.1. Standardowy plik ze szczegółami składa się zazwyczaj z trzech sekcji: Informacji o autorstwie,
listy plików I parametrów < in s ta l 1 v e rs io n = "1 .5 " typ e = ''te m p la te "> Szablon dwukolumnowy < d e s c rip tio n > Dwie kolumny z użyciem CSS w ś w ie cie Joomla! < /d e s c rip tio n > < file s > < f i lenam e>index.php < f i 1ename>templateDetai1s . x m l< /fi 1ename> < file n a m e > im a g e s/L S lo g o .jp g < /fi tename> < f i lenam e> css/tem plate.css < / f ile s > < p o s itio n s > < p o s itio n > le ft< /p o s itio n > r i g h t< /p o s i t i on> < /p o s itio n s > < o p tio n va lue= ” 0 "> N ie< /o p tio n> < o p tio n v a lu e = 'T “ >Tak < / in s t a l 1>
Pierwsza sekcja zawiera informacje o autorstwie szablonu. Poza samą nazwą inne pola nic są wymagane. Jeśli nie zostaną określone, w interfejsie Joomla! pojawi się unknown zamiasi stosownej wartości.
Rozdział 3. ■ Tworzenie własnych szablonów
79
Druga część pliku jest dużo ważniejsza, ponieważ przedstawia listę plików, z których składa się szablon. Lista wykorzystywana jest przez instalator do wypakowania plików z archiwum i umieszczenia ich w odpowiednich folderach. Poza tym wykorzystywana jest wyłącznie podczas usuwania szablonu. Trzecia sekcja to lista możliwych pozycji modułów, które umieszczono w szablonie szablon. Zwróć uwagę, że są to tylko informacje dla użytkownika - nie w pływ ają na przypisanie pozycji w interfejsie administratora. Czwarta sekcja opisuje parametry wykorzystywane przez szablon. Parametry to zmienne wpływające na działanie szablonu, których wartość można ustawić z poziomu interfejsu administratora. Najczęściej parametry wykorzystywane są do określenia opcji wpływających na prezentacje, np. kolor tła. Wartości zapisywane są w pliku parametrów, który opisano w kolejnym podrozdziale.
lienne szablonu: plik parametrów W pliku templateDetails.xml można wstawić parametry szablonu, których zmiana wpływa na funkcjonowanie szablonu. Domyślny szablon Joomla! zawiera parametr showComponent, który pozwala administratorowi na wyłączenie wydruku komponentu (w ten sposób nie zostaną wyświetlone żadne artykuły). Wartości parametrów przechowywane są w pliku param s.ini, który znajduje się w głównym katalogu danego szablonu. W przypadku szablonu domyślnego zawiera 0 1 1 tylko jedną linię: showComponent=l
Wartości parametrów zapisywane są w formacie INI, dzięki czemu plikiem można manipulo wać za pomocą zwykłego edytora tekstowego. Najlepszym rozwiązaniem jest jednak zmia na wartości za pomocą opcji Szablony w interfejsie administratora, jak to przedstawiono na rysunku 3.2. Parametry szablonu wykorzystywane są najczęściej do tego, aby umożliwić ustawianie opcji wpływających na prezentację, takich jak schemat kolorów, liczba kolumn w układzie szablonu, szerokość kolumn itd. Dzięki parametrom szablony stają się bardziej przyjazne użytkownikom, ponieważ ingerencja w wygląd nie wymaga ręcznej edycji plików. Wartość parametrów można odczytać w szablonie, wykorzystując instrukcję analogiczną do $this->params->get('showComponent'), którą zademonstrowano wcześniej w tym rozdziale. Dzięki parametrom możesz nadać szablonowi większą elastyczność.
'afiKa szablonu: folder images Wszystkie obrazki i grafiki wykorzystywane przez szablon powinny zostać umieszczone wewnątrz katalogu images. Najczęściej umieszcza się w nim główny banner strony, graficzne przerywniki, obrazki zaokrąglonych rogów, własne znaki wypunktowania i strzałki wskazujące. Liczba plików graficznych może się znacząco różnić w przypadku różnych szablonów.
80
Joomla!. Profesjonalne tw orzenie stron WWW
Rysu ne k 3 .2 .
w w w .J o o m la J um pstart.com
Możesz ustawić parametry szablonu, wybierając go z listy w części Szablony
Miniatura szablonu W interfejsie administracyjnym, w części Szablony po najechaniu kursorem myszy na nazwę szablonu zostanie wyświetlona w małym okienku jego przykładowa miniatura, o ile jest ona dostępna. W przypadku większości szablonów miniatura przedstawia tylko główny fragment strony, jak zilustrowano to na rysunku 3.3. Aby przyciąć niepotrzebne paski narzędzi, paski prze wijania i inne niepotrzebne elementy, które nie są częścią szablonu, możesz użyć programu graficznego, np. aplikacji Adobe Photoshop lub darm owego GNU Image Manipulation Program, czyli w skrócie: GIMP (www.gimp.org). Rysunek 3 .3 .
Wielkość pliku template_thumbn ail.png powinna wynosić około 2 0 0 x 1 5 0 pikseli
Miniatura powinna zostać zapisana pod nazwą template thumbnail.png w głównym katalogu danego szablonu. Zwróć uwagę, że musi to być główny katalog, a nie podkatalog taki jak images. Aby stworzyć miniaturę, należy wykonać zrzut ekranu, na którym widać Twój szablon, a następnie przyciąć go i zmniejszyć do rozmiaru około 20()x 150 pikseli. Sposób wykonania zrzutu ekranu będzie się różnić w zależności od systemu operacyjnego.
Rozdział 3. ■ Tworzenie własnych szablonów
81
W systemie W indows możesz w ykorzystać klaw isz Print Screen (często oznaczony na klawiaturze jako PrtSc), co spowoduje umieszczenie zrzutu ekranu w schowku. Wciśnięcie i przytrzym anie klaw isza A lt, a następnie naciśnięcia klaw isza Print Screen spowoduje skopiowanie zrzutu aktywnego okna, zamiast całego ekranu. Po tej operacji możesz wkleić zawartość schowka do wybranego programu graficznego. Jeśli tworzysz sporo szablonów, możesz rozważyć wykorzystanie komercyjnego programu do wykonywania zrzutów ekranów, np. Snaglt (www.techsmith.com/snagit.asp). Zawiera on bogate funkcje, w tym automatyczne przycinanie i zmianę rozmiaru. W przypadku Macintosha zrzut ekranu zostanie zapisany na dysku twardym komputera po jednoczesnym naciśnięciu klawiszy Shift+Apple+3. Aby zapisać tylko wybrany fragment ekranu, należy nacisnąć kombinację Apple+Shift+4. Kursor przybierze kształt krzyża, co oznacza, że możesz zaznaczyć fragment ekranu, którego zrzut zostanie wykonany. W systemie MacOS zawarto także narzędzie o nazwie Grab, które zaw iera szereg opcji zw iązanych z wykonywaniem zrzutów. Program można znaleźć w menu Applications/Utility. Dla Linuksa napisano wiele programów służących do tworzenia zrzutów. Jeśli korzystasz z interfejsu XWindows, możesz wykorzystać program xvidcap (http://sourceforge.net/project/ .wic/cap/). Użytkownicy GTK+ m ogą użyć programu Gsnapshot (http://sourceforge.net/ projet/gsnapshot). Po wykonaniu zrzutu ekranu należy skorzystać z programu graficznego, aby zmniejszyć obraz do odpowiednich rozmiarów i zapisać go w formacie PNG. Gotową miniaturę zapisz w głównym katalogu swojego szablonu pod nazwą templatejhumbnail.png. Od teraz miniatura szablonu będzie automatycznie wyświetlana w interfejsie administratora Joomla! po najechaniu kursorem myszy na nazwę szablonu w części Szablony. t
worzenie trójkolumnowego układu Szablony rzadko konstruuje się od podstaw. Większość projektantów wykorzystuje wzorzec do tworzenia nowych szablonów. W tym podrozdziale opisano tworzenie trójkolumnowego wzorcowego szablonu, który możesz wykorzystać jako podstawę wszystkich Twoich kolej nych prac. Do określenia układu elementów i ich wyglądu wykorzystasz CSS. Jeśli masz ju ż jakieś doświadczenia z tą technologią, to zdajesz sobie sprawę, że arkusze stylów są w różny sposób interpretowane przez różne przeglądarki. Najbardziej znaczącym przykładem jest Internet Explorer 6, który zawiera błędną implementację wielu podstawowych funkcji stan dardu CSS lub wcale jej nie ma. Z tego powodu twórcy Joomla! dołączają do swoich szablonów specjalny plik o nazwie ieonly.css5. Wraz z wydaniem Internet Explorera 7 większość problemów została rozwiązana, jednakże program w wersji 6 będzie jeszcze długo wykorzystywany przez użytkowników.
Tylko dla Internet Explorera” — przyp. tłum.
82
Joomla!. Profesjonalne tworzenie stron WWW
Dlatego jeśli jakiś fragment CSS nie działa poprawnie, prawdopodobnie niezbędny jest dodat kowy kod konieczny do zapewnenia kompatybilności z różnymi przeglądarkami. W tej książce starałem się umieścić wystarczająco dużo kodu CSS i opisu specjalnych przypadków, aby zapewnić ja k najszerszą kompatybilność z najpopularniejszymi przeglądarkam i. Jeśli je d n a k Twój szablon je s t niepoprawnie wyświetlany w przeglądarce, sugerowałbym znalezienie fragmentu arkusza stylów, który powoduje problem, a następnie przeszukanie internetu p o d kątem obejścia dla tego problemu (najczęściej błędnej implementacji CSS). W ten sposób uda Ci się najprawdopodobniej rozwiązać problem i dodatkowo poprawić kompatybilność wzorcowego szablonu. Jedną z pożytecznych funkcji Joomla! jest możliwość wykorzystania kilku arkuszy stylów w jednym szablonie. Jeśli szablon składa się wyłącznie z jednej strony i pojedynczego arkusza stylów, musi być on „do wszystkiego”. Jednak będąc projektantem, życzyłbyś sobie raczej, żeby różne podstrony wyświetlane były w odrobinę inny sposób. Zamiast wykorzystywać kilka szablonów, można wykorzystać jeden, który w zależności od potrzeb danej podstrony zmieni swój wygląd dzięki specjalnemu plikowi CSS. Jeśli tworzysz nowe szablony lub poprawiasz wygląd już istniejących, zalecane jest skorzy stanie z rozszerzenia przeglądarki, które pozwoli Ci „na żywo” badać, a nawet modyfiko wać arkusze stylów. W przypadku programu Firefox istnieje narzędzie o nazwie Firebug (,h ttps://addons.mozilla.org/en-US/firefox/addon/l8 4 3 ), które umożliwia diagnozowanie, edycję, a także monitorowanie kodu CSS i JavaScript interpretowanego przez przeglądarkę. Dla Internet Explorera możesz znaleźć na stronie Microsoftu (www.microsoft.com) Internet Explorer D eveloper Toolbar. To darm owe narzędzie pozwoli Ci przeglądać i zmieniać obiektowy model dokumentu (DOM), ustawiać styl poszczególnych elementów, sprawdzać poprawność kodu CSS, a także wiele więcej.
Tworzenie struktury szablonu Pierw szym krokiem podczas projektow ania nowego szablonu jest utworzenie folderu, w którym zostanie umieszczony. Ja zawsze nadaję nazwom szablonów przedrostek Impl, dzięki temu, jeśli znajdzie się w katalogu miscellaneous, będę wiedział, że chodzi o szablon, a nie o moduł lub inny element Joomla!. Ponieważ masz zamiar stworzyć szablon trójkolumnowy, rozważ nazwanie go tmpIThreeCor, a następnie umieść w katalogu templates systemu Joomla!. Jeśli projektujesz szablon na serwerze testowym (zalecane) w środowisku Windows, ścieżka dostępu do Twojego szablonu będzie przypominać poniższą: C:\Program F ile s\A p a che Softw are FoundatiorAApache 2 .2 \htd o cs\te m p la te s\tm p lT h re e C o l
Aby nie zajmować się później przygotowaniami, utwórz od razu foldery css i images w katalo gu szablonu. Do momentu ukończenia szablonu znajdzie się w nich wiele plików, arkusze stylów, grafiki pomocnicze, a także logo strony.
6 Z ang. szablon trójkolumnowy — przyp. tłum.
Rozdział 3. ■ Tworzenie własnych szablonów
83
Potrzebujesz także podstawowy plik tem plateD elails.xm l, aby móc przeprowadzać testy w czasie tworzenia szablonu. Joomla! wykorzystuje ten plik, by zdobyć informacje na temat szablonu, a także umożliwić jego wybór za pomocą opcji Szablony. Wprowadź poniższy kod i zapisz go w pliku templateDelails.xml, w katalogu Twojego szablonu: « in s t a ll v e rs 1 o n = "l.5 " typ e = "te m p la te "> Trzy Kolumny < d e s c rip tio n > Wzorzec szablonu o u k ła d z ie trójko!umnowym < /d e s c rip tio n > < file s > < f i 1ename>i ndex. php < f 'i 1ename>templateDetai 1s . xml < / f i 1ename> < / f ile s > < p o s itio n s > < p o s itio n > u s e rl< /p o s itio n > < p o s itio n > rig h t< /p o s itio n > < /p o s itio n s >
Po utworzeniu podstawowej struktury szablonu możesz przejść do etapu — konstruowania logiki szablonu. Pierwszym krokiem jest stworzenie prototypowego pliku index.php.
worzenie pliku indeN.php Wstępna wersja pliku index.php będzie bardzo prym itywna ma to umożliwić szybkie uruchomienie szablonu. Będzie się składać z trzech kolumn, z czego każda będzie odpowiadać za inną część interfejsu. W domyślnej instalacji Joomla! szablon wzorcowy spowoduje wy świetlenie strony głównej przypominającej tę, która jest przedstawiona na rysunku 3.4. Każda kolumna ma obram owanie, co ułatw ia określenie elem entów, które zawiera. Kolejnym uproszczeniem jest brak oddzielnego pliku arkusza stylów — zamiast tego kod CSS zostanie umieszczony w nagłówku pliku index.php. Jeśli masz już jakieś doświadczenie w pracy z Joomla!, wiesz, że strona składa się z pewnej liczby paneli nazywanych modułami. Każdy z tych modułów może zawierać menu, artykuł, sondę lub inny dowolny element. Szablon strony może zawierać określoną liczbę modułów, widocznych lub ukrytych, w zależności od ustawień strony. Poprzez wyświetlanie lub ukry wanie poszczególnych modułów szablon strony można dopasować do funkcji poszczególnych podstron. Aby zrozumieć, na czym polega układ modułów, wyobraź sobie zwykłą gazetę. Logo znaj duje się na górze, spis treści w ramce na dole, a resztę miejsca podzielono na kilka różnych paneli. Mogą one zawierać komentarze, reklamy, ogłoszenia, prognozę pogody lub praktycznie dowolny inny element. Moduły Joomla! odzwierciedlają tę funkcję. Strona składa się z różnych modułów umiesz czonych w panelach. Podstawowy wyświetla zawartość artykułu. Bardziej zaawansowany może zawierać sondę na temat mody i umożliwiać wybór konkretnej odpowiedzi, np. „Tak, w tym sezonie spódniczki są krótsze niż w poprzednim”. Przykładem dynamicznego modułu jest wyświetlanie aktualnego notowania giełdy.
84
Joomla!. Profesjonalne tworzenie stron WWW
Rysu ne k 3 .4 .
Strona główna wyświetlona z wykorzystaniem trójkolumnowego wzorcowego szablonu
Welcome to the Frontpage
Main Me im
□□□
Welcome to Joomla!
Polls
Wpisal Administrator czwartek.. 12 październik 2006 10 00 J o o m la ' is a f i e e op en soiuc e fia m e w o ik and ( outeni p ublishing m t w n d e sig n e d foi quickly cre a tin g lugitlv u itei activ e inulti-language W eb sites, onluie com m unities m edia p o ita ls . blogs and eC o n u n e ic e appli> anons
i Web Links • News Feeds
Resources
Joomla* provides an easy-to-use graphical user interface that vers.on i ' simplifies the management and publishing of large volumes of content including HTML, documents, and rich media Joomla! is used by organisations of all sizes for Public Web sites. Intranets, and Extranets and is supported by a community of thousands of users Powered by
Joom la !
Jo o m la ' is m o d
fori Community Sites Public Brand Sites eCommerce C-Blogs Intranets C) Photo and Media Sites O AH o f the Above! | Gtosuj |
[ Wyniki |
Zmieniony ( czwartek. 08. hstopad 2007 12 06 ) Wiecei
W l i o 's o n li n e
We are Volunteers
Naszą witrynę przegląda teraz 2 gości
p
j—-j j—j Stick to the Code!
Wpisał Administrator K e y ( one rp ts
[~ ] 1~~1
Wpisał Administrator ¿ro 07 hpiec 2004 12 00
środa. 07 hpiec 2004 09 54
tc
The Joomla* Core Team
Wilco Jansen resorted to
ensure this code release.
A c h e i ti s e i n e n t
W podstawowym układzie trójkolumnowym w lewej kolumnie wyświetlony zostanie mo duł u serl, który zawiera menu z najnowszymi wiadomościami. Środkowa kolumna zawiera treść artykułu, a w prawej wyświetlany jest moduł przypisany do rig h t, co w domyślnej instalacji Joomla! odpowiada sondzie. Jeśli w interfejsie administracyjnym po wybraniu szablonu wzorcowego klikniesz przycisk Podgląd, na ekranie pojawi się szablon wraz z zazna czeniem poszczególnych modułów, jak przedstawiono to na rysunku 3.5. Rysu ne k 3 .5 .
Kliknięcie przycisku Podgląd spowoduje wyświetlenie szablonu wraz z oznaczeniem modułów
Welcome to the Frontpage
'
k
I
□ □□
Welcome to Joomla* Wpisał Administrator czwartek, 12 październik 2006 10 00
LJ o o m la ' is a f i e e op en s o m te fi am e w o ik and 'o itte n t Y ublisluitg s y s te m d e s ig n e d foi q«u an o n s
nkib;
Joomla* provides an easy-to-use graphical user interface that simplifies the management and publishing of large veisinn i 5 volumes of content including HTML, documents, and nch media Joomla* is used by organisations of all sizes for Public Web sites. Intranets, and Extranets and is supported by a community of thousands of users
¿4 Joom la!
I
Znuemony ( czwartek, 08. hstopad 2007 12.06 )
Wy 1L_ We are Volunteers
I □ □ □
Stick to die Code*
□ □ □
I
Wpisał Administrator
Wpisal Administrator
środa, 07 lipiec 2004 09 54
środa, 07 hpiec 2004 12:00
I
The Joomla! Core Team consists of volunteer developers, designers, administrators and managers who, together with a
To ensure this code release. Wilco Jansen resorted to sending rum to joint lead-developer Johan Janssens Johan, who's had a
I
O n lin e "
:.„ j
Rozdział 3. ■ Tworzenie własnych szablonów
85
Domyślna instalacja Joomla! zawiera moduły log in, p o llin g , who is online, syndication i search. Każdy z nich zostanie dokładniej opisany w kolejnych rozdziałach. Istnieje możliwość załączenia dodatkowych modułów w postaci rozszerzeń. Aby stworzyć szablon Trzy Kolumny, wprowadź poniższy kod, a następnie zapisz go pod nazwą index,php w katalogu szablonu: < jd o c :in c lu d e type="head" />