You are on page 1of 448

PROGRAMMER

TO

PROGRAMMER

Joomla!
Profesjonalne tworzenie stron WWW ,

Dan Rahmel
'=', wrox
j

Helion
PROGRAMMER TO PRCX;

http://helion.pl

Tytu oryginau: Professional Joomla! Tumaczenie: Tomasz Przedmojski ISBN: 978-83-246-1766-1 Copyright 2007 by Wiley Publishing, Inc., Indianapolis, Indiana. All rights reserved. This translation published under license with the original publisher John Wiley & Sons, Inc. Translation copyright 2010 by Helion S.A. Polish edition copyright 2010 by Helion S.A. The Wrox Brand trade dress is a trademark of John Wiley & Sons, Inc. in the United States and/or other countries. Used by permission. Szata graficzna Wrox Brand jest handlowym znakiem towarowym firmy John Wiley & Sons, Inc. w Stanach Zjednoczonych i/lub innych krajach. Wykorzystano na podstawie licencji. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeone. Nieautoryzowane rozpowszechnianie caoci lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykopywanie kopii metod kserograficzn, fotograficzn, a take kopiowanie ksiki na noniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki wystpujce w tekcie s zastrzeonymi znakami firmowymi bd towarowymi ich wacicieli. Autor oraz Wydawnictwo HELION dooyli wszelkich stara, by zawarte w tej ksice informacje byy kompletne i rzetelne. Nie biorjednak adnej odpowiedzialnoci ani za ich wykorzystanie, ani za zwizane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponosz rwnie adnej odpowiedzialnoci za ewentualne szkody wynike z wykorzystania informacji zawartych w ksice. Wydawnictwo HELION ul. Kociuszki lc, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (ksigarnia internetowa, katalog ksiek) Pliki z przykadami omawianymi w ksice mona znale pod adresem: ftp://ftp.helion.pl/przyklady/jooptw.zip Drogi Czytelniku! Jeeli chcesz oceni t ksik, zajrzyj pod adres http://helion.pl/nser/opinie7jooptw Moesz tam wpisa swoje uwagi, spostrzeenia, recenzj. Printed in Poland.

Chciabym zadedykowa t ksik ludziom szlachetnie wpierajcym projekt Sprawiaj oni, e sie Web jest lepszym miejscem dla nas wszystkich.

Joomla!.

Podzikowania
Na dugo przed tym, zanim napisaem pierwsze zdanie tej ksiki, zesp tworzcy Joomla! powici niezliczone godziny na stworzenie aplikacji uywanej dzi na caym wiecie. Nie trzeba dodawa, e ksika ta nie powstaaby, gdyby nie jego niestrudzone wysiki, denie do opracowania aplikacji na najwyszym wiatowym poziomie, jak jest Joomla!. Podobnie jak wikszo ludzi regularnie uywajcych Joomla!, nie jestem w stanie wyrazi wdzicznoci zespoowi za jego wspaniae dzieo. Chciabym podzikowa wszystkim ludziom z wydawnictwa Wrox szczeglnie biorc pod uwag ich cierpliwo, kiedy prbowalimy stworzy t ksik w oparciu o nieustannie zmieniany projekt. Kieruj podzikowania do Kita Kempera, ktry pomg mi sprecyzowa to, co wtedy byo jeszcze niejasnym pomysem na ksik. Kieruj je take do Jenny Watson, ktra musiaa przebrn przez wiele poprawek powodujcych opnienia. Jestem winien wdziczno Chrisowi Davenportowi, redaktorowi technicznemu, ktrego wnikliwe sugestie i mdre zalecenia znaczco poprawiy jako tej ksiki. Dzikuj Kevinowi Shaferowi za wytrwao podczas najciszych etapw oraz wykonanie fenomenalnej pracy przy skadaniu ksiki w cao. Chciabym take podzikowa Ami Frank Sullivan, Kirkowi Batemanowi i wszystkim z wydawnictwa Wiley, ktrzy niestrudzenie pracowali nad stworzeniem tej ksiki. Musz take podzikowa bliniaczym gwiazdom mojego ycia mojej onie Elizabeth i crce Aleksandrze za nadawanie znaczenia mojemu yciu. Rzadko kiedy narzekajc, Elizabeth podoaa obcieniom nocnej pracy, straconych weekendw, za co dzikuj Ci z gbi serca. Spotkanie Ciebie byo najlepsz rzecz w moim yciu. Chciabym podzikowa mojemu rodzestwu (Davidowi i Darlene) oraz przyjacioom (Joelowi Harrisowi, Juanowi Leonffu, Gregowi Mickey'emu, Johnowi Taylorowi, Edowi Gildredowi, Donowi Murphy'emu i Weldowi 0'Connorowi) za ich bezwarunkowe wsparcie. Jestem bardzo wdziczny Sandrze Villagran za to, jak fantastycznie utrzymywaa kurdupla szczliwym. Przede wszystkim chciabym podzikowa Tobie, Czytelniku. Poprzez zakup tej ksiki sprawiasz, e czonkowie przemysu wydawniczego mog dobrze wykonywa swoj prac. Mam nadziej, e informacje w niej zawarte pomoc Ci zrealizowa Twoje marzenia. Dziki.

Spis treci
O autorze Wprowadzenie Rozdzia 1. Wprowadzenie do Joomla!
Zapoznanie z Joomla! Wpyw elastycznoci na popularno Joomla! Dla kogo jest ta ksika Webmasterzy Projektanci stron WWW Deweloperzy stron WWW Joomla! w wersji 1.0 a uytkownicy Mambo Podsumowanie

13 15 21
22 23 24 24 25 27 28 29

Rozdzia 2. Szczegy instalacji i konfiguracji


Cztery serwery systemu Joomla! Decyzje podczas instalacji Etapy instalacji Joomla! Konfiguracja Apache Web Server Konfiguracja PHP Konfiguracja MySQL Konfiguracja Joomla! Serwer testowy a serwer produkcyjny Ustawienia sen/vera testowego Ustawienia serwera produkcyjnego Podsumowanie

31
31 32 37 40 47 52 58 62 63 64 65

Rozdzia 3. Tworzenie wasnych szablonw


Struktura szablonu Pliki i foldery Logika szablonu: plik index.php Prezentacja szablonu: plik CSS Metadane szablonu: plik templateDetails.xml Zmienne szablonu: plik parametrw

67
67 68 69 73 78 79

Joomla!. Profesjonalne tworzenie stron WWW


Grafika szablonu: folder images Miniatura szablonu Tworzenie trjkolumnowego ukadu Tworzenie struktury szablonu Tworzenie pliku index.php Tworzenie dystrybucyjnego pliku templateDetails.xml Zaawansowane techniki tworzenia szablonw Wykorzystanie grupy szablonw a C S S favicon.ico Modyfikacja wygldu rozszerze Tworzenie ukadu strony dla telefonw komrkowych Adaptowanie szablonw Mambo lub Joomla! 1.0 Podsumowanie 79 80 81 82 83 94 96 96 97 98 99 101 102

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze


Katalog rozszerze Funkcjonalno i obsuga strony Instalacja dodatkowego edytora WYSIWYG Dodawanie wasnych stylw do TinyMCE Dodawanie obsugi plikw i FTP Dodawanie mapy strony Community Builder Organizacje i e-commerce Meneder subskrypcji Sklep internetowy MicroShop z patnociami Paypal Meneder projektw Project Fork Rozszerzenie kart pracy Dodawanie na stronie platformy aukcyjnej Zawarto strony Podcasting w Joomla! Galeria zdj na stronie Joomla! Komunikacja na stronie Dodawanie komentarzy do artykuw Ksiga goci Czat na stronie Joomla! Uruchamianie systemu wiki w Joomla! eWriting Implementacja ogosze Dodawanie ledzenia wynikw sportowych Dodawanie gier hazardowych Obsuga quizow Podsumowanie

103
104 105 106 108 109 110 Ill 117 118 119 120 121 122 123 124 125 127 128 128 129 130 133 134 135 137 138 138

Rozdzia 5. Tworzenie prostych rozszerze: moduy


Tworzenie moduu Hello World Tworzenie moduu witeczne yczenia Tworzenie pliku deskryptora Tworzenie kodu moduu Tworzenie tabeli i zapisywanie przykadowych danych Konfiguracja moduu Tworzenie moduu Kontakt z Nami Podsumowanie

141
142 145 146 147 149 150 152 157

Spis treci Rozdzia 6. Zaawansowane rozszerzenia: komponenty


Przygotowanie rodowiska programistycznego Stosowanie systemu kontroli wersji SVN Instalacja SVN Tworzenie repozytorium SVN Korzystanie z Eclipse Tworzenie komponentu Ksigi Goci Ochrona przed spamem Cz frontowa komponentu Cz administracyjna komponentu Plik deskryptora Tworzenie archiwum Instalacja komponentu Korzystanie z phpDocumentor Instalacja Wstawianie sekcji DocBlock w kodzie rdowym Podsumowanie

7 159
159 160 162 163 164 166 167 168 171 174 176 176 179 179 180 181

Rozdzia 7. Joomla! i Aia*


Struktura technologii Ajax Prosty komponent ajaksowy Tworzenie komponentu Tworzenie strony WWW Tworzenie komponentu Serwer-danie Tworzenie komponentu Tworzenie moduu ajaksowego Wady technologii Ajax Niedostpno dla robotw internetowych Gromadzenie informacji Zagroenia bezpieczestwa Podsumowanie

183
183 185 185 187 189 189 192 197 198 198 198 199

Rozdzia 8. Wzorce projektowe a Joomla!


Wzorce projektowe Trzy gwne kategorie wzorcw Wzorce konstrukcyjne Wzorce strukturalne Wzorce czynnociowe Wzorce wspbienoci Wzorce architekturalne Wzorzec Model-Widok-Kontroler Wykorzystanie wzorca MVC w tworzeniu komponentw Podsumowanie

201
202 203 203 205 206 207 207 209 211 215

Rozdzia 9. Ingerencja w fundamenty Joomla!: wtyczki


Przegld wtyczek Joomla! Zdarzenia typu Content Zdarzenia typu Editor Zdarzenia typu System i Search Zdarzenia typu User

217
217 219 220 221 221

Joomla!. Profesjonalne tworzenie stron WWW


Wtyczka Hello World! Tworzenie pliku deskryptora Tworzenie kodu wtyczki Wtyczka Automatyczne Skrty Kod deskryptora XML Kod wtyczki Budowa platformy Joomla! Struktura CMS Joomla! (JApplication) cieki Joomla! Wskazwki przydatne podczas pracy z kodem Joomla! Wykorzystywanie funkcji przeszukiwania katalogw Badanie com_content SVN Joomla!: najnowsze osignicia Podsumowanie 222 223 224 225 226 227 229 232 234 235 235 237 237 239

Rozdzia 10. Budowanie spoecznoci w Joomla!


Planowanie wirtualnej spoecznoci Trzy stadia wirtualnej spoecznoci Znaczenie stabilnoci i regularnoci Dlaczego warto stworzy wirtualn spoeczno Technologie wirtualnych spoecznoci Ksiga goci Czat Forum dyskusyjne Sondy Komentarze Sieci spoecznociowe Kalendarz wydarze Systemy Wiki Uruchamianie wirtualnej spoecznoci Dobr moderatorw Prowadzenie spoecznoci Podsumowanie

241
242 243 246 247 248 249 253 257 260 262 266 267 272 274 274 275 276

Rozdzia 11. Prowadzenie profesjonalnej strony


Programowanie i testy Ustawienia diagnostyczne Interfejs wiersza polece PHP Zautomatyzowane testy Uruchamianie strony Przenoszenie strony na serwer produkcyjny Kopia zapasowa Joomla! Konfiguracja wirtualnych serwerw Apache Kontrola serwera Apache z wiersza polece Zarzdzanie wieloma serwerami Testy obcieniowe Rwnowaenie obcienia Umidzynaradawianie Automatyczne cenzurowanie treci Dostrajanie wydajnoci MySQL Ustawianie dysku przechowujcego dane Wybr typu serwera

277
277 278 280 281 282 282 283 284 285 285 286 287 288 289 289 289 290

Spis treci
rdo problemw Optymalizacja indeksw Optymalizacja istniejcego systemu Administracja Uwierzytelnianie LDAP Obsuga Czyszczenie systemu Bezporedni dostp do MySQL Podsumowanie

9
292 292 297 298 298 300 300 301 303

Rozdzia 12. czenie z zasobami zewntrznymi


Pobieranie zewntrznych materiaw Kanay RSS Rozszerzenie Auto Articles 3000 Zarzdzanie programami partnerskimi Program partnerski Google AdSense Program partnerski firmy Amazon Komunikacja biznesowa z zastosowaniem EDI Dokumenty EDI Standardy EDI Rozszerzenie Skylark Komunikacja z sieciami zewntrznymi Komponent typu screen scraper Komponent Joomlamap Wyszukiwanie adresw z zastosowaniem XML Podsumowanie

305
305 305 311 313 314 316 319 320 320 329 330 330 336 340 346

Rozdzia 13. Pozycjonowanie i marketing w wyszukiwarkach internetowych


Ustawienia Joomla! Proste adresy Metadane Aktywacja moduu Breadcrumbs Mapa strony Oglne techniki Gwne wyszukiwarki Badanie sw kluczowych Tytuy stron Atrybut alt dla obrazw i innych multimediw PageRank Google System wymiany odnonikw Ajax a SEO Google Analytics Czego nie naley robi Marketing w wyszukiwarkach internetowych (SEM) Komponowanie skutecznego tekstu reklamowego Pay per click i pay per view Google Adsense Podsumowanie

347
..348 348 350 351 353 354 354 355 359 359 360 361 362 363 363 364 364 365 365 366

Rozdzia 14. Bezpieczestwo Joomla!


Typy atakw Ataki na hasa SQL Injection

367
367 368 368

10

Joomla!. Profesjonalne tworzenie stron WWW


Niestandardowe dania szczeglnie przez Ajaksa Cross-Site Scripting (XSS) Skanowanie katalogw Atak Denial of Service (DoS) Podsuchiwanie pakietw HTTP Bezpieczestwo serwera WWW Zabezpieczanie serwera Apache Odmowa dostpu do plikw z danym rozszerzeniem Bezpieczestwo PHP PHP Safe Mode PHP doc_root PHP disable_functions PHP disable_classes PHP display_errors PHP expose_php Bezpieczestwo MySQL Bezpieczestwo Joomla! Usuwanie plikw instalacyjnych Edytor HTML Joomla! Uruchamianie wewntrz systemu Rozwijanie i testowanie Podsumowanie 371 372 372 373 373 376 376 377 378 378 379 379 379 380 380 380 381 381 381 382 382 383

Rozdzia 15. Czego Joomla! nie potrafi


Kontrola wersji dokumentw Import, konwersja i eksport plikw Ograniczone funkcje zabezpiecze i autoryzacji Rwnowaenie obciania i replikacja danych Poziomy interfejsu uytkownika, obsuga skrek Standardowa funkcjonalno groupware Funkcjonalno portalu Podsumowanie

385
385 387 387 388 388 389 390 393

Rozdzia 16. Rzut okiem na popularne strony oparte na Joomla!


Strony akademickie Wydzia Biologii Molekularnej Princeton The Shakespeare Birthplace Trust Journal of Intercultural and Interdisciplinary Archaeology Graphic User Interactive Learning and Development (GUILD) Ministerstwo Edukacji na Wyspach Dziewiczych Strony powicone zdrowiu i rodzinie SeniorNet KidsCHANNEL A Story for Bedtime Second Wives Club Better Health Here Profesjonalne strony Mistrzostwa wiata 2010 w Republice Poudniowej Afryki Best Association Resources and Tools Relacje podrnicze Randalla Wooda Turbo Trade Sonetto John Avon Illustration

395
396 396 397 398 399 400 401 401 402 403 404 406 407 407 408 409 410 411 412

Spis treci
Media (Aktualnoci, magazyny itp.) MainSPOT.NET Centrum Informacji ONZ dla Europy Zachodniej HCJB Global Asiaing.com The Chaser Creative Guy Publishing Strony hobbystyczne Success and Sport (S.A.S.) Safari Ventures Sky Systems KISSin' UK Calialive.com Strony powicone technologii Strona gwna projektu Joomla! Open Workbench Joomlahut Projekt OScar Podsumowanie

11
413 413 414 415 416
417

418 419 419


4 2 0

421 422 423 424 425 426 427 428 429


431

Skorowidz

12

Joomla!. Profesjonalne tworzenie stron WWW

O autorze
Dan Rahmel jest najszerzej znany z pracy z systemami bazodanowymi, PHP i Visual Basic. Posiada kilkunastoletnie dowiadczenie w projektowaniu oraz implementowaniu systemw informatycznych i rozwiza klient-serwer w oparciu o MySQL, Microsoft SQL Server, Microsoft Access i Visual FoxPro. Swoj karier rozpocz, piszc midzy innymi dla DBMS, American Programmer i Internet Advisor. Jest autorem kilkunastu ksiek przetumaczonych na wiele jzykw, takich jak chiski, japoski, hiszpaski, francuski i portugalski. W roku 2006 wydawnictwo Focal Press przygotowao specjaln edycj Nuts and Bolts Filmmaking: Practical Techniques for the Gurilla Filmmaker1 (Focal Press, 2004), przeznaczon na rynek indyjski.

Jedna z ksiek Dana Rahmela powiconych tworzeniu niezalenych filmw p r z y p . tum.

14

Joomla!. Profesjonalne tworzenie stron WWW

Wprowadzenie
Centrum strony internetowej stanowi potrzeba organizowania i prezentowania treci. Przez ostatnie 10 lat statyczne strony zdominoway internetowy krajobraz, a zarzdzanie stron byo mozolnym, czsto frustrujcym procesem. Webmasterzy musieli boryka si z tysicami linii kodu HTML, umieszczonymi w ogromnej liczbie plikw. Technologia dynamicznego tworzenia stron wymagaa duej liczby dodatkowego programowania i stwarzaa wiele nieprzewidzianych zagroe bezpieczestwa. Wydanie w 2005 roku systemu zarzdzania treci ( C M S Content Management System) Joomla! rozpoczo now epok niedrogiego tworzenia zaawansowanych stron internetowych. Zarzdzanie treci stao si moliwe bez koniecznoci programowania. Elastyczno systemu Joomla! pozwolia tworzy skomplikowane rozszerzenia, ktre dodatkowo wzbogacay CMS. Dziesitki tysicy programistw zainteresowao si Joomla!, a dostpno rozszerze osigna mas krytyczn (przynajmniej 1700 wedug ostatnich wylicze), czynic Joomla! najwaniejszym, niekomercyjnym systemem CMS na wiecie. Joomla! sta si wanym narzdziem dla webmasterw, sucym do tworzenia i obsugi stron bez wyczerpujcego wysiku. Moliwo szerokiego wykorzystania stworzya wiele okazji dla profesjonalnych programistw Joomla!. Biorc pod uwag, e Joomla! zosta pobrany, liczc do poowy 2007 roku ponad 2,5 miliona razy, programici maj du grup potencjalnych klientw. Niezalenie od tego, czy tworzysz szablony XHTML, aby sprzeda je stronie subskrypcyjnej, czy wiadczysz usugi jako ekspert Joomla! lub tworzysz rozszerzenia w ramach spoecznoci open source, znajdziesz swoje miejsce w wiecie Joomla!. Biorc pod uwag rnorodno potrzeb zaawansowanych czytelnikw, napisaem t ksik z zamiarem przekazania wiedzy na poziomie penoetatowego programisty lub czonka ekipy programistycznej Joomla!. Staraem si dostarczy przykadw dla dwch gwnych obszarw profesjonalnych zastosowa tego systemu: projektowania oraz tworzenia oprogramowania i zakadania stron. Projektowaniu i tworzeniu oprogramowania zostay powicone cztery rozdziay, w ktrych opisano implementowanie wasnych szablonw, tworzenie rozszerze wszystkich trzech typw (moduy, komponenty i wtyczki), wykorzystanie najnowszej technologii jax w dodatkach do Joomla!, adaptacj profesjonalnego rodowiska programistycznego z systemem kontroli wersji, zastosowanie wzorcw projektowych i wiele innych.

16

Joomla!. Profesjonalne tworzenie stron WWW


Dokadne zapoznanie si ze struktur platformy Joomla! pozwoli Ci dogbnie zrozumie dziaanie systemu, dziki czemu podczas tworzenia dodatkw dla Joomla! bdziesz w stanie lepiej wykorzysta bogactwo moliwoci. W rozdziaach powiconych zakadaniu stron poznasz technologie lece u podstaw Joomla! (PHP, Apache itd.). Odpowiednia konfiguracja tych technologii zapewni najwysz wydajno systemu. Zarzdzanie stron, pozycjonowanie (SEO), komunikacja z treciami zewntrznymi, ustawienia zabezpiecze i uwierzytelniania LDAP (.Lightweight Directory Access Protoco!) wszystkie te tematy zostay opisane w ramach tej ksiki. Mam nadziej, e po zakoczeniu lektury bdziesz mia wiele pomysw, jak zmieni i rozszerzy Joomla!, aby zaspokoi potrzeby swoje (lub) swoich klientw. Spdziem wiele godzin, analizujc kod platformy Joomla!, co pozwolio mi doceni ogrom genialnej pracy wykonanej przez ekip Joomla!. Podejrzewam, e im wicej czasu spdzisz, pracujc z Joomla!, tym chtniej bdziesz podziela mj zachwyt nad tym cudem open source.

Dla kogo jest ta ksika


Joomla!. Profesjonalne tworzenie stron WWW skierowana jest do projektantw i twrcw stron WWW, hobbystw, maych i rednich firm, organizacji e-commerce i non profit. Szerokie zainteresowanie nabywaniem umiejtnoci pracy z Joomla! wykracza poza spoeczno projektantw i twrcw, poniewa wiele firm od porednikw nieruchomoci, poprzez kluby fitness, a po domy pogrzebowe tworzy swoje strony w oparciu o Joomla!. Ksika ta powinna zainteresowa take bloggerw, twrcw treci firmowej oraz wspomc specjalistw. Rwnie kada osoba dysponujca dostpem do serwera z obsug PHP/MySQL bdzie w stanie stworzy stron Joomla! wykorzystujc wszystkie funkcje przedstawione w tej ksice. Aby efektywnie pracowa z t ksik, powiniene mie przynajmniej podstawowe dowiadczenie w instalowaniu systemu. Jeli pracowae z poprzednimi wersjami Joomla!, nie bdziesz mia problemu z adn z przedstawionych technik i funkcji. Uaktualnienia Joomla! charakteryzuje zachowanie cigoci poza reorganizacj menu gwne aspekty zarzdzania systemem pozostaj niezmienne. Programowanie Joomla! znacznie si zmienio, dlatego zwr szczegln uwag na przykady i wskazwki, ktre przedstawiaj nowe sposoby programowania. Ze wzgldu na du liczb programowania w PHP oraz potencja tej ksiki, z ktrego warto skorzysta, wymagane s podstawowe umiejtnoci w tym obszarze. Kompetencje w zakresie konfiguracji serwera WWW s zalecane, chocia nie s niezbdne, jeli samodzielnie nie zarzdzasz serwerem. Staraem si napisa t ksik tak, aby kolejne rozdziay opiera na informacjach zawartych w poprzednich rozdziaach. Chocia mona j czyta dowolnie, polecabym przeczytanie przynajmniej szeciu pierwszych rozdziaw w kolejnoci. Dalej mona swobodnie, bez ryzyka pogubienia si, przechodzi do rozdziaw o interesujcej tematyce z pominiciem pozostaych.

Wprowadzenie

17

o zawiera ta ksika
Joomla! jest darniowym, dostpnym na wiele platform (Windows, Linux i MacOS) systemem CMS o otwartym kodzie rdowym. Ta ksika opisuje now wersj Joomla! 1.5, wraz ze wszystkimi funkcjami (nie tylko nowymi). W miar moliwoci zaznaczaem rnice midzy poprzedni wersj 1.0.x, a n o w aby uatwi uytkownikom przejcie na nowy system. Narzdzia programistyczne niezbdne do skorzystania z tej ksiki i podanych przykadw s, podobnie jak Joomla!, darmowe i powszechnie dostpne (pomijajc specyficzne przykady z wykorzystaniem programw takich jak Adobe Dreamweaver i Microsoft Frontpage). Doczono adresy stron internetowych wszystkich programw i rozszerze, ktre zostay wykorzystane w tej publikacji.

lak zbudowana jest ta ksika


Ksik napisano z myl o uytkowniku rednio zaawansowanym, ktry chciaby pokona okrelone etapy, aby zosta uytkownikiem zaawansowanym. Na pocztku opisany jest proces instalacji, konfiguracji, dalej jest rozszerzanie systemu Joomla! przez tworzenie wasnych szablonw, moduw, komponentw i wtyczek. Nastpnie przedstawiono zaawansowane aspekty tworzenia stron, od budowania internetowych spoecznoci, przez komunikacj z treciami zewntrznymi, a po pozycjonowanie. Ksika ta zawiera nastpujce rozdziay: Rozdzia 1. Wprowadzenie do Joomla!" opisano rne aspekty Joomla! dotyczce webmasterw, projektantw i twrcw stron. Rozdzia 2. Szczegy instalacji i konfiguracji" zawarto informacje na temat czterech serwerw systemu Joomla! (Joomla!, PHP, MySQL i Apache lub IIS), pokazano, jak zainstalowa i skonfigurowa kady z nich, aby uzyska najwysz wydajno. Dodatkowo zaprezentowano szczegowo rnice w konfiguracji rodowiska testowego i produkcyjnego. Rozdzia 3. Tworzenie wasnych szablonw" przedstawiono, jak od podstaw stworzy wasny szablon. Na przykadzie prymitywnego szablonu Hello World omwiono jego struktur. Nastpnie szablon zosta rozwinity do poziomu zoonego, trjkolumnowego ukadu z wykorzystaniem CSS. Na koniec opisano techniki zaawansowanego tworzenia szablonw, takie jak tworzenie grupy szablonw, generowanie ikony ulubionych i adaptacja na potrzeby telefonw komrkowych. Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze" ten rozdzia zawiera szczegowy przegld wielu dostpnych rozszerze, a take ich podstawow konfiguracj i wykorzystanie. Przedstawiony zosta take katalog rozszerze Joomla! (JED). Przytoczono przykady z rnych kategorii (funkcjonalno i obsuga strony, opcje dla organizacji i e-commerce, zawarto i interaktywno strony).

18

Joomla!. Profesjonalne tworzenie stron WWW


Rozdzia 5. Tworzenie prostych rozszerze: moduy" przedstawiono proces tworzenia moduu od samego pocztku, poczwszy od programu Hello World, nakrelono struktur i zastosowanie rozszerze typu modu. Nastpnie opisano dwa projekty o postpujcym stopniu zoonoci, jednym z nich jest modu witeczne yczenia, ktry wykorzystuje oddzieln tabel do przechowywania wasnych ycze witecznych. Drugim jest modu Kontakt z nami, ktry demonstruje dostp do tabeli systemu Joomla! z poziomu rozszerzenia. Rozdzia 6. Zaawansowane rozszerzenia: komponenty" tematem jest tworzenie komponentu ksigi goci opartej na formularzu. Przedstawiono cay proces procesjonalnego pisania kodu, zaczynajc 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 dwch komponentw, ktrych mona uy do dynamicznego pobierania danych. Po nakreleniu zasady dziaania technologii Ajax stworzony zostanie komponent Joomla-Ajax, ktry mona wykorzysta na dowolnej stronie. Nastpnie przedstawiono tandem modu i komponent jako przykad zastosowania tej technologii. Komponent odpowiedzialny jest za komunikacj z systemem, a modu odpowiada za interaktywny widok. Rozdzia 8. Wzorce projektowe a Joomla!" ten rozdzia powicono wykorzystaniu modeli pojciowych, znanych jako wzorce projektowe, do rozwizywania czstych problemw programistycznych. Przedstawiono kilka z nich, a take wyszczeglniono wykorzystanie w elementach platformy Joomla!. Nastpnie, krok po kroku, tworzony jest komponent w oparciu o wzorzec MVC, jako przykad wykorzystania wzorcw projektowych w tworzeniu oprogramowania dla Joomla!. Rozdzia 9. Ingerencja w fundamenty Joomla!: wtyczki" zaprezentowano system wtyczek i wydarze dostpnych w Joomla!, ktre mona czy z procedurami zawartymi we wtyczkach. Wtyczka Hello World! ilustruje podstawowe wykorzystanie zdarzenia doczanie powitania do artykuw. Nastpnie przedstawiono tworzenie wtyczki, ktra automatycznie tworzy skrty na podstawie wprowadzonego tekstu, a take dynamicznie rozwija skrty. Proces ten zostaje uruchomiony podczas wywietlania artykuu na stronie, pozostawiajc zawarto bazy danych nietknit. Na kocu opisano schemat platformy Joomla!. Rozdzia 10. Tworzenie spoecznoci Joomla!" skupiono si na procesie budowania i rozwijania wirtualnych spoecznoci. Poczwszy od planowania i projektowania, przedstawiono metod okrelania grupy docelowej, ktra bdzie tworzy wirtualn spoeczno danej strony. Nastpnie wprowadzono rne rozszerzenia, ktre wzbogacaj Joomla! o funkcje witryn spoecznociowych. Dalej w rozdziale podsumowano najlepsze sposoby tworzenia spoecznoci i zarzdzania ni. Rozdzia 11. Zarzdzanie profesjonaln stron" wyszczeglniono rodki, ktre trzeba podj, aby skutecznie stworzy stron. Oprcz procedur ustawiania rodowiska majcych pomc w usuwaniu bdw, tworzenia zautomatyzowanych testw i przenoszenia strony z serwera testowego do serwera produkcyjnego mona znale tu take informacje o doskonaleniu ustawie MySQL i autoryzacji LDAP.

Wprowadzenie
Rozdzia 12. Komunikacja z treciami zewntrznymi" przeledzono komunikacj z zewntrznymi stronami w celu wymiany informacji, zarzdzanie programami partnerskimi, komunikacj biznesow z wykorzystaniem elektronicznej wymiany danych (EDI) i inne rodzaje pocze zewntrznych. Pokazano, jak stworzy wasne rozszerzenie Joomla!, aby umoliwi poczenie z usugami zewntrznymi, a take zademonstrowano komponent, ktry wykorzystuje technik screen scraping, oraz dodatek, ktry czy si z usug Google Maps, i rozszerzenie, ktre wykorzystuje wyszukiwanie kodw ZIP na stronie USPS.com. Rozdzia 13. Pozycjonowanie (SEO) i pozyskiwanie klientw za porednictwem wyszukiwarek (SEM)" zawarto opis technik i procedur, ktre mona wykorzysta do pozycjonowania strony, a take pozyskiwania klientw za porednictwem wyszukiwarek. Zaprezentowano konfiguracj parametrw SEO dostpnych w Joomla! oraz podkrelono znaczenie pozostaych funkcji, takich jak metadane, breadcrumbs i mapy strony. Przedstawiono oglne sposoby pozycjonowania strony wraz z wpywem, jaki wywiera stosowanie takich technologii jak Flash i JavaScript. Rozdzia 14 Bezpieczestwo Joomla!" omwiono najwaniejsze ustawienia, ktre zagwarantuj wyszy poziom bezpieczestwa strony Joomla!. Opisano take gwne typy atakw (a take wskazwki, jak im zapobiega), ktre mog zosta wykorzystane przeciwko systemowi Joomla!. Dodatkowo znajduj si w nim informacje na temat zabezpieczania poszczeglnych serwerw (Apache lub IIS, PHP, MySQL i Joomla!). Rozdzia 15. Czego Joomla! nie potrafi" oceniono niedostatki, jakie mona dostrzec w porwnaniu z profesjonalnymi systemami CMS. Wyszczeglnione zostay ograniczone moliwoci w zakresie kontroli wersji, konwersji plikw, bezpieczestwa, rwnowaenia obcienia, replikacji, funkcjonalnoci zespoowej i obsugi portalu. Rozdzia 16. Rzut okiem na popularne strony oparte na Joomla!" przedstawiono wiele rnorodnych stron opartych na Joomla!. Do kadej opisanej strony doczono podsumowanie zawierajce szczegy na jej temat (takie jak uyty szablon, domylna rozdzielczo docelowa i inne), a take informacje o rozszerzeniach wykorzystywanych na stronie.

19

Czego bdziesz potrzebowa


Pomijajc system Joomla! (ktry mona pobra za darmo z intemetu), potrzebujesz dodatkowego oprogramowania, aby wykorzysta przykady przedstawione w tej ksice. rodowisko programistyczne Eclipsejest prawdopodobnie najwiksz aplikacj opisan w tej ksice, ktr mona pobra z internetu. Pakiet zajmuje 230 MB, dlatego wymagane jest szybkie poczenie z internetem, aby pobra instalator. Pozostae programy zajmuj rednio od 10 do 20 MB. Ksik t napisano z naciskiem na niezaleno od wybranego systemu operacyjnego. Poniewa wikszo komunikacji z systemem Joomla! przebiega za porednictwem interfejsu administratora bdcego stron WWW, przedstawione instrukcje znajd zastosowanie

20

Joomla!. Profesjonalne tworzenie stron WWW


niezalenie od wykorzystanej przegldarki lub systemu operacyjnego. W sytuacji kiedy poszczeglne opcje konfiguracyjne rniy si dla rnych systemw operacyjnych, przedstawione zostay instrukcje odnoszce si do Linuksa, MacOS-a i Windowsa.

Konwencie
W ksice wykorzystano kilka konwencji, aby pomc Ci zrozumie jak najwicej z przedstawionego tekstu, a take pomc w orientacji:
Ramki, takie jak ta, zawieraj wane informacje bezporednio odnoszce si do otaczajcego tekstu, ktre trzeba zapamita.

Wskazwki, podpowiedzi, sztuczki i inne informacje niebdce czci tekstu zostay zapisane w ten sposb. Odnonie do stylw wykorzystanych w tekcie: Wane nowe pojcia pojawiaj si jako wyrnione przy pierwszym wykorzystaniu w tekcie. Skrty klawiszowe zapisywane s w nastpujcy sposb: Ctrl+A. Nazwy plikw i katalogw oraz adresy internetowe s wyrnione. Kod pojawiajcy si wewntrz tekstu jest oznaczony nastpujco:
persi stence.properti es.

W przypadku podawania cieek dostpu jako separator poszczeglnych nazw katalogw wykorzystywany jest lewy ukonik (\), pomimo i platformy uniksowe uywaj do tego celu prawego ukonika (/). Kod przedstawiony jest na dwa sposoby:
Nowe i wane fragmenty kodu przykadw wyrniane s szarym tem. Kod mniej znaczcy w danym kontekcie lub taki. ktry pojawi si ju w ksice, nie jest zaznaczony.

Kody rdowe
Podczas pracy z przykadami wykorzystanymi w tej ksice moesz samodzielnie wpisa cay kod z klawiatury lub wykorzysta pliki przygotowane przez autora. Wszystkie kody rdowe, ktre zostay uyte w tej ksice, mog zosta pobrane z ftp://ftp.helion.pl/przyklady/ jooptw.zip.

1
Wprowadzenie do Joomla!
Jeli czytasz t ksik, to prawdopodobnie wiesz ju, e Joomla! staje si jedn z najszerzej wykorzystywanych technologii sieci Web. System zarzdzania treci ( C M S Content Management System) Joomla! dostarcza atwego w uyciu, graficznego interfejsu uytkownika, ktry umoliwia tworzenie stron WWW i zarzdzanie nimi. Pocztkujcy uytkownik jest w stanie szybko opanowa podstawy Joomla! i tworzy pikne, profesjonalne strony, takie jak na rysunku 1.1, bez znajomoci HTML-a. W tej ksice zaoono, e znasz podstawy tworzenia stron w oparciu o Joomla! i chcesz rozwin swoje umiejtnoci, aby budowa witryny wiatowej klasy j a k tego dokona, dowiesz si podczas lektury. lysunek 1.1.
Domylna nstalacja loomla! zawiera demonstracj zaawansowanego orojektu strony skadajcego si r pionowego venu, pola wyszukiwania, zaokrglonych ogw, sondy automatycznego jkadu

J, Joomla!
About Jooml.il

Yesterday ail servers in the U S went out on strike in a bid to get more RAM and better C P U s . A spokes person said tlial the need for better RAM w a s due to some fool increasing the front-side bus speed. In future, buses will be told to slow down in residential motherboards. News The Community Szukaj...

Latest News
Home Joomla: Overview Joomla! License More about Joomla' FAO The N e w s W e b Links N e w s Feeds Content Layouts The Joomla! Community Welcome to Joomla! Newsflash 4 Newsflash 5

Popular
Joomla 1 Overview Extensions J o o m l a ! License Guidelines w e l c o m e to Joomla! . What's N e w In 1.5-

Welcome to the Frontpage


W e l c o m e to Joomla!

Poils
J o o m l a : is u s e d fo Q Q Q O O O Community Sites Public Brand Sites eCommerce Blogs Intranets Photo and Media Sites

Joomla' is a f i e e open s o u r c e f r a m e w o r k and content publishing s y s t e m designed toi quickly creating highly interactive multi-language W e b sites, online communities, media portals, blogs and e C o m m e i c e applications. Powered by Joomla! provides an easy-to-use graphical user interface that simplifies the management and publishing of large volumes of content including HTML, documents, and nch media Joomla! is u s e d bv organisations of all sizes for Public Web sites.

J4 Joomla!

Metoda opanowania Joomla! bdzie zalee od Twoich potrzeb oraz roli, jak grasz w procesie tworzenia i prowadzenia stron WWW. W tym rozdziale wyjaniono, w jaki sposb rni uytkownicy Joomla! (webmasterzy, projektanci i deweloperzy stron W W W ) mog wykorzysta t ksik, aby zdoby specyficzne umiejtnoci i pozna technologie, ktre opowiadaj ich potrzebom i pragnieniom.

22

Joomla!. Profesjonalne tworzenie stron WWW


We wszystkich przykadach zamieszczonych w tej ksice staralimy si przedstawi informacje tak jasno i jednoznacznie, jak byo to moliwe. Zdajemy sobie spraw, e chcesz opanowa Joomla!, ale niekoniecznie inne technologie (MySQL, CSS, PHP itd.), na ktrych jest oparty. Wydawnictwo Helion ma w ofercie ksiki, dziki ktrym poznasz pozostae technologie. Celem tej jest pomoc w ukoczeniu Twoich projektw opartych na Joomla!, ktre zamierzasz wprowadzi w ycie. Wanie dlatego staralimy si dokadnie opisa kady krok nawet jeli nie jeste mistrzem np. w tworzeniu kaskadowych arkuszy stylw (CSS), bdziesz w stanie ledzi przykady i osign swj cel.

Zapoznanie z Joomla!
Joomla! jest jedn z kluczowych aplikacji, ktrych wykorzystanie zainicjowao ponowne narodziny WWW w formie nazwanej Web 2.0. W przeciwiestwie do Web 1.0, gdzie wikszo stron internetowych bya zarzdzana rcznie, a moliwoci interakcji minimalne, sercem Web 2.0 jest automatyczna administracja, komunikacja na stronie i midzy witrynami, wirtualne spoecznoci, dynamiczna interakcja. Joomla! obejmuje wszystkie nowe osignicia, a poniewa jest CMS-em, stworzenie i zarzdzanie zaawansowan stron osigalne jest nawet dla maej grupy ludzi (by moe nawet dla jednej osoby). Strona oparta na Joomla! moe rywalizowa z moliwociami i prezencj stron wartych miliony dolarw. Najlepsze z tego wszystkie jest jednak to, e Joomla! jest cakowicie, w 100 procentach darmowy. Joomla! wydano w 2005 roku. Od tego czasu zaobserwowano wykadniczy wzrost zarwno wrd liczby webmasterw, jak i twrcw stron internetowych. Zaoono dosownie dziesitki tysicy stron WWW na caym wiecie. Aby sprosta temu rozrostowi, spoeczno twrcw powikszya si w czasie, kiedy pisaem t ksik do ponad 45 000 zarejestrowanych podmiotw. Setki deweloperw s aktywne kadego dnia na forach powiconych Joomla!, dziel si informacjami, wskazwkami i nowym kodem. Stale powstaj nowe dodatki i szablony, ktre rozszerzaj bogate moliwoci zawarte w domylnej instalacji Joomla!. Biorc pod uwag ca aktywno wok tego systemu, ciko nie ulec zachwytowi nad moliwociami pyncymi z wykorzystania go. Dziki tej ksice bdziesz mia szans doczy 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 popularnoci, ktra zagroziaby poprawnemu dziaaniu zwykej strony. Twoja instalacja Joomla! obsuy due obcienie bez wysiku. Ta ksika pomoe Ci, jeli chcesz wykorzysta Joomla! do: Tworzenia komercyjnych dodatkw, ktre oferuj funkcje poyteczne dla kogo z 2,5-milionowej rzeszy uytkownikw Joomla!. Otwarcia sklepu internetowego, ktry posuy nie tylko do sprzedawania towarw, ale take stworzenia internetowej spoecznoci, majcej sprawi, e powtrne zakupy stan si zasad, a nie przypadkiem.

Rozdzia 1. Wprowadzenie do Joomla!


Stworzenia szablonu lub otwarcia sklepu z szablonami w modelu subskrypcji, do ktrego mog zapisa si uytkownicy, aby wykorzysta swj szablon do zmiany swoich stron w dziea sztuki. Publikacji opinii politycznych na blogu wraz z odwoaniem do dokumentacji dowolnego typu popierajcej Twj punkt widzenia dowiesz si jednoczenie, ktre tematy uwaane s przez Twoich uytkownikw za wane. Doczenia do grona osb zarabiajcych na tworzeniu stron dla innych ludzi w oparciu o CMS. Informacje zawarte w tej ksice dadz Ci przewag nad konkurencj. Zaoenia prywatnej strony WWW z galeri zdj (Twoich dzieci, ze specjalnych okazji itd.) i forum, dziki ktremu Twoi krewni bd mogli kontaktowa si z Tob.

23

W tej ksice zawarta jest wiedza potrzebna do podania kad z tych rnorodnych cieek, a take wieloma innymi. W nowym, ekscytujcym wiecie, gdzie wiele bab zna HTML, ograniczenia w opanowywaniu Joomla! stawiane s gwnie przez Twoje wasne ambicje. Dziki Joomla! nawet mozolny proces tworzenia stron staje si jeli nie przyjemny, to przynajmniej satysfakcjonujcy. Kolejn zalet Joomla! jest atwo rozbudowywania CMS-a w podobny sposb, w jaki aplikacje typu CMS wprowadzaj porzdek w chaosie zarzdzania stron WWW.

Wpyw elastycznoci na popularno Joomla!


Zanim doszo do rozpowszechnienia aplikacji typu CMS, sie uginaa si pod ciarem ogromnej iloci treci, ktr trzeba byo zarzdza. Tworzenie witryny w oparciu o pojedyncze strony byo bardzo ograniczajce i sprawiao, e zarzdzanie stron nawet redniej wielkoci byo niesamowicie kosztowne, jeli chodzi o czas i zasoby. Strony dynamiczne, tworzone na zamwienie w oparciu o PHP lub Active Server Pages (ASP), byy nie tylko drogie w implementacji, ale take stwarzay spory potencja zagroe i bdw, przez co rozwizania oparte na nich byy niepewne. Systemy zarzdzania treci takie jak Joomla! znaczco obniyy koszty zarzdzania maymi i duymi stronami WWW. Poprzez organizacj wszystkich treci w bazie danych i daleko idce oddzielenie ich od warstwy prezentacji i kodu programu administracja z uyciem CMS-a jest elastyczniejsza ni w przypadku innych metod tworzenia stron internetowych. Twrcy Joomla! pooyli szczeglny nacisk na stworzenie technologii, ktra zamiast by uniwersaln i spenia wszystkie potrzeby jest uniwersaln, dostosowywaln do wasnych potrzeb. To wystarczajco zoony system, eby mona byo go modyfikowa, rozszerza i dopasowywa, aby sprosta wikszoci wymaga stawianych przed stron WWW. Wraz z wydaniem wersji 1.5 Joomla! wysun si na prowadzenie pord dostpnych CMS. Zagmatwan struktur aplikacji znan z poprzednich wersji zastpiono now platform, dziki ktrej tworzenie dodatkw od szablonw, a po wtyczki stao si atwe.

24

Joomla!. Profesjonalne tworzenie stron WWW

Mimo e Joomla! mona wykorzysta prawie do kadego projektu strony WWW, nie znaczy to, e musi on by uyty w ten sposb. Jest takie stare powiedzenie, e jeli jeste motkiem, to wszystko wyglda jak paznokie. Istniej zastosowania, dla ktrych skorzystanie z Joomla! nie byoby najlepszym wyborem. Z tego powodu ksika zawiera rozdzia 15. Czego Joomla! nie potrafi". Wane jest, eby by wiadom ogranicze kadego programu, zanim zaczniesz duy projekt. Wiele ogranicze Joomla! (na przykad precyzyjne opcje zabezpiecze) mona pokona przez poczenie wasnego kodu i dostpnych rozszerze. Do Ciebie naley decyzja, czy pokonanie tych barier jest mdrym posuniciem lub czy nie lepszym pomysem byoby wybranie innej aplikacji, ktra zawiera ju funkcje pasujce do wymaga Twojego projektu.

W wersji 1.5 wprowadzono duo lepszy model oddzielania warstwy kodu od warstwy prezentacji. Nowa struktura uatwia projektantom stron i grafikom tworzenie szablonw, poniewa nie s ju przesadnie obcieni programowaniem. Deweloperzy z kolei mog ksztatowa logik systemu niezalenie od wielu aspektw warstwy prezentacji.

Dla kogo jest ta ksika


Jeli miae ju styczno z Joomla!, prawdopodobnie cakiem dobrze rozumiesz podstawy jego dziaania. Wiesz ju, jak dodawa artykuy, zarejestrowa uytkownikw, doda sekcje i kategorie, zainstalowa nowy szablon lub rozszerzenie (wtyczk, komponent lub modu). Jest to jednak zaledwie wierzchoek gry lodowej, jeli chodzi o potg Joomla!. Poszczeglne obszary Twoich zainteresowa bd rni si w zalenoci od roli, jak grasz w procesie tworzenia stron. Webmasterzy mog skupi si na implementowaniu i instalowaniu strony opartej na Joomla! oraz administrowaniu ni. Projektanci stron WWW mog ksztatowa projekty graficzne i warstw prezencji, tworzc wizualnie olniewajcy interfejs. Rola deweloperw wskazuje na poznanie elastycznoci programowania rozszerze, co pozwala opanowa do perfekcji sztuk ich tworzenia.

Webmasterzy
Na webmasterach spoczywa prawdopodobnie najwiksza odpowiedzialno w zakresie doskonalenia strony WWW opartej na Joomla!. Ostateczna odpowiedzialno za poprawne dziaanie strony spada wanie na webmastera. Z tego powodu kluczowe jest zrozumienie technologii lecej u jego podstaw. Niezalenie od tego, czy prowadzisz hobbystyczn stron, czy jeste administratorem zarzdzajcym wieloserwerow instalacj Joomla!, wikszo informacji zawartych w tej ksice bdzie dla Ciebie uyteczna. Joomla! jest zoonym systemem. Mimo i instalacja systemu nie stanowi bariery nawet dla pocztkujcych, to zaawansowane funkcje pozostaj dla nich po prostu niedostpne. Bdziesz mie szans zoptymalizowania instalacji Joomla!, aby osign maksymaln wydajno, ale take aby zabezpieczy stron przed hakerami.

Rozdzia 1. Wprowadzenie do Joomla!

25

By moe projektanci lub deweloperzy Joomla! pracuj dla Ciebie, w takiej sytuacji ksika ta dostarczy Ci doskonaych wskazwek, co mona osign w ramach platformy. Jeli grasz kad z wymienionych rl, praktycznie wszystkie informacje bd dla Ciebie wane. Z pewnocijednak do Twoich zada administracyjnych bdzie nalee porednia lub bezporednia administracja stron. Jeli jeste webmasterem i administratorem strony WWW, skorzystaj z narzdzi i technik opisanych w tej ksice, ktre pozwol Ci na: Zbudowanie wirtualnej spoecznoci z wykorzystaniem technologii Joomla!. Bdziesz w stanie skorzysta z internetowego trendu utosamianego przez takie witryny jak MySpace i YouTube. Zarzdzanie serwerem WWW, stron Joomla! i baz danych SQL, a take uczynienie z tej konstrukcji sprawnie dziaajcej maszyny. Stworzenie kopii zapasowej danych, plikw strony i opcji konfiguracyjnych. Skorzystanie z technik SEO, ktre poprawi pozycjonowanie Twojej strony i zoptymalizuj Joomla! pod ktem robotw internetowych. Dbanie o bezpieczestwo strony dziki poprawnym zabezpieczeniom i obronie przed atakami hakerw. Poznanie technik wykorzystywanych przez profesjonalne witryny oparte na Joomla! do prowadzenia strony i utrzymywania jej popularnoci. Dostrojenie systemu Joomla! w celu uzyskania maksymalnej wydajnoci. Omwione zostan tematy od optymalnego planowania, po odpowiednie ustawienie poszczeglnych serwerw. Rwnowaenie i testowanie obcienia strony Joomla!, zarzdzanie wieloma stronami jednoczenie. Okrelenie, czy Joomla! spenia Twoje potrzeby lub czy powiniene zainwestowa w CMS wyszej klasy.

Wiele aspektw administracyjnych jest poruszanych w tej ksice w ramach opisw danej technologii (np. autoryzacji LDAP). Upewnij si, e przynajmniej pobienie zapoznae si z materiaami, ktre nie s bezporednio zwizane z Twoimi zadaniami lub umiejtnociami.

'rojektanci stron WWW


Rola projektantw jest bardziej specyficzna ni webmasterw. Czsto to webmaster nakrela kierunek rozwoju i funkcjonalno strony. Projektant jest w takiej sytuacji wybrany przez osob, firm lub organizacj, aby stworzy wygld strony warstw prezentacji, ktra spenia okrelone potrzeby. W przypadku Joomla! projektanci dysponuj wietn platform do publikacji i zarabiania na swoich pracach rynek szablonw Joomla!. Liczba dostawcw komercyjnych szablonw jest ogromna, a sam obszar dziaalnoci zdaje si cakiem dochodowy.

26

Joomla!. Profesjonalne tworzenie stron WWW


Wikszo komercyjnych stron z szablonami wykorzystuje model subskrypcji, w ktrym klienci pac miesiczny lub roczny abonament, aby uzyska nieograniczony dostp do szablonw dostpnych na stronie. Taki model jest bardzo korzystny dla projektantw, poniewa strona musi stale uaktualnia ofert nowymi szablonami, aby utrzyma dotychczasowych klientw. W ten sposb regularn prac znajduje wielu projektantw. Jeli jeste jednym z nich, znajdziesz w tej ksice wiele uytecznych informacji, ktre pozwol Ci by na bieco w Twojej profesji. Nowi projektanci zdobd bogate informacje na temat planowania i konstrukcji szablonw. Ze wzgldu na to, e skuteczny szablon to poczenie kodu PHP, grafiki i CSS, zaprojektowanie dobrego szablonu wymaga sporej iloci planowania i sprawnego kierowania. Czytajc t ksik, napotkasz opisy wszystkich etapw tego procesu. Nawet jeli dotychczas nie programowae, wskazwki doczone do tej ksiki pozwol Ci skonstruowa szablon w stylu pug and play1. Dopki rozumiesz ogln zasad dziaania przedstawionego kodu, bdziesz w stanie wklei go w odpowiednie miejsce. Zaawansowani projektanci bd mieli okazj poprawienia swoich umiejtnoci dziki radom opartym na dowiadczeniu, a take dodatkowej funkcjonalnoci, takiej jak obsuga technologii Ajax na stronach Joomla!. Dalsze wskazwki w rozdziaach powiconych technikom SEO i internacjonalizacji zmieni Ci w specjalist w Twojej dziedzinie. Nabdziesz nowych umiejtnoci i pozyskasz informacje w zakresie projektowania stron. S to: Modyfikowanie kodu i arkuszy stylw istniejcych szablonw. Proces tworzenia nowego szablonu od podstaw, niezbdne minimum dla dziaajcego szablonu, a take techniki stosowane w zaawansowanych szablonach do omijania ogranicze. Procedura autoryzacji nowych moduw, ktre mog zosta uyte w dowolnym szablonie. Wykorzystanie nowej technologii Ajax do komunikacji klient-serwer, aby wzbogaci stron Joomla! o aktywny, nowoczesny interfejs. Metody planowania, ktre zagwarantuj obsug treci w wielu jzykach i internacjonalizacj. Dopasowywanie dostpnych rozszerze (takich jak sondy, reklamy i galerie zdj) do oglnego projektu strony w celu osignicia jak najlepszego jej wygldu. Szczegy dostosowywania CSS majce zapewni stronie spjny wygld. Wskazwki na temat zgodnoci z Wytycznymi dotyczcymi Dostpnoci Treci Internetowych ( W C A G Web Content Accessibility Guidelines), uatwiajce korzystanie ze strony ludziom niepenosprawnym.

Z ang. podcz i uywaj oznacza zdolno wstawienia nowego elementu w istniejcy system bez koniecznej modyfikacji pozostaych elementw p r z y p . tum.

Rozdzia 1. Wprowadzenie do Joomla!

27

Projektanci stron WWW s zatrudniani zazwyczaj na wczesnym etapie tworzenia strony, a im wicej wiedz o Joomla!, tym lepiej mona w sumie wykorzysta bogactwo tej technologii. Szczeglnie w dziedzinie tworzenia szablonw wykorzystanie moliwoci drzemicych w Joomla! moe doprowadzi do stworzenia strony, ktra nie tylko speni potrzeby, ale take bdzie atwa w zarzdzaniu i przyszym uaktualnianiu. Projektanci s w stanie w najwikszym stopniu wykorzysta rozszerzenia pisane w celu rozbudowy systemu.

eweloperzy stron WWW


Ludzie zajmujcy si programowaniem stron z pewnoci doceni, e platforma Joomla! jest najelastyczniejsza, a take najprostsza pod wzgldem rozwijania i pisania kodu ze wszystkich dostpnych CMS-w. Od wprowadzenia wersji 1.5 caa struktura Joomla! zostaa napisana od nowa po to, by stworzy co wicej ni tylko CMS. CMS Joomla! jest waciwie aplikacj opart na szerszej platformie Joomla!. Oznacza to, e moesz, korzystajc z tej platformy, zaprogramowa projekt dowolnej wielkoci wczajc w to stworzenie cakiem nowego CMS-a (jeli byyby powody). Nie musisz zaczyna od pocztku. Badanie i zmienianie istniejcych rozszerze Joomla! (dodatkw, komponentw i moduw) jest prawdopodobnie najlepszym sposobem wzbogacenia swoich umiejtnoci. Kiedy zrozumiesz, w jaki sposb rozszerzenia funkcjonuj w systemie, wiat Joomla! stanie przed Tob otworem. Zagbiajc si w lektur tej ksiki, dowiesz si, jak stworzy bardziej zaawansowane rozszerzenia, a nawet jak napisa sprytn implementacj ajaksowego interfejsu po stronie klienta. Dowiesz si take, w jaki sposb moesz skorzysta z wzorcw projektowych Joomla!, aby udoskonali wasny kod. Po opanowaniu interfejsu rozszerze bdziesz mg przej do modyfikacji samego systemu Joomla! albo doczy do grupy deweloperw. Dostpnych jest bardzo wiele sposobw wsppracy z ponad 45 000 zarejestrowanych deweloperw Joomla!. Kiedy dotrzesz do ostatniej strony tej ksiki, znajdziesz si pod wzgldem umiejtnoci w grnej czci tej piramidy. Wikszy stopie wykorzystania Joomla! idzie w parze z bogatszymi perspektywami zatrudnienia, poniewa internetowy rynek peen jest ofert zwizanych z Joomla!. Niezaprzeczalnie jest to bodziec ekonomiczny wzmacniajcy ch poprawy wasnych umiejtnoci. Jeli chodzi o domen programowania stron WWW, Professional Joomla! nauczy Ci: Tworzy wasne dodatki w oparciu o przykady, od najprostszej wtyczki Hello World!, a do zaawansowanego tworzenia rozwiza e-commerce. Wykorzystywa profesjonalne techniki tworzenia kodu i wzorce projektowe w Twoich projektach Joomla!. Uywa skryptw i technologii Ajax do ywej komunikacji ze stron klienta, bez potrzeby ponownego generowania strony. Swobodnie posugiwa si kodem platformy Joomla!, aby umoliwi modyfikacje systemu. Wykorzystywa i modyfikowa dostpne rozszerzenia w celu dodania funkcjonalnoci, ktrej brak w domylnej instalacji Joomla!.

28

Joomla!. Profesjonalne tworzenie stron WWW


Adaptowa rodowisko programistyczne PHP do potrzeb programowania Joomla! z wykorzystaniem moliwoci tworzenia dokumentacji i poprawnego pisania kodu. Implementowa system kontroli z wykorzystaniem oprogramowania Subversion (SVN) w celu umoliwienia zespoowego tworzenia szablonu, dodatku, komponentu lub moduu dla Joomla!. Zarzdza profesjonalnym wdroeniem od serwera testowego, a do serwera produkcyjnego.

Deweloperzy stron WWW znajd w Joomla! bogate rdo osobistej i zawodowej satysfakcji. Wielu z nich miao ju kontakt z Joomla! i zainwestowao sporo wysiku w opanowanie podstaw. Ta ksika dostarczy Ci jasnych wskazwek dotyczcych umiejtnoci, ktrych potrzebujesz przy minimalnej iloci niejasnoci lub dodatkowej pracy.

Joomla! w wersji 1.0 a uytkownicy Mambo


Czytelnicy, ktrzy wczeniej nie mieli stycznoci ze wiatem CMS, powinni wiedzie, e projekt Joomla! zosta zapocztkowany w 2005 roku, kiedy grupa deweloperw opucia spoeczno Mambo i zabraa ze sob kod rdowy bdcy u podstaw tego CMS-a. Rnica midzy pierwszym wydaniem Joomla! a Mambo w wersji 4.5.2.3 bya minimalna. Nawet rozszerzenia obu systemw byy kompatybilne. Prawdziwa zmiana nadesza wraz z Joomla! 1.5. Caa architektura zostaa przebudowana w oparciu o now, obiektow platform PHP. Zmiany byy na tyle znaczce, e adne z rozszerze, a nawet aden z szablonw przeznaczonych dla Joomla! nie mogy pracowa w nowej wersji (pomijajc tryb spucizny). Unowoczeniona architektura stworzya moliwoci doskonalenia i rozbudowy obecnych szablonw, wtyczek, komponentw lub moduw. Ta sytuacja jest w stanie przyprawi take o bl gowy, poniewa rzeczy, ktre dotychczas dziaay bezbdnie, nie zadziaaj w nowym systemie. Jako webmaster, projektant lub twrca stron internetowych musisz rozumie konsekwencje pynce ze stworzenia nowego programu na bazie systemu Mambo. Moesz by zmuszony do uruchomienia na serwerze Joomla! trybu spucizny, aby sprosta wymaganiom swoich klientw, jeli potrzebne elementy nie zostay jeszcze uaktualnione do pracy w nowym rodowisku. Jeli zdecydujesz si na ten krok, utracisz rozszerzon funkcjonalno i zwikszon wydajno, ktre oferuje nowy system (a straty s znaczce). Staraem si w miar moliwoci doczy wskazwki, ktre pozwol Ci pynnie przej ze starego systemu do nowego. Jedn z najwspanialszych rzeczy w rodowisku open source jest fakt, e jest open source masz dostp do kodu rdowego. Jeli napotkasz komponent, ktrego potrzebujesz, ale jest on niekompatybilny z nowym systemem Joomla!, a dysponujesz wystarczajc motywacj i czasem, to nie wszystko stracone. Teoretycznie moesz zaadaptowa taki komponent samodzielnie. W tej ksice w odpowiednich rozdziaach dostarczam wskazwek i wytycznych, ktre pomog uytkownikom przej z Joomla! 1.0 lub Mambo do najnowszej wersji.

Rozdzia 1. Wprowadzenie do Joomla!

29

Uruchomienie strony o wysokim nateniu ruchu w oparciu o poprzednie wersje Joomla! byo problematyczne, poniewa Joomla! mia tendencj do znacznego zwalniania przy duym obcieniu. W oryginalnej wersji aplikacja bya przetwarzana jako jeden monolityczny blok kodu PHP przy kadym wywoaniu strony niezalenie od tego, czy dana strona wymagaa wszystkich funkcji, czy nie. W wersji 1.5 grupa deweloperw Joomla! zaja si tym problemem i praktycznie go rozwizaa. Kod zosta poddany refaktoryzacji, dziki czemu adowany i uruchamiany jest tylko ten fragment i te moduy, ktre s niezbdne do wygenerowania danej strony. Nowa metoda spowodowaa ogromny wzrost wydajno na duych stronach.

Zsumowanie
System Joomla! jest platform, ktr opanowa mog ludzie majcy rne cele, np. webmasterzy, projektanci i deweloperzy stron WWW. Niezalenie od powodw, ktrymi kierujesz si, gdy chcesz skorzysta z Joomla!, w tym rozdziale moge znale informacje, ktre pomog Ci: Zrozumie system CMS, jakim jest Joomla!, a take informowa innych o zaletach korzystania z niego. wiat Web 2.0 opiera si na automatycznym zarzdzaniu treci, dynamicznej interakcji i wirtualnych spoecznociach. Joomla! jako CMS umoliwia skorzystanie z nowych technologii kademu od pojedynczych osb, a po due organizacje po zaskakujco niskiej cenie, za darmo. Poprawi swoje umiejtnoci webmasterskie w tworzeniu strony Joomla! i administrowaniu ni. Bez wzgldu na to, czy jeste samodzielnym webmasterem ! z hobbystycznym nastawieniem, czy osob zarzdzajc wieloserwerow instalacj Joomla!, dowiesz si z tej ksiki, jak budowa internetow spoeczno, zarzdza serwerem, zabezpieczy treci i uytkownikw oraz zoptymalizowa stron pod ktem pozycjonowania. Udoskonali wygld i zachowanie strony Joomla!, jeli 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 take zrozumiesz, jak zapewni zgodno swojej strony z wymaganiami internacjonalizacji i dostpnoci dla osb niepenosprawnych. Tworzy dodatki, komponenty i moduy, jeli jeste deweloperem stron Joomla!. Poznasz struktur platformy Joomla! w stopniu, ktry pozwoli Ci wprowadza zmiany w samym systemie. Poniewa prawie na kady aspekt dziaania systemu wpywa kod w plikach CSS lub PHP, moliwe zmiany s prawie nieograniczone. Uaktualni kod rdowy, szablony i inne technologie dziaajce z wczeniejszymi wersjami Joomla! lub nowymi instalacjami Mambo.

W rozdziale 2. przedstawiono szczegy instalacji i konfiguracji strony Joomla!. Uruchomienie podstawowej strony jest banalne, jednak dobranie ustawie, ktre zapewni optymaln wydajno, jest jednoczenie sztuk i nauk. Dziki dokadnemu zapoznaniu si z wyborem ustawie dla rnych serwerw moesz sprawi, e Twoja instalacja Joomla! bdzie dziaa jak dobrze naoliwiona maszyna.

30

Joomla!. Profesjonalne tworzenie stron WWW

2
Szczegy instalacji i konfiguracji
Joomla! do poprawnego dziaania wymaga poczenia czterech technologii serwerowych. Jeli Apache nie jest w stanie uruchomi PHP lub PHP nie moe si poczy z MySQL albo Joomla! nie moe zapisywa danych w bazie MySQL, system zawiedzie. W tym rozdziale opisano konfiguracj kadego elementu systemu, bez ktrej nieumoliwe jest poprawne funkcjonowanie caoci. Dziaanie kadego serwera kontrolowane jest list dyrektyw i opcji konfiguracyjnych, a ich optymalny dobr zapewni waciwe funkcjonowanie systemu. W tym rozdziale opisano take rne techniki poprawy poszczeglnych aspektw systemu, tak aby serwer sprawniej odpowiada na dania, dostarczajc najlepszych wrae z uytkowania.

ztery serwery systemu Joomla!


Konstelacja serwerw rodowiska Joomla! (zobacz rysunek 2.1) to cztery dynamicznie wsppracujce elementy: serwer WWW, silnik wykonywania skryptw PHP, serwer baz danych MySQL i serwer Joomla!. Termin serwer nie jest traktowany dosownie, poniewa ani PHP, ani Joomla! nie s uruchamiane jako niezalene serwery. Taka szersza definicja pozwoli Ci lepiej zrozumie dziaanie i proces konfiguracji, poniewa zarwno PHP, jak i Joomla! funkcjonuj w roli serwera stron i wymagaj oddzielnej konfiguracji. Podstaw systemu jest serwer WWW, ktiy dostarcza funkcjonalnoci zwizanej z obsug HTTP. Joomla! moe dziaa poprawnie zarwno w oparciu o Apache Web Server, jak i Microsoft Internet Information Server (ISS). ISS w przeciwiestwie do Apache, ktry dziaa na dziesitkach systemw operacyjnych (Windows, MacOS i wielu wariantach Uniksa), jest ograniczony wycznie do platformy Windows. Oprcz obsugi protokou HTTP zadaniem serwera WWW jest take uruchamianie silnika PHP i serwera Joomla!. Wewntrz systemu Joomla! silnik PHP uruchamia aplikacj Joomla!, ktra 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 tworzenie stron WWW

Rysunek 2.1.
Cztery serwery, z ktrych skada si system Joomla!

Opcja 1

Opcja 2

Minimalne wymagania dla kadego z serwerw skadajcych si na Joomla!: PHP w wersji co najmniej 4.3.x z aktywowanymi moduami MySQL, XML i Zlib; MySQL w wersji co najmniej 3.23.x; Apache w wersji co najmniej 1.13.19.

Twoje decyzje dotyczce instalacji i konfiguracji bd miay daleko idcy wpyw na sukces Twojej strony opartej na Joomla!.

Decyzje podczas instalacji


Prawdopodobnie masz ju jakie dowiadczenia z instalacj Joomla!, mimo to poniej opisano pokrtce procedur instalacji, dziki czemu moesz rozway inne opcje. W momencie planowania przyszej konfiguracji musisz zdecydowa si na instalacj lokaln lub zdaln, wybra platform, na ktrej zostanie uruchomiony Joomla!, okreli metod przeprowadzenia instalacji, a w kocu wybra serwer WWW. Mimo i wikszo z tych wyborw zaley od wymaga docelowego rodowiska, a nie od osobistych preferencji, powiniene pozna wady i zalety kadego rozwizania, aby by wiadomym jego ogranicze. Zwr uwag na rnice pomidzy poszczeglnymi rodowiskami, poniewa czsto inn platform wykorzystuje si na etapie testw, a inn na serwerze

Rozdzia 2. Szczegy instalacji i konfiguracji

33

produkcyjnym. Czstym wyborem dla rodowiska testowego jest Windows lub MacOS, podczas gdy ostatecznie strona dziaa pod kontrol serwera WWW uruchomionego w Linuksie. Dziki dostrzeeniu rnic na wczesnym etapie prac atwiej bdzie Ci pniej przenie wyniki do innego rodowiska.

.okalnalub zdalna instalacja


Pierwsz decyzj podczas instalacji jest okrelenie, czy Joomla! zostanie zainstalowany lokalnie, czy zdalnie. By moe masz konto u dostawcy usug internetowych, np. GoDaddy.com lub SiteGround.com, na ktrego serwerze moesz zainstalowa stron. W takim przypadku niezbdne oprogramowanie, wczajc w to PHP i MySQL, jest ju zainstalowane i gotowe do uycia. Aktywacja Joomla! sprowadza si wtedy do skopiowania plikw instalacyjnych na serwer i przeprowadzenia instalacji. Jeli masz zamiar zainstalowa Joomla! lokalnie, masz duo wicej pracy do wykonania. Instalacja lokalna ma kilka zalet: Dowolno konfiguracji Moesz dopasowa dziaanie kadego z serww, aby najlepiej spenia Twoje potrzeby. Dostawcy usug internetowych rzadko pozwalaj na zmian kluczowych opcji konfiguracyjnych, chc unikn potencjalnego zagroenia dla systemu i pozostaych uytkownikw. Dogbna znajomo systemu Zdecydowanie lepiej poznasz system, ktry skonfigurowae i ktrym samodzielnie zarzdzasz. Moesz wykorzysta t wiedz, nie tylko aby uzyska lepsz wydajno, ale take lepiej zrozumie moliwoci i ograniczenia systemu, ktre przekadaj si na tworzenie moduw, komponentw i dodatkw. Potencjalna wydajno serwera Uruchomienie wasnego systemu pozwala przeznaczy maksimum zasobw dla strony Joomla!. W przypadku zdalnej instalacji prawdopodobnie bdziesz musia dzieli si poczeniem z baz danych i internetem ze spor liczb innych uytkownikw. Moe to doprowadzi do spowolnienia serwerw i pogorszenia wydajnoci w czasie szczytowego obcienia. Elastyczno tworzenia kopii zapasowych W przypadku instalacji lokalnej moesz skorzysta z bogatych opcji tworzenia kopii zapasowych, od ich rcznego kopiowania plikw, a po uycie dodatkowego dysku w macierzy RAID. Tworzenie kopii zapasowych zdalnej instalacji moe by nuce i wymaga samodzielnego skopiowania plikw (przez FTP) oraz bazy danych (przez jaki interfejs administracyjny).

Poniej przedstawiono kilka wad instalacji lokalnej: Wicej pracy Jeli zdecydujesz si na instalacj lokaln, jeste take odpowiedzialny za konfiguracj serwera i zarzdzanie nim. Taka konfiguracja wymaga skutecznego podziau zasobw maszyny midzy elementami systemu. Moliwa wydajno systemu Chocia w wikszoci przypadkw wykorzystanie wasnego, dedykowanego serwera zapewni Ci prawdopodobnie lepsz wydajno ni instalacja zdalna, nie jest to regu. Dostawcy usug internetowych wkadaj wiele wysiku w zapewnienie optymalnej wydajnoci serwerw. Czsto wykorzystuj take droszy sprzt, ktry radzi sobie z wikszym obcieniem.

34

Joomla!. Profesjonalne tworzenie stron WWW


Zabezpieczenie przed usterkami Wikszo dostawcw stosuje przynajmniej jeden typ redundancji w systemie, aby zagwarantowa nieprzerwane dziaanie stron klientw. Mog to by zapasowe serwery DNS, automatyczne macierze RAID, architektura wielomaszynowa, zapasowe baterie i wiele innych technologii, ktre gwarantuj poprawne dziaanie strony w przypadku uszkodzenia jednego z elementw. Zastosowanie takich zabezpiecze w przypadku wasnego, lokalnego serwera jest trudne i kosztowne.

Jeli chciaby wykorzysta instalacj lokaln, a nie masz wystarczajco szybkiego cza, sprawd ofert kolokacji, jak dysponuje Twj lokalny dostawca usug internetowych (ISP). Wielu dostawcw ma bardzo korzystne oferty, ktre pozwol Ci za odpowiedni opat umieci u nich swj serwer i podczy go do internetu.

Wybr platformy: Windows, Linux lub MacOS


Wybr platformy moe by trudny, poniewa w gr wchodzi zbyt wiele zmiennych, aby przedstawi ich kompletn list. Gwne z nich dotycz komfortu obsugi danego systemu operacyjnego oraz kosztw licencji (Linux jest darmowy, natomiast Windows i MacOS wymagaj opat licencyjnych). Chocia wybr platformy moe wpyn na wydajno, nie powinien mie znaczcego wpywu na proces instalacji Joomla!. Wikszo administracji przebiega za porednictwem interfejsu WWW, dlatego wybrana platforma nie wpywa na interakcje z systemem. Joomla! wykorzystuje technologie PHP i MySQL, ktre dziaaj prawie identycznie na wszystkich platformach. Z tego powodu zarzdzanie systemem bdzie praktycznie niezalene od wybranej platformy.

Instalacja poszczeglnych serwerw czy instalacja czona


Moesz zdecydowa si na instalacj poszczeglnych serwerw lub wykorzysta czony instalator, taki jak XAMPP. Opisujc proces instalacji, administratorzy czsto korzystaj z takich akronimw, jak WAMP, LAMP lub MAMP. Skrty te okrelaj docelow platform, sygnalizowan przez pierwsz liter (W= Windows, L = Linux, M - MacOS), pozostae litery reprezentuj serwery, ktre zostan zainstalowane (Apache, MySQL i PHP). Najpopularniejszy czony instalator to XAMPP, w przypadku ktrego X oznacza zmienn, poniewa dostpne s wersje dla trzech rnych systemw operacyjnych. Dwa PP w nazwie XAMPP" odpowiadaj oprogramowaniom PHP i Perl, zawartym w pakiecie. Chocia Joomla! nie wykorzystuje Perl, nie bdzie mia on znaczcego wpywu na wydajno serwera. Instalator XAMPP przezwycia jedn z najwikszych bolczek oprogramowania open source: kompatybilno. Deweloperzy open source notorycznie upubliczniaj oprogramowanie, ktre samodzielnie dziaa stabilnie, a problem pojawia si przy poczeniu z wczeniejszymi wersjami pozostaych programw (np. nowa wersja Apache nie zadziaa ze stabiln wersj PHP). XAMPP zapobiega tym problemom dziki dostarczeniu wersji w peni ze sob zgodnych. Oznacza to, e moesz pobra z internetu jeden instalator, uruchomi go i uzyska kompletny, dziaajcy system w bardzo krtkim czasie.

Rozdzia 2. Szczegy instalacji i konfiguracji

35

Chocia instalator XAMPP umoliwia atw i szybk instalacj w rodowisku testowym, ma kilka powanych wad. Najwaniejsz jest bezpieczestwo. Domylne instalacje serwerw zawartych w paczce XAMPP s podatne na ataki rnych typw. Ponadto instalowanych jest wiele niepotrzebnych aplikacji (takich jak Perl), rozszerze i moduw, ktre mog spowolni Twj system. Ilo miejsca zajmowana na dysku twardym moe by nawet trzy razy wiksza ni w sytuacji, kiedy instalowaby kady z serwerw oddzielnie. Jeli jeste pocztkujcym uytkownikiem, instalator XAMPP jest fantastycznym narzdziem, ktre pozwoli Ci zacz prac w bardzo krtkim czasie. Jeeli jeste odrobin bardziej zaawansowany, to pomijajc pojedyncze problemy, ktre napotkasz, indywidualna instalacja moe by dobrym wyborem. Pamitaj o tym, e decyzja odnonie do platformy wpywa take na sposb, w jaki bdziesz przeprowadza instalacj. Przykadowo w MacOS jest ju zainstalowany serwer Apache trzeba go tylko aktywowa. Podobnie w przypadku ISS, ktry jest prawdopodobnie zainstalowany na platformie Windows. W najgorszym wypadku domylnie zainstalowany serwer moe powodowa konflikt z tym, ktry chcesz zainstalowa. W innej sytuacji bdzie tylko zbdnym oprogramowaniem.

Wybr serwera WWW: Apache czy Microsoft Internet Information Server (IIS)
Jeli uruchamiasz Joomla! na platformie Windows, musisz dokona wyboru serwera WWW: Apache albo Microsoft Internet Information Server (IIS). Jest to trudne z kilku powodw. Gwn przyczyn dla ktrej warto wykorzysta Apache w systemie Windows, jest solidnie potwierdzona kompatybilno Joomla! i Apache. Jest jednak kilka elementw, z powodu ktrych mgby zdecydowa si na IIS: Natywna obsuga SSL Szyfrowanie SSL jest dostpne natywnie w IIS na platformie Windows. W czasie pisania tej ksiki uytkownik Apache byby zmuszony do rcznej kompilacji serwera w celu zyskania obsugi Secure Sockets Layer (SSL). Skompilowana wersja Apache dla Windowsa domylnie nie zawiera tej opcji. Dostrojona wydajno Microsoft powici duo czasu i pienidzy na zoptymalizowanie IIS pod ktem maksymalnej wydajnoci w Windowsie. Apache dziaa w tym rodowisku dobrze, jednak optymalizowany jest gwnie pod wzgldem platformy linuksowej i innych wariantw Uniksa. Zintegrowana ochrona katalogw IIS zosta napisany z myl o natywnej obsudze bezpieczestwa katalogw w Windowsie, dziaa nawet w poczeniu z technologi Active Directory. Wykorzystanie Apache wymaga czciowej integracji zasad zabezpiecze z systemem Apache. Wbudowany serwer FTP Domylna instalacja IIS zawiera serwer File Transfer Protocol (FTP), ktry moe by uyteczny w zarzdzaniu systemem Joomla!, a take moe docza dodatkow funkcjonalno do wielu rnych rozszerze (np. opcja pobierania lub wysyania w komponencie galerii zdj). Wikszo komputerw ma ju IIS zainstalowany Na platformie Windows wikszo komponentw niezbdna do uruchomienia IIS jest ju zintegrowana z systemem operacyjnym. Oznacza to, e narzut IIS jest bardzo may, poniewa liczba dodatkowych elementw, ktre zostan zainstalowane w systemie, jest niewielka.

36

Joomla!. Profesjonalne tworzenie stron WWW


Jeli chcesz zainstalowa Joomla! w systemie Windows, sprawd najpierw, czy IIS dziaa poprawnie. Moesz to zrobi, otwierajc Panel Sterowania/Dodaj lub usu programy. Kliknij przycisk Dodaj/Usu skadniki systemu Windows, znajd na licie pozycj Internetowe Usugi Informacyjne i upewnij si, czy jest zaznaczona. Jeli nie, zaznacz j i przeprowad instalacj. Aby sprawdzi, czy IIS dziaa poprawnie, uruchom w przegldarce poniszy adres, powiniene zobaczy domyl stron:
http://local host

Zanim skorzystasz z Joomla!, musisz zainstalowa PHP i MySQL, co doda usug uruchamiania skryptw i baz danych. PHP moesz pobra z poniszej strony:
http://www.php.net

Instalacja PHP przebiega podobnie jak dla kadego innego programu. Na stronie Web Server Setup wybierz wersj IIS, jak pokazano na rysunku 2.2. Instalator automatycznie skonfiguruje IIS do wsppracy z PHP. Rysunek 2.2.
Wybierz wersj IIS, na ktrej bdzie dziaa PHP
5

PHP 5.2.6 Setup


W e b Server S e t u p Select the Web Server you wish to setup, O Apache 1.3.x Module O Apache 2,0.x Module O Apache 2.2.x Module O Apache CGI I I S ISAPI module O IIS FastCGI Ons CGI ONSAPI Qxitami O Sambar Server O NetServe Web Server Q Other CGI O not setup a web server

Mimo i po zakoczeniu instalacji PHP nie zostaje wywietlony komunikat o potrzebie ponownego uruchomienia komputera, naley to zrobi. Dziki temu zmienna systemowa Path bdzie wskazywa na nowy katalog PHP. Jeli masz trudnoci z uruchomieniem PHP, sprawd zawarto zmiennej Path, otwierajc Panel Sterowania/System i klikajc przycisk Zmienne rodowiskowe w zakadce Zaawansowane. Zmie warto zmiennej Path (zobacz rysunek 2.3), by wskazywaa na katalog z zainstalowanym PHP. Najprawdopodobniej znajduje si on w gwnym katalogu dysku (przykadowo c:\) lub w podkatalogu programw (np. c:\Program Files). Jeli silnik PHP nadal nie dziaa poprawnie (zobacz nastpny podrozdzia, aby dowiedzie si, jak to sprawdzi), sprawd, czy w folderze Windows znajduje si plik PHP.ini. Jeli tak, upewnij si, e zawarte w nim wpisy wskazuj na waciwy katalog. Sprbuj skopiowa PHP.ini, jeli go tam nie ma. Po kadej zmianie powiniene zatrzyma serwer i uruchomi go ponownie, aby mie pewno, e rozszerzenie PHP dziaa z nowymi ustawieniami.

Rozdzia 2. Szczegy instalacji i konfiguracji


Rysunek 2.3.
Edytuj warto zmiennej Path, aby upewni si, e zawiera katalog PHP

37

rnlenrte

rodowiskowe

E l

Zmienne uytkownika dla Mr, Heh Zmienna LANG PATH TEMP TMP

Pl

Warto

C:\Documents and Settings\Mr. Heh\Us... C:\Documents and 5ettings\Mr. Heh\Us...

Edytuj Zmienne systemowe Zmienna NUMBER OS j f ^ PATHEXT ! PROCESSOR_A... Windows_NT .COM; .EXE; .BAT; .CMD; ,VBS;. VBE;. J5;.... x86 Edytuj

| |

Anuluj

Etapy instalacji Joomla!


Instalacja Joomla! jest wzgldnie prosta dla dowiadczonego uytkownika. W tym podrozdziale opisano pokrtce poszczeglne etapy instalacji, co pozwoli Ci zapozna si z procesem instalacji, jeli nie miae dotychczas adnych dowiadcze w tej dziedzinie. Rozpocznij instalacj od pobrania aktualnej wersji Joomla! (z www.joomla.org) na dysk twardy. Rozpakuj archiwum (bdzie to plik .zip lub .tar.gz albo ,tar.bz2), nastpnie umie pliki Joomla! w katalogu serwera WWW. W przypadku instalacji zdalnej moesz wykorzysta program FTP, taki jak darmowa FileZilla, aby umieci pliki w gwnym katalogu serwera WWW. Zanim rozpoczniesz instalacj na zdalnym serwerze, powiniene sprawdzi, czy PHP dziaa poprawnie. Moesz atwo to zrobi, tworzc plik w edytorze tekstu (takim jak Notatnik) o nazwie test.php w ktrym umiecisz lini <?php phpinfo( ); ?>. Zapisz plik i wylij go na zdalny serwer. Po wywoaniu tego pliku przez przegldark (wpisujc adres URL taki jak /p://www.przyklad.com/test.php,) zobaczysz stron z pogrupowanymi parametrami PHP. Jeli PHP nie dziaa poprawnie, skontaktuj si z dostawc usugi. Po skoczeniu prby upewnij si, e usune ten plik, poniewa niepowoane uycie moe zdradzi hakerowi wiele informacji na temat Twojego serwera WWW. Informacje ze strony phpinfo() mona w razie potrzeby bezpiecznie odczyta w interfejsie administracyjnym Joomla!. Po skopiowaniu plikw do gwnego katalogu strony WWW uruchom w przegldarce internetowej plik index.php. Powiniene zobaczy pierwszy ekran procesu instalacji, jak przedstawiono na lysunku 2.4. Zawiera list wyboru z dostpnymi jzykami'. Zaznacz wybrany jzyk i kliknij przycisk Dalej, aby przej do kolejnego kroku.
1

Polski pakiet jzykowy dla zaplecza i strony gwnej mona pobra ze strony przyp. tum.

http://www.joomla.pl/

38

Joomla!. Profesjonalne tworzenie stron WWW


?
r T Q ! , . . . irlSi313Cj3

Rysunek 2.4.
Pierwsza strona instalacji pozwala na okrelenie jzyka

'i J O O T

Wersja 1.5

Kroki
1 : Jzyk 2 : Pi zetjlail u s t a w i e 3 : Licencja 4 : Biaza d a n y c h 5 : U s t a w i e n i a FTP 6 : Kontjiii a c j a 7 : Zakocz

Wybierz jzyk
Wybierz jeyk el-GR- Greek en-GB - English (United Kingdom) eo-XK - Esperanto e s - E S - S p a n i s h ( E s p a o l internacional) e u - E S - B a s q u e (Euskara estandarra) fa-IR-Persian^jU) fi-FI - Finnish ( S u o m i ) : f r - F R - F r e n c h (Fr) ; he-IL- Hebrew(IL) hi-IN - D e v a n a g a r i / H i n d i (India) j h r - H R - C r o a t i a n (Hr) ; hu-HU - Hungarian (Magyar) j it-IT - Italian (Italy) Ija-JP - Japanese(JP) l o - L A - Lao ('.'.":',.) i I t - L T - Lithuanian Iv-LV - Latvian i n b - N O - Norsk bokmSl (Norway) nl-NL - Nederlands (NL-BE)

Joomla! jest Wolnym Oprogramowaniem udostpnianym na licencji GNU/GPL.

Nastpny ekran (zobacz rysunek 2.5) umoliwi Ci sprawdzenie przed rozpoczciem instalacji, czy wszystkie niezbdne elementy systemu dziaaj poprawnie. Jeli ustawienie ktrego z parametrw koliduje z wymaganiami Joomla!, w podrozdziale Konfiguracja PHP" poszukaj wyjanienia opcji, ktre trzeba poprawi. Rysunek 2.5.
Ekran sprawdzania przed instalacj potwierdzi, czy wszystkie niezbdne funkcje dziaaj poprawnie
Kroki
1 : Jeyk . 2 : Przegld ustawie 3 : Licencja 4 : Baza danych 5 : Ustawienia FTP 6 : hoiifijui acja 7 : Zakocz Zalecane ustawienia: Joomla! moe nadal dziaa mimo, ze ustawienia Twojego serwera nie s do koca niedostosowanym rodowisku moe KCW !*spoctarv\'5ne prbie?:,y. Ustawienie Safe Mode: Wywietlaj bdy: Wczytywanie plikw: Magic Quotes: Register Globals: Buforowanie kodu wynikowego: Automatyczne uruchomienie Zalecane Wyczone Wczone Wczone Wyczone Wyczone Biece Wy lar zone Wczone Wczone Wyczone Wyczone wyrnione na czerwono, prosz podejmij dziaania w celu ich zmiany, Jeli tego nie zrobisz instalacja Joomla! moe . by niemoliwa. Wersja PHP >=4.3,10 - obsuga kompresji zlib - obsuga XML - MySQL Domylny jzyk wielobajtowy Nadpisywanie funkcji wielobajtowych wyczone configuration.php Niezapisywalne Tak Tak Tak Tak lak Tak Tak M l V W W 'iflniiir-t isiaiai/ja

Wersja 1.5 Sprawd ponownie

Przegld ustawie

O 'Potnij

Dalej

P r z e g l d u s t a w i e d l a J o o m l a ! 1.5.0 P r o d u c t i o n S t a b l e [ K h e p r i ]

Wyczone Wyczone Wyczone Wyczone

Kolejny etap wymaga wyraenia zgody na warunki Powszechnej Licencji GNU. Po klikniciu Dalej zostaniesz przeniesiony do ekranu konfiguracji bazy danych (zobacz rysunek 2.6). Moesz tutaj ustawi adres serwera MySQL (w przypadku instalacji lokalnych jest to czsto local host), wpisa nazw uytkownika bazy danych i haso. Zwr uwag, e niektrzy dostawcy usug internetowych nie pozwalaj na tworzenie baz danych przez programy. W takiej sytuacji utwrz baz rcznie, a jej nazw wpisz w odpowiednie pole. Instalator Joomla! utworzy wewntrz niej niezbdne tabele. W zakadce Dodatkowe ustawienia, na dole ekranu znajdziesz opcje umoliwiajce utworzenie kopii lub usunicie istniejcych danych w bazie.

Rozdzia 2. Szczegy instalacji i konfiguracji


lysunek 2.6.
Ekran konfiguracji bazy danych umoliwia Ci wprowadzenie danych dostpu do konta i nazw bazy Kroki
1 : Jzyk 2 : P i zeyii<l u s t a w i e wymaga czterech prostych krokw,,, 3 : Licencia -I : B a z a dat t y c h 5 : Ustawienia FTP 6 : K o i if iyt ii a c i a 7 : Zakocz
1

39

Konfiguracja bazy danych


Ustawienia potaczenia: P o d s t a w o w e nstat W tym ktoku powiconym I onhgur cii bazy danych, prosz podaj adres serwera. na ktrym Joomla! ma by zainstalowany. Nastpnie podaj nazw uytkownika MySQL, haso oraz nazw bazy danych, ktr ma uywa Joomla!. leii Twj serwer posiada ograniczon liczb baz danych uyi toznych w zedrostkow tabel eby zainstalowa kilka serwisw Joomla! przy uyciu jednej bazy danych, Okrelisz je w ustawieniach dodatkowych. Tam moesz rwnie oto eli sposb w jaki Joomla! potraktuje istniejce tabele o tym samym co wybr any przedrostiu. Typ bazy danych

mysql

Nazwa serwera localhost Nazwa uytkownika

>; iacuJhoat

iroot

Nazwa bazy danych joomla15|

Konfiguracja gwna (zobacz rysunek 2.7) polega na ustawieniu kluczowych parametrw strony. Moesz tutaj ustawi jej nazw, haso administratora, a take wczyta przykadowe dane. Po klikniciu Wczytaj przykadowe dane w bazie danych MySQL zostan zapisane przykadowe dane. W ten sposb moesz si upewni, e komunikacja z serwerem baz danych przebiega bezbdnie. Rysunek 2.7.
Na ekranie konfiguracji gwnej mona ustawi nazw strony, haso administratora, a take wczyta przykadowe dane Gwna konfiguracja
Narwa witryny: Nazwa

Wpis2 lazw^ Twoje} witryny.

witryny
Potwierd: email i haso administratora

w w JoomlaJumpstart com w

Wpisz adres email, bdzie to gjwny adres witryny i adres gwnego administratora zignorowa t seteji;, poniewa twoje beda przeniesione z poprzedniego ser

Twj e a admin@JoomlaJumpstart com mi l "ft- , , . . . . administratora


Potwierd haso administratora zapasowej

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 i s u J o o m l a ! 1.0.x l u b k o p i i WANE: Zaleca si instalowanie przykadowych danych. A b y to zrobi, wybierz odpowiedni opcj i zatwierd j zanim przejdziesz dalej. Przed zakoczeniem instalacji moesz wypeni baz danych ptzykadow treci, Oto jakie s moliwoci: > I W.rnv<im> d;t i f i i i 7 > U r i ( l n w t ' 1 1

Wczytaj ( ) przykadowe

Wczytaj!

) Zaaduj skrypt

i.

<

Instalacja zwieczona jest infonnacj o jej zakoczeniu. Na ekranie pojawiaj si take przyciski kierujce na gwn stron Joomla! lub do interfejsu administracyjnego (zaplecza).

40

Joomla!. Profesjonalne tworzenie stron WWW


Jeli instalacja nie powioda si, a na ekranie nie pojawi si aden komunikat o bdzie, sprawd, czy wczone jest zgaszanie bdw w PHP (zobacz podrozdzia ,, Zmiana zgaszania bdw PHP"). Sporadycznie pojawiaj si problemy, ktre nie s wykrywane przez system Joomla!, w takiej sytuacji tylko inspekcja bdw generowanych przez PHP (ktre bez ustawienia odpowiedniej dyrektywy pozostaj ukryte) moe pomc Ci w zdiagnozowaniu kopotu.

Konfiguracja Apache Web Server


Aby uzyska najlepsz wydajno serwera Joomla!, musisz zacz od dou: od serwera Apache. Serwer Apache jest jednym z najlepiej sprawdzonych i przetestowanych serwerw wiata. Wykorzystuje si go do prowadzenia najwikszych, lecz take najmniejszych stron internetowych. Ponad 70 procent wszystkich stron internetowych uruchamianych jest na Apache. Ze wzgldu na oglnowiatowe rozmieszczenie i testowanie stabilne wydania Apache s bardzo trwae. Nawet jeli wystpi jaki problem, to po jego zbadaniu okazuje si zazwyczaj, e spowodowany zosta bdn konfiguracj, a nie bdem w samym serwerze. Podstawowa instalacja Apache jest prosta, ale ju w dopasowywaniu konfiguracji do wasnych potrzeb mog wystpi trudnoci. W gwnym pliku konfiguracyjnym (httpd.conf) dostpnych jest ponad czterdzieci rnych dyrektyw. Wiele z nich ma wpyw nie tylko na dziaanie serwera, ale take na bezpieczestwo i wydajno.

Pliki konfiguracyjne
Jeli chcesz uzyska najlepsz wydajno Joomla!, musisz po kolei sprawdzi wszystkie dyrektywy wykorzystywane przez serwer WWW. Ustawienia rekomendowane nie zawsze speniaj wszystkie potrzeby. Gwny wpyw na konfiguracj ma okrelenie grupy odbiorcw. Czy spodziewasz si tysicy uytkownikw, ktrzy bd odwiedza Twoj stron tylko przez kilka minut? Czy moe planujesz stworzenie portalu, na ktrym uytkownicy spdz wikszo czasu powicanego na przegldanie internetu? Ustawienie waciwych wartoci dla niektrych parametrw, takich jak te odnoszce si do przekroczenia czasu, wymaga pewnego dowiadczenia, chocia wiele ustawie mona zmieni od razu, aby uatwi sobie ycie, gdy jest si administratorem Joomla!. Trzy najwaniejsze dyrektywy Joomla! to: Di rectorylndex, LogLevel i ServerRoot.

Dyrektywa Direclorylndex
Ta dyrektywa pozwala ustawi, ktry plik bdzie traktowany jako plik indeksowy. Domylnie dyrektywa ustawiona jest na Di rectorylndex index.html. Oznacza to, e wywoanie katalogu w przegldarce bez podania nazwy pliku spowoduje zwrcenie pliku index.html. Poniewa do uruchomienia Joomla! konieczny jest plik index.php, musisz doda do listy odpowiedni wpis. Podczas przegldania pliku httpd.conf powiniene natrafi na ponisz dyrektyw:
# D rectorylndex: sets the file that Apache will server if a directory is requested
<IfModule dir_module> Directorylndex index.html </IfModule>

Rozdzia 2. Szczegy instalacji i konfiguracji

41

Poprawne uruchamianie Joomla! wymaga dodania pliku indeksowego PHP do tej listy. Wstaw odwoanie do index.php tu przed odwoaniem do pliku HTML, jak poniej:
Di rectoryIndex index.php index.html

Nastpnym razem, kiedy uytkownik poda adres URL bez wskazania pliku (np. http://localhost), katalog zostanie przeszukany pod ktem obecnoci index.php, plik index.html zostanie wykorzystany, jeli nie uda si znale pliku PHP. lyrektywa LogLevel Ustawienie LogLevel wpywa na liczb komunikatw zapisywanych przez system w dzienniku bdw. Podczas wczesnego poznawania Joomla! lub testw w czasie wdraania zwikszenie LogLevel moe znaczco uatwi diagnoz i usuwanie problemw. Takie dziaanie pozwala Ci take natychmiast wyapa mae problemy, zamiast pniej, gdy ciko obciony system moe wyolbrzymi mae wady. Jak mwi stare powiedzenie najlepiej zabi potwora, kiedy jest jeszcze may. Domylnym ustawieniem LogLevel jest warn. Poniej wymieniono osiem dostpnych ustawie (w porzdku rosncym wzgldem liczby komunikatw): emerg Zapisuj tylko krytyczne wpisy, gdy w systemie wystpi bd i system nie moe dalej funkcjonowa. alert Zapisuj ostrzeenia wymagajce natychmiastowej reakcji, aby zapobiec awarii czci systemu. crit Przechowuj informacje o bdach, ktre mog uszkodzi dziaanie serwera. warn Zapisuj wszystkie ostrzeenia generowane przez system. Jest to domylne ustawienie. error Przechowuj bdy dotyczce uruchamiania systemu. notice Zapisuj informacje o normalnych okolicznociach, ktre nie zagraaj dziaaniu systemu. info Dostarczaj dodatkowych informacji wraz z sugestiami optymalizacji. debug Zapisuj wszystkie komunikaty systemu, wczajc w to potwierdzenie uruchamiania procesw.

Ustawienie LogLevel na danym poziomie spowoduje zapisywanie komunikatw przewidzianych dla tego poziomu i wszystkich poziomw o wyszym znaczeniu. Komunikaty nalece do poziomu notice s zapisywane zawsze, niezalenie od ustawienia LogLevel. Zalecanym ustawieniem dla serwera produkcyjnego jest przynajmniej crit. Po ustawieniu na warn wpis do dziennika moe wyglda tak:
[Sat Nov 18 08:16:04 2006] [error] [client 127.0.0.1] File does not exist: C:/Program Fnles/Apache Software Foundation/Apache2.2/htdocs/AVE, referer: http://www.yahoo.com

42

Joomla!. Profesjonalne tworzenie stron WWW


Istnieje take dyrektywa LogFormat, ktra pozwala dostosowa format wpisw do dziennika. W podrczniku Apache znajdziesz dokadne informacje na temat jej wykorzystania. Dyrektywa, ktra okrela pooenie i nazw pliku dziennika bdw, nosi nazw ErrorLog. Przydatn funkcj, dostpn za porednictwem ErrorLog, jest moliwo zapisywania wpisw na zdalny serwer. Moesz wykorzysta zdalny serwer jako miejsce centralnego przechowywania dziennikw wielu serwerw do analizy. Przechowywanie dziennika na zdalnym serwerze uniemoliwia hakerom, jeli uda im si wama na ktry z serwerw, usunicie dziennika zawierajcego lady ich dziaa. Aby skorzysta z funkcji wysyania wpisw dziennika na zdalny serwer, musisz tylko okreli zdalny serwer syslog, jak pokazano poniej:
ErrorLog syslog:logwarehouse

Spowoduje to przesyanie wpisw dziennika na serwer o nazwie logwarehouse. Aby uzyska wicej informacji na temat uruchamiania zdalnego serwera wpisw dziennika, odwied artyku w Wikipedii powicony standardowi syslog:
http://en.wi ki pedi a.org/wi ki/Syslog

Dyrektywa ServerRoot
' Dyrektywa ServerRoot okrela gwny katalog serwera WWW. W przypadku systemu Linux dyrektywa byaby ustawiona podobnie jak poniej:
ServerRoot "/usr/local/apache"

Na platformie Windows wygldaaby raczej tak:


ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2"

Warto ta bdzie dodana na pocztku do wszystkich cieek, ktre nie s w peni odpowiednie. Jeli dziennik nie jest zapisywany we waciwym miejscu lub pliki konfiguracyjne s niedostpne, sprawd ustawienie tej dyrektywy.

Inne dyrektywy httpd.conf


W poprzednich podrozdziaach szczegowo opisano najwaniejsze dyrektywy, ktre naley ustawi na pocztku. Dostpnych jest jednak wiele innych, ktrych ustawienie wpywa na Joomla!. Sugerowane ustawienia dla takich opcji, jak jzyki, SSL, katalogi uytkownikw itd., mona znale w podkatalogu /defaults, wewntrz /conf ktry z kolei znajduje si w gwnym katalogu serwera WWW. Przykadowe pliki .conf zawieraj sugestie, ktre mog Ci pomc w ustawianiu systemu pod ktem uzyskania danych funkcji. Tabela 2.1 zawiera list znaczcych dyrektyw i oglny opis kadej z nich. Wszystkie dyrektywy znajdziesz w pliku konfiguracyjnym. Odpowiednie ustawienie uzalenione jest od Twoich potrzeb wzgldem instalacji.

Rozdzia 2. Szczegy instalacji i konfiguracji


Tabela 2.1. Wane dyrektywy serwera Dyrektywa
AccessFileName AddCharset zestawZnakw rozszerzenie [rozszerzenie] .. AddDefaultCharset On|Off|zestawZnakw AddLanguage AllowCONNECT AllowOverride CacheDefaultExpi re

43

Apache Opis Okrela nazw pliku konfiguracyjnego. Przypisuje wybrane rozszerzenia do podanego zestawu znakw. Dodaje domylny zestaw znakw do typu MIME text/plain i text/HTML. Przypisuje jzyk dla plikw z danym rozszerzeniem. Okrela porty, na ktrych mog by przyjmowane poczenia przez proxy. Okrela typy dyrektyw, ktrych uycie jest dozwolone w pliku .htaccess. Oznacza domylny czas przechowywania dokumentu w pamici podrcznej, jeli nie zostanie ustawiony czas wyganicia tego pliku. Okrela domylny zestaw znakw. Przechowuje czas wyganicia tracking cookic w sekundach. Pozwala ustawi wasny plik dziennika, a take jego format. Okrela domylny jzyk, ktry zostanie przesany w postaci znacznika MIME. Okrela list adresw, ktre maj zabroniony dostp do serwera WWW. Ta dyrektywa moe by ogromnie poyteczna w przypadku obrony przed atakami hakerw lub ograniczenia pocze z nieautoryzowanymi lub nieprzyjaznymi odwiedzajcymi. Przechowuje ciek dostpu do gwnego katalogu przeznaczonego dla odwiedzajcych. Najczciej dyrektywa ta wskazuje ciek do folderu htdoes, w ktrym zainstalowany jest Joomla!. Na platformie Windows moe by ustawiona jako C:/Program Files/Apache Software Foundation/Apache2.2/htdocs. Wskazuje dokument, ktry zostanie zwrcony odwiedzajcemu w przypadku wystpienia bdu. System Joomla! nadpisuje to ustawienie i powoduje zwrcenie wasnej strony z komunikatem o bdzie. Tak stron mona zastpi okrelonym, wasnym szablonem. Wskazuje ciek do pliku dziennika, w ktrym zapisywane s komunikaty systemu. Pozwala ustawi nagwek odpowiedzi HTTP. Wskazuje nazw pliku, ktrego zawarto zostanie wstawiona przed list plikw w katalogu, jeli ustawiono dyrektyw Header. Wcza lub wycza zapisywanie informacji o odwiedzajcych, dostarczonych w postaci tosamoci RFC 1413 doczanej przy daniu. Wcza lub wycza obsug trwaych pocze lub sesji. Okrela limit czasu, po przekroczeniu ktrego zostanie przerwane trwae poczenie lub trwaa sesja.

CharsetDefault CookieExpires CustomLog DefaultLanguage

Deny

DocumentRoot

ErrorDocument

ErrorLog

Header HeaderName

IdentityCheck

KeepAlive KeepAliveTimeout

44

Joomla!. Profesjonalne tworzenie stron WWW

Tabela 2.1. Wane dyrektywy serwera Apache cig dalszy Dyrektywa


LanguagePriority

opis Przechowuje kolejno wariantw jzykowych, jeli jzyk nie zosta okrelony przez odwiedzajcego. Umoliwia ustawienie portu i adresu IP, na ktrym serwer bdzie czeka na poczenia. Zobacz take dyrektyw ServerName. Okrela dopuszczaln liczb da dla jednego trwaego poczenia. Domylne ustawienie to 100. Wskazuje skrypt CGI (Common Gateway Interface), ktry zostanie uruchomiony w odpowiedzi na okrelone danie. W przypadku uruchamiania PHP przez CGI naley odpowiednio skonfigurowa t dyrektyw. Uyteczna tylko w przypadku uruchamiania PHP przez CGI. W takim przypadku dyrektywa okrela plik dziennika bdw, do ktrego trafiaj komunikaty CGI. Podczas wysyania wiadomoci od serwera do klienta doczany jest adres e-mailowy. Administrator Joomla! moe zdefiniowa to ustawienie, aby umoliwi uytkownikom przesyanie da i raportw. Nazwa komputera i port wykorzystywane przez serwer. Domylnym ustawieniem jest ServerName localhost :80. Jeli korzystasz z kilku serwerw na jednym komputerze (np. Apache i IIS), moesz uy t dyrektyw do zmiany portu, na ktrym Apache nasuchuje pocze. Ilo czasu, jak Apache moe powici na przetwarzanie dania, zanim zostanie ono przerwane. Domylne ustawienie to 300 sekund. Wcza lub wycza obsug zapyta TRAC. Domylnie ustawiona na on. Wskazuje pooenie pliku dziennika z informacjami o transferach. Okrela katalog, w ktrym uytkownicy mog umieszcza swoje strony. Jeli z Twojego serwera bdzie korzysta wielu uytkownikw, moesz tutaj ustawi odpowiedni katalog. Pozwala ustawi gwny katalog dla serwera wirtualnego. Moesz wykorzysta t dyrektyw, jeli chcesz uruchomi Joomla! na wirtualnym serwerze. Okrela adres IP wirtualnego serwera.

Listen

MaxKeepAli veRequests

Script

ScriptLog

ServerAdmin

ServerName

TimeOut

TraceEnable TransferLog UserDi r

Vi rtua 1 DocumentRoot

Vri tua1DocumentRootIP

Pliki dziennika
Pliki dziennika serwera Apache m o g by bardzo pomocne w monitorowaniu serwera W W W . M i m o i niektre rozszerzenia Joomla! potrafi tworzy statystyki, nie jest to zalecane, poniewa obnia wydajno systemu. Jeli wic chcesz dokadnie monitorowa ruch na stronie, musisz wykorzysta do tego dzienniki serwera W W W . Istniej trzy typy takich dziennikw: access, error i install2.
2

Informacje o prbie, informacje o bdach i komunikaty instalacyjne p r z y p . tum.

Rozdzia 2. Szczegy instalacji i konfiguracji


Analiza plikw zawierajcych te dzienniki uatwi Ci: Wyrwnywanie obcienia Musisz zda sobie spraw, e jeli Twoja strona stanie si popularna, serwer, na ktrym dziaa, zostanie poddany sporemu obcieniu. Powiniene zna pory dnia, w ktrych obcienie jest najwiksze, a take te, kiedy ruch na stronie jest bardzo may. W okrelonych sytuacjach (np. opublikowanie informacji podawanych przez media) moesz spodziewa si ogromnego ruchu na stronie. Te ekstremalne przypadki mog skoni Ci do wyczenia funkcji, ktre szczeglnie obciaj procesor (np. funkcja wyszukiwania), dopki obcienie nie zmaleje. W czasie maej aktywnoci warto wykorzysta okazj i zrobi kopi zapasow strony. Okrelenie, jacy uytkownicy korzystaj ze strony Dzienniki zawieraj ogromne iloci informacji, ktre mog okaza si szczeglnie uyteczne dla administratora systemu. Czy nie chciaby pozna, jaki procent odwiedzajcych korzysta z danej przegldarki? Czsto jest to zaskakujce. A co jeli poowa odwiedzajcych pochodzi z Holandii? Jakie ma to znaczenie przy doborze treci, ktre pojawi si na stronie? Czy nie chciaby dowiedzie si, za porednictwem ktrej strony trafiaj do Ciebie uytkownicy z Holandii? To tylko kilka pyta, na ktre mona odpowiedzie, jeli tylko dokadnie przyjrze si plikom dziennika. Sprawdzenie, jakie bdy wystpiy na stronie Jeli ktry z moduw serwera nie dziaa poprawnie lub pojawia si bd podczas uruchamiania jednej z funkcji, powiniene o tym wiedzie. Dziennik bdw zawiera informacje przydatne podczas usuwania problemw, dziki czemu moesz zapewni poprawne dziaanie serwera. Dostrzeenie prb atakw i wama na stron Sie Web przypomina troch Dziki Zachd, poniewa obowizuje w niej niewiele regu. W latach siedemdziesitych rzd Stanw Zjednoczonych boryka si z problemem nastoletnich hakerw, ktrzy dla zabawy wamywali si do systemw komputerowych. Obecnie jest to problem globalny, a hakerw cechuj czsto groniejsze zamiary. Dzienniki mog zawiera informacje o prbach dostpu przeprowadzanych wedug pewnego wzorca. Dzieje si tak w sytuacji, kiedy haker prbuje zaatakowa system z uyciem oprogramowania, ktre popularnie nazywa si botem. Jeli dowiesz si, e system sta si obiektem ataku, moesz podj przeciwdziaania rnego typu wczajc w to zablokowanie dostpu z adresu IP, ktry wykorzystuje haker. Nie zdoasz zapobiec czemukolwiek, jeli nie wiesz, co si dzieje. Uwana analiza plikw dziennika moe dostarczy sygnaw, e system stanie si obiektem ataku.

45

Po instalacji serwera Apache uruchom go na krtki czas, a nastpnie sprawd zawarto podkatalogu /logs, ktry znajduje si wewntrz gwnego katalogu Apache. Znajdziesz w nim trzy pliki. Przejrzyj ich zawarto w zwykym edytorze tekstu, aby zapozna si z nimi. W miar postpu pracy z t ksik bdziesz wraca do plikw dziennika, aby udoskonala konfiguracj i lepiej zarzdza stron.

Foldery modules i extensions


Foldery /modules i /extensions zawieraj wszystkie wtyczki, ktre umoliwiaj wspprac serwera Apache z innymi programami, np. PHP. Nie ma powodu, aby zmienia zawarto tych folderw podczas pracy z Joomla!. Jeli jednak zauwaysz dziwne zachowanie systemu.

46

Joomla!. Profesjonalne tworzenie stron WWW


warto sprawdzi, czy s dostpne uaktualnione wersje moduw umieszczonych w tych katalogach. W systemie Linux, aby okreli wersj moduu lub rozszerzenia, powiniene wykorzysta komend fi le, przykadowo:
file mod auth dbm.so

W przypadku platformy Windows moesz sprawdzi wersj rozszerzenia lub moduu, klikajc zakadk Wersja w oknie Waciwoci pliku, jak przedstawiono to na rysunku 2.8. W internecie lub na stronie serwera Apache (www.apache.org) moesz sprawdzi, czy inni uytkownicy zgaszali problemy z zainstalowan u Ciebie wersj wtyczki. Jeli masz zamiar poprosi innych o pomoc w rozwizaniu Twojego problemu, docz dokadne informacje o wersjach wtyczek, ktre wykorzystujesz. Umoliwi to precyzyjniejsz ocen Twojej sytuacji. Rysunek 2.8.
Sprawd wersje plikw w folderach modules i extensions, jeli napotkae trudnoci
^tadvroci: mod_auth_dbm.so
Oglne Wersja

Wersja pliku: Opis: Prawa autorskie: auth_dbm_module for Apache Copyright

Pozostae informacje o wersji Nazwa elementu: Jzyk Komentarze Nazwa produktu Nazwa wewntrzna Oryginalna nazwa pliku Wersja pliku Wersja produktu Warto: ! Apache Software Foundation

j ;

OK

I[

Anuluj

Nie wszystkie moduy, ktre znajduj si w tych folderach, s aktywne. Korzystajc z odpowiednich dyrektyw w pliku httpd.conf, moesz wycza lub wcza poszczeglne wtyczki. Dodatkowe moduy, ktre nie s domylnie zainstalowane, mona pobra ze strony:
http://modu es.apache.org

Folder htdocs
Domylnie katalog ten zawiera pliki stron internetowych. Musisz zwrci szczegln uwag na zabezpieczenie folderu /htdocs. Poniewa pliki wewntrz tego katalogu maj prawa pozwalajce uruchamia kod PHP, naley zapobiec sytuacji, w ktrej haker mgby umieci wasny kod lub wirusa wewntrz /htdocs. W rozdziale 14. omwiono sposoby zabezpieczenia tego katalogu.

Rozdzia 2. Szczegy instalacji i konfiguracji

47

Konfiguracja PHP
Konfiguracja PHP jest znaczco prostsza ni konfiguracja Apache, jednak niesie ze sob nie mniej potencjalnych zagroe bezpieczestwa. Silnik PHP bezporednio uruchamia kod, dlatego konieczna jest poprawna konfiguracja, ktra zapobiegnie lukom w zabezpieczeniach. W przypadku udanego ataku haker moe zdoby dostp do informacji poufnych, usun dane lub uruchomi program, ktry pozwoli mu na dodatkowe szkodliwe dziaania. Joomla! wymaga do poprawnego dziaania PHP w wersji 4.3.0 lub nowszej. Przed rozpoczciem instalacji (zwaszcza zdalnej) sprawd wersj PHP, aby unikn problemw. Czst sztuczk wykorzystywan przez hakerw jest uruchomienie faszywej podstrony na Twoim serwerze. Poprzez skierowanie na ni uytkownikw mog zdoby poufne dane, rozsya wirusy, przeprowadza ataki DoS pochodzce z Twojego serwera lub rozsya spam. Najprostszym sposobem okrelenia konfiguracji PHP jest wykorzystanie funkcji phpinfoO. W ten sposb dowiesz si take, czy PHP dziaa poprawnie. Plik zawierajcy pojedyncz lini <?php phpi nfo(); ?> spowoduje wywietlenie konfiguracji, jak przedstawiono na rysunku 2.9. Rysunek 2.9.
Komenda pbp\nfo() wywietli kompletn konfiguracj PHP w sekcji Configuration
Directive allow j : a l l j i i n e j > a s s j efei ence On allow j i i l J o p e n altw ml inchitle aMjjsepaiatoi .input ai <j_sepai atoi .oi itpi it asp J a g s autojippeiidjile aiitojjlobals J i t auto j ) i epend Jfile lnowscap default chai set detauttjniinetype define_syslo<j_yai aides disalde_classes On Off & &amp; Off no value On no value C:\xampp\php\brQwscap \browscap.ini no value texUhtml Off no value i :
1

PHP Credits Configuration PHP Core


Local Value On On Off Off & &amp, Off no value On no value C Axa m p p\ph p\b rows c a p \browscap.ini no value textfhtrni Off no value Mastei Value

always j o p u l a t e j aw j j o s t j l a t a Off

Po przewiniciu strony do sekcji Configuration moesz przejrze list dyrektyw oraz ich ustawienia. Poniej w poszczeglnych sekcjach przedstawiono konfiguracje dla poszczeglnych wtyczek wiele z nich zawiera take informacje o wersji. Sekcja PHP Variables, ktra znajduje si na dole strony, zawiera wartoci zmiennych PHP. Moesz wykorzysta te informacje, aby lepiej zrozumie dziaanie systemu, a take wytropi rdo wystpowania bdu.

48

Joomla!. Profesjonalne tworzenie stron WWW


Jeli rcznie kompilujesz PHP, musisz doczy obsug trzech bibliotek: MySQL, Zlib i XML. W przeciwnym wypadku Joomla! nie bdzie dziaa poprawnie. Podczas uruchamiania systemu Joomla! sprawdzane s wartoci kilku dyrektyw. Oto ich lista wraz z zalecanymi ustawieniami:
Safe mode U s t a w safe_mode na Off.

Di spl ay Errors Ustaw di spl ay_errors na On (tylko na serwerze testowym).


File Uploads U s t a w file_uploads na On. Magic Quotes GPC U s t a w magic_quotes_gpc n a On. Magic Quotes Runtime U s t a w magic_quotes_runtime na Off. Output Buffering U s t a w output_buffering na Off. Session auto start U s t a w session.auto_start na Off. Register Gl obal s U s t a w register_gl obal s na Off w pliku globals.php

w instalacji Joomla!.
Register Globals Emulation U s t a w RG_EMULATION na Off () w pliku Zlib compression U s t a w zlib.ouput_compression na On. globals.php.

Upewnij si, e plik configuration.php znajduje si w katalogu Joomla!, a take e ma ustawione uprawnienia zapisu, aby moliwe byy zmiany ustawie systemu Joomla! z poziomu interfejsu administratora. Zapis powinien by take moliwy w katalogu zapisu sesji (ang. session save path), w przeciwnym wypadku pojawi si bdy w funkcjonowaniu Joomla!. Zmiany miejsca zapisu sesji moesz dokona poprzez modyfikacj dyrektyw PHP.

Dyrektywy PHP
Nie wszystkie spord wielu opcji konfiguracyjnych PHP maj bezporedni wpyw na Joomla!. Wiele z nich nigdy nie bdzie potrzebnych, dlatego w tym podrozdziale opisano tylko te, ktre maj znaczenie dla uytkownika Joomla!.

Zgaszanie bdw PHP


Aby wczy wywietlanie komunikatw o bdach PHP (bardzo pomocne podczas usuwania bdw w szablonie lub nowym rozszerzeniu), musisz zmieni ustawienie dyrektywy display_errors w pliku php.ini. Aby wczy display_errors uyj poniszej linii:
display_errors = On

Ta dyrektywa jest domylnie wyczona, aby zapobiec zdobyciu przez hakera dodatkowych informacji na temat systemu, w ktrym dziaa strona. Komunikaty o bdach s jednak zapisywane do pliku dziennika bdw serwera Apache, o ile ustawiona jest ponisza dyrektywa:
log_errors = On

Rozdzia 2. Szczegy instalacji i konfiguracji

49

Jest to ustawienie domylne. Podczas diagnozowania bdw w kodzie PHP cige otwieranie pliku dziennika bdw, aby sprawdzi, czy problem zosta rozwizany, jest niewygodne i niepraktyczne. Duo prociej jest wczy wywietlanie informacji o bdach w oknie przegldarki wraz z waciw treci strony. Funkcja display_errors powinna by wyczona na wszystkich serwerach produkcyjnych. Informacje o bdach mog zdradzi konfiguracj bazy danych, nazwy cieek, nazwy i adresy serwerw, a take wiele innych kluczowych informacji, ktre haker moe wykorzysta podczas ataku. Podobnie jak w przypadku Apache, moesz kontrolowa obfito komunikatw o bdach. Do wyboru s ponisze ustawienia: E_ALL Wywietla wszystkie bdy i ostrzeenia, poza bdami E_STRICT. E_ERR0R Wywietla krytyczne bdy wykonywania. E_RECOVERABLE__ERROR Wywietla prawie krytyczne bdy wykonywania. E_WARNING Wywietla ostrzeenia. E PARSE Wywietla bdy parsowania kodu PHP. E_N0TICE Wywietla wskazwki. E_STRICT Informuje o zalecanych zmianach kodu, aby zapewni kompatybilno z przyszymi wersjami PHP. E_C0RE_ERR0R Wywietla krytyczne bdy, ktre wystpiy podczas uruchamiania PHP. E_CORE_WARN ING Wywietla ostrzeenia, ktre wystpiy podczas uruchamiania PHP. E_C0MPILE_ERR0R Wywietla bdy dotyczce kompilacji kodu. E_COMPILE_WARNING Wywietla ostrzeenia dotyczce kompilacji kodu. E_USER_ERROR Wywietla komunikaty o bdach zdefiniowane przez programist. E_USER_WARNING Wywietla ostrzeenia wygenerowane przez uytkownika. E_USER_NOTICE Wywietla wskazwki wygenerowane przez uytkownika.

Domylnym ustawieniem zgaszania bdw jest E ALL, jednak moesz zmieni to ustawienie, aby doczy take ostrzeenia E_STRICT. Wykorzystaj do tego celu operator OR ( | ) , jak pokazano poniej:
error_reporting = E_AEL|E_NOTICE

Moesz wykluczy dan kategori bdw, wykorzystujc operatory AND (&) i NOT
error_reporting - E_ALL & ~E_USER_NOTICE

):

By moe jeszcze nie zdajesz sobie sprawy z tego, jak wane jest zgaszanie bdw. Zrozumiesz to w momencie, kiedy natrafisz na problem, ktrego nie pojmiesz. Przykadowo moesz napotka pust stron podczas prby dostpu do strony Joomla! bez adnej wskazwki, gdzie ley problem. Dziki wczonemu wywietlaniu bdw moesz natychmiast przystpi do szukania rda problemu.

50

Joomla!. Profesjonalne tworzenie stron WWW


W przypadku instalacji pusta strona wystpuje najczciej z powodu problemu ze ciek zapisu sesji. Dziki wczonemu wywietlaniu bdw (lub po zbadaniu treci dziennika bdw) zostanie wywietlony komunikat podobny do poniszego:
Warning: session_start() [function.session_start()]: open(C:\D0CUME-l\danny\LOCALS~l\Temp\php\upload\sess_61p04kg4fu0fho31vagt3je8d74, 0_RDWR) failed: No such file or directory (2) in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\libraries\joom1a\environment\session.php on line 234.

Komunikat zawiera informacj, e nie mona rozpocz sesji poniewa nie ma takiego pliku lub katalogu" (ang. no such file or directory). Oznacza to bdn konfiguracj serwera PHP, co uniemoliwia zapisywanie i odczytywanie katalogu sesji. Otwrz plikphp.ini i wyszukaj dyrektyw session.save_path. Prawdopodobnie serwer WWW nie ma dostpu do podanej cieki. Ustawienie dyrektywy w taki sposb, aby katalog sesji znajdowa si wewntrz katalogu serwera WWW, rozwie problem na serwerze testowym. W rodowisku produkcyjnym powiniene wykorzysta narzdzia udostpnione przez dostawc usug internetowych, eby ustawi uprawnienia do wybranego katalogu. W przypadku platformy Windows dyrektywa ustawiona jest podobnie jak poniej:
session.save_path=" C:\DOCUME~l\danny\LOCALS~l\Temp\php\upload"

Aby rozwiza problem, naley utworzy folder o nazwie php session wewntrz gwnego katalogu serwera WWW, a nastpnie wskaza ten folder w konfiguracji PHP. Po stworzeniu nowego katalogu ustaw dyrektyw jak poniej (cao w jednej linii):
session.save_path="C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/php_sessions"

W przypadku instalacji zdalnej na serwerze z zainstalowanym Linuksem zmie ustawienie dyrektywy z przypominajcej ponisz:
session.save_path = /var/php_sessions

na katalog, do ktrego dostp ma serwer WWW, na przykad:


session.save_path = /bi1lcat/ws/bl833/pow.dan/php_sessions

Nastpnie uruchom ponownie Apache, a Joomla! powinien dziaa poprawnie. Na podstawie tego prostego przykadu moesz zaobserwowa, jak bardzo wywietlanie komunikatw o bdach moe pomc w rozwizywaniu problemw. Opisana dyrektywa jest tylko wierzchokiem gry lodowej w zakresie konfiguracji PHP.

Wane ustawienia PHP


W tabeli 2.2 przedstawiono skrcon list dyrektyw PHP, ktre znaczco wpywaj na dziaanie Joomla!. Pierwsza kolumna zawiera nazwy dyrektyw, druga moliwe ustawienia. W trzeciej kolumnie umieszczono krtki opis funkcji, ktr peni dana dyrektywa.

Rozdzia 2. Szczegy instalacji i konfiguracji


abela 2.2. Wane ustawienia Dyrektywa
doc root

51

PHP Opis Okrela katalog, w ktrym bd uruchamiane skrypty PHP. W celu poprawnego dziaania Joomla! najlepiej pozostawi t dyrektyw nieustawion. Wycza informacje o PHP doczane do nagwka odpowiedzi. Domylnym ustawieniem w wikszoci rodowisk produkcyjnych jest Off. Wskazuje katalog, w ktrym znajduj si rozszerzenia i moduy PHP. Sprawd ustawienie tej dyrektywy, jeli np. wystpi problem poczenia z MySQL. Wcza lub wycza obsug wysyania plikw. Wiele funkcji systemu Joomla!, takich jak dodawanie szablonw, rozszerze i obrazkw, wymaga ustawienia na On. Okrela list katalogw, ktre bd przeszukiwane przez funkcje
require i include.

Moliwe wartoci
Cig znakw

expose_php

On lub Off

extension dir

Cig znakw

filejjploads

On lub Off

mclude_path

Cig znakw

magic_quotes_gpc

On lub Off

Wcza lub wycza automatyczne kodowanie apostrofw, cudzysoww, lewych ukonikw lub znakw zerowych. Ustawieniem zalecanym dla Joomla! jest On, chocia na wielu serwerach domylnie jest Off. Wcza lub wycza automatyczne kodowanie apostrofw, cudzysoww, lewych ukonikw lub znakw zerowych pochodzcych ze rde zewntrznych. Ustawieniem zalecanym dla Joomla! jest Off. Ustawia w sekundach maksymalny czas uruchamiania skryptu PHP. Ustawienie na 0 wycza limit. Domylne ustawienie to 30 sekund. Jeli przykadowo korzystasz z rozszerzenia, ktre potrzebuje sporo czasu, aby pobra informacje z zewntrz, moesz zwikszy t warto. Ustawia w sekundach maksymalny czas odbierania danych przychodzcych. Wpywa to take na czas oczekiwania na zakoczenie wysyania plikw. Domylne ustawienie to 60 sekund. Jeli przewidujesz, e wysyanie plikw moe trwa duej, zmie ustawienie tej dyrektywy. Ustawia limit pamici. Wprowadza ograniczenia dla skryptw na wspdzielonym serwerze (stosowane czsto przez dostawcw usug internetowych). Blokowane jest midzy innymi uruchamianie plikw (oprcz plikw PHP), funkcje chmod() (zmiana praw dostpu do katalogw i plikw) i system(). Jeli safejnode jest wczona na serwerze, z ktrego korzystasz, wiele z powyszych ogranicze mona omin (jednak nie za porednictwem PHP) dziki narzdziom dostarczonym przez administratora.

magi c_quotes_ '-runtime

On lub Off

max_execution_ '-time

Liczba

maxjnput_time

Liczba

memoryjimit safe mode

Liczba On lub Off

52

Joomla!. Profesjonalne tworzenie stron WWW

Tabela 2.2. Wane ustawienia PHP cig dalszy

Dyrektywa
upload_max_ "-fi lesize upt oad_tmp_di r

Moliwe wartoci
Cig znakw

Opis
Okrela maksymalny rozmiar (w megabajtach) wysyanych plikw. Domylne ustawienie to 2M, co odpowiada 2MB. Okrela katalog, w ktrym tymczasowo zapisywane s wysyane pliki. Podstawowa nazwa katalogu uywanego jako katalog domowy uytkownika dla plikw PHP, na przykad publ icjltml. Wcza lub wycza obsug kompresji zlib. Wyczenie uniemoliwia skorzystanie z tej funkcjonalnoci w Joomla!. Wskazuje inn bibliotek kompresji, gdy standardowa jest niedostpna. Domylnie nieustawiona, co powoduje wykorzystanie standardowej biblioteki.

Cig znakw

user dir zlib.output_ "-compression zlib.output_ "-handler

Cig znakw

On, Off lub liczba

Cig znakw

Zanim zaczniesz zmienia ustawienia PHP, zrb kopi zapasow pliku php.ini, aby zawsze mg wrci do ustawie oryginalnych. Poniewa plik Ani jest plikiem tekstowym, i z tego powodu nie zajmuje zbyt duo miejsca na twardym dysku, warto rozway robienie kopii zapasowej przy kadej wikszej zmianie ustawie. Pamitaj, e po wprowadzeniu zmian w konfiguracji PHP musisz uruchomi ponownie Apache lub IIS, aby nowe ustawienia zaczy obowizywa. Konfiguracja odczytywana jest podczas uruchamiania serwera PHP, dlatego ponownie uruchomienie serwera W W W spowoduje wprowadzenie nowych ustawie. Alternatywnym podejciem do robienia kopii zapasowych pliku phpAni jest zamiana aktualnego ustawienia w komentarz poprzez wstawienie znaku rednika (;) na pocztku linii. Nowe ustawienie wprowadza si poniej. Jeli dokonujesz zmian w konfiguracji z okrelonego powodu, zalecane jest dodanie komentarza, ktry opisze powd modyfikacji. Podczas konfigurowania nastpnego serwera moesz odwoa si do istniejcego pliku .ini, co uatwi Ci dobr odpowiednich ustawie.

Konfiguracja MySQL
Uruchomienie MySQL jest zaskakujco proste. Prawdziw sztuk jest jednak dostrojenie wydajnoci pod ktem jak najszybszej odpowiedzi na dania Joomla!. MySQL zawiera wiele ustawie, ktre pozwalaj wpywa na sposb wykorzystania sesji i zuycia pamici. Moliwa jest take taka konfiguracja, przy ktrej obcienie bdzie rwnowaone na kilku serwerach. Jest to szczeglnie przydatne, jeli Twoja strona stanie si wyjtkowo popularna. Poprawna konfiguracja MySQL jest wynikiem obserwacji faktycznego wykorzystania zasobw, a nie przewidywania przyszych obcie. Najczstszym ograniczeniem wydajnoci MySQL jest wyszukiwanie, czytanie i zapisywanie informacji na dysku twardym. Waciwy dobr ustawie moliwy jest tylko dziki obserwacji, jak faktyczne ksztatuje si obcienie systemu.

Rozdzia 2. Szczegy instalacji i konfiguracji

53

istalacja MySQL
Instalacja MySQL jest jednoczenie najprostsza i najbardziej skomplikowana ze wszystkich serwerw wykorzystywanych przez Joomla!. Serwer MySQL nigdy nie nastrcza trudnoci w nowym systemie, w przeciwiestwie do sporadycznych problemw z pozostaymi serwerami. Problemem moe by natomiast komunikacja MySQL z pozostaymi serwerami szczeglnie z PHP.

oprawne ustawienie zmiennei Path w Windowsie


Jeli po uruchomieniu Joomla! na platformie Windows otrzymasz komunikat, e serwer MySQL jest wyczony, upewnij si, e po instalacji PHP uruchomie ponownie system operacyjny. Aby skorzysta z rozszerze PHP, zmienna Path musi wskazywa na katalog PHP. Podczas instalacji odpowiednie zmiany wprowadzane s automatycznie, a odpowiednia cieka wstawiana jest na list wartoci zmiennej Path. Zmiany nie zostan jednak wprowadzone do momentu ponownego uruchomienia systemu operacyjnego, poniewa zmienna Path odczytywana jest wycznie podczas startu systemu. Aby sprawdzi, czy zmienna Path zostaa waciwie ustawiona, przejd do Panelu Sterowania, otwrz System i kliknij zakadk Zaawansowane. Kliknij przycisk Zmienne rodowiskowe na dole zakadki. Aktualna warto zmiennej Path widoczna jest na licie Zmiennych systemowych. Cig znakw przypisany zmiennej Path jest z reguy do dugi. Dlatego, jeli chcesz zmieni lub sprawdzi jej warto, wybierz j z listy i nacinij przycisk Edytuj. Zmienna zostanie wywietlona w polu tekstowym, a jego zawarto bdzie zaznaczona. Nacinij Ctrl+C, aby skopiowa warto zmiennej do schowka. Nastpnie wklej j do edytora (np. systemowego notatnika), co pozwoli Ci atwiej okreli aktualne ustawienie lub wprowadzi zmiany. Upewnij si, e warto zmiennej zawiera odniesienie do katalogu PHP. Jeli go brakuje, dodaj na kocu listy rednik (;), a nastpnie wprowad ciek. Uruchom komputer ponownie i sprawd, czy problem nadal wystpuje. W wikszoci przypadkw problem zostanie rozwizany.

'olczenie z MySQL 5
Po ukoczeniu pierwszego etapu instalacji Joomla!, kiedy zostanie wywietlony ekran konfiguracji bazy danych, moesz natrafi na kolejny problem. Po wpisaniu poprawnego adresu serwera MySQL, nazwy uytkownika i hasa moe pojawi si komunikat nie mona si poczy" (ang. can't connect). Powodem jest prawdopodobnie korzystanie z wprowadzonego w MySQL 5 nowego kodowania hase. Istniej dwa sposoby rozwizania tego problemu. Moesz wyczy nowy rodzaj kodowania w caym systemie MySQL lub wczy stare kodowanie hase dla poszczeglnych uytkownikw bazy danych. Jeli oprcz Joomla! korzystasz z innych aplikacji, ktre cz si z MySQL, zalecane jest drugie rozwizanie.

54

Joomla!. Profesjonalne tworzenie stron WWW


Aby wczy kodowanie hase zgodne z MySQL 4., uruchom z wiersza polece narzdzie zarzdzania MySQL. Po pojawieniu si znaku zachty mysql> wprowad ponisz lini, zastpujc admi ni stratorJooml a waciw nazw uytkownika, a mojehasl o hasem, ktre bdziesz wykorzystywa:
SET PASSWORD FOR 'administratorJoomla' = 0LD_PASSW0RD('mojehaslo'):

W odpowiedzi uzyskasz komunikat, e zapytanie dotyczyo 0 wierszy (ang. 0 rows affected). Mimo to zmiana kodowania hasa powinna zosta poprawnie wprowadzona. Uruchom ponownie instalacj Joomla!, a problem z poczeniem z baz danych nie powinien ju wystpowa. Aby zmieni sposb autoryzacji w caym systemie MySQL, otwrz aplikacj MySQL Administrator3 i kliknij przycisk Setup Variables. Wybierz zakadk Security i przewi na d, dopki nie zobaczysz opcji Use old passwords. Zaznacz pole wyboru po lewej stronie. Aby zmiany zaczy obowizywa, uruchom ponownie serwer MySQL odpowiedni opcj znajdziesz, klikajc przycisk Service Control.

Tryb Strict i problemy ze wstawianiem danych


Poprawne poczenie z baz danych moe oznacza koniec Twoich kopotw z MySQL lub nie. Podczas prby zainstalowania przykadowych danych Joomla! moe pojawi si na ekranie lub w pliku dziennika bdw Apache, jeli wywietlanie bdw na stronie zostao wyczone, bd o treci przypominajcej:
SQL=BLOB/TEXT column 'comments' can't have a default value: ...

Przyczyn tego bdu jest prawdopodobnie serwer MySQL dziaajcy w trybie strict. Oznacza to wczenie opcji STRICT_TRANS_TABLES lub STRICT_ALL_TABLES, czego wynikiem jest anulowanie caej operacji, jeli wystpi bd przy zapisywaniu choby jednego rekordu. Otwrz panel Startup Variables w aplikacji MySQL Administrator. Wybierz zakadk Advanced i sprawd ustawienie opcji SQL Mode, jak to przedstawiono na rysunku 2.10. Jeli w polu tekstowym, po prawej stronie pojawia si ktra z wyej wymienionych opcji, oznacz pole wyboru, a nastpnie kliknij przycisk Apply Changes na dole ekranu. Opcja SQL Mode odczytywana jest podczas startu serwera zmiany nie zostan wprowadzone, dopki nie uruchomisz ponownie MySQL lub systemu operacyjnego.

Zarzdzanie MySQL
System Joomla! automatycznie tworzy baz danych serwera MySQL i zarzdza ni. Jednak aby dokadnie zrozumie dziaanie MySQL, powiniene samodzielnie zbada struktur bazy danych Joomla!. Najatwiej jest to zrobi, wykorzystujc aplikacj MySQL Administrator. Domylna instalacja serwera MySQL nie zawiera tego programu, ale jest on darmowy i dostpny jako cz pakietu MySQL GUI Tools na stronie: http://dev.mysql.com.

Skd mona pobra program MySQL Administrator, dowiesz si w jednym z kolejnych podrozdziaw przyp. tum.

Rozdzia 2. Szczegy instalacji i konfiguracji


lysunek 2.10.
Odznacz pole vyboru SQL VI ode, jby wyczy ryb strict
General Parameters Log files Replication Myl SAM Parameters InnoDB Parameters Advanced Networking Security Performance Advanced

55

Advanced Configure the startup variables. Note that changes will have no effect until you restart the server. A J

d Enable symbolic link support N/A

0 Read buffer size 256 Ji^^l Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you may want to increase this value. Syntax: sql-mode=option[,option[,option...]] where option can be one of: REAL AS FLOAT, PIPES_AS_CONCAT^NSI_QUOTES,

0 SQL Mode:

STRICT _TRANS_T AB LE S ,N0_AU 1 j

Q Use pool for temporary files k v

Using this option will cause most temporary files created to use a small set of names, rather than a unique name for each new When reading rows in sorted order after a sort, the rows are read through this buffer to avoid a disk seeks. If not set, then it's set to the value of record_buffer.

0 Read rnd buffer size

512

Po uruchomieniu aplikacji wywietlane s oglne informacje na temat stanu serwera, jak to przedstawiono na rysunku 2.11. W lewej czci okna programu umieszczono list dostpnych funkcji, jak np. Service Control (pozwala uruchomi, zatrzyma i restartowa serwer MySQL) lub Startup Variables (konfiguracja parametrw MySQL). Rysunek 2.11.
Program MySQL Administrator umoliwia atwe zarzdzanie baz MySQL za porednictwe m graficznego interfejsu uytkownika
# MySQL Administrator - Connection: rootlocalhost:3306
File Edit View Tools Window Help

Service Control Startup Variables ^iaUj User Administration Server Connections

Server status: M y S Q L S e r v e r is running.

M y

Connected to MySQL Server Instance Username: Hostname: Port: Server Information MySQL Version: Network Name: MySQL 5.0.51 b-community-nt via TCP/IP localhost 127.0.0.1

I Hea"h
M Server Logs j j f Replication Status Backup i

localhost 3306

Catalogs

Restore

Client Information Version: Network Name: IP: Operating System: Hardware: MySQL Client Version 5.1.11

Jako administrator wikszo czasu powicisz prawdopodobnie opcji Catalogs, ktra jest ostatni pozycj na licie w panelu po lewej stronie. Kliknicie przycisku Catalogs spowoduje wywietlenie listy dostpnych baz danych, a take schematu wybranej bazy. Po zaznaczeniu bazy Joomla! (w tym przypadku joomlalS) na licie w panelu po prawej stronie zostanie wywietlona lista tabel, jak zilustrowano to na rysunku 2.12.

56

Joomla!. Profesjonalne tworzenie stron WWW


Administrator - Connection: rootocalhost:3306
File Edit View Tools Window Help I Schema Tables Schema Indices Views Stored procedures

Rysunek 2.12.
Schemat bazy danych zawierajcy wszystkie tabele systemu Joomla!

j|| Server Information ^ j t Service Control Startup Variables User Administration Hi? Server Connections

-i

joomlal 5 All tables ol the joomlal 5 schema le Name Engine Myl SAM MylSAM Myl SAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM Rows 8 1 0 22 32 1 43 5 0 1 11 0 1 1 0 0 3 29 Data length 1,3 kB 7GB OB 1,7 kB 3,9 kB 580 B 64,4 kB 45 B OB 32 B 464 B OB 24 B 20 B OB OB 60 B Index len... 4 kB 2 kB 1 kB 5 kB 3 kB 3 kB 8 kB 2 kB 1 kB 4 kB 4 kB 1 kB 4 kB 3 kB 1 kB 1 kB 2 kB 4 kB Update time 2008-10-29 23:22:42 2008-10-29 23:22:42 2008-10-29 23:16:34 2008-10-29 23:22:42 2008-10-29 23:22:42 2008-10-29 23:22:42 2008-10-29 23:22:42 2008-10-29 23:22:42 2008-10-29 23:16:36 2008-10-29 23:22:42 2008-10-29 23:22:42 2008-10-29 23:16:36 2008-10-29 23:22:42 2008-10-29 23:22:42 2008-10-29 23:16:36 2008-10-29 23:16:36 2008-10-29 23:22:42 2008-10-29 23:22:42

Vjf H ah el t
I S Serve, Logs J Replication Status Backup ,_ Restore Catalogs

jos_banner jos_bannerclient jos_bannertrack jos_categories jos_components jos_contact_details jos_content jos_content_fronlpage jos_content_rating jos_core_acl_aro os_core_acl_aro_gr... jos_core_acl_aro_map os_core_acl_aro_se... jos_core_acl_groups... jos_core_log_items jos_core_log_search... jos_groups jos_menu

4 mysql

i 11,3 kB
J | Edit Table

j Create Table

| | Maintenance

Refresh

Widziae ju moliwoci dwch opcji konfiguracyjnych w panelu Startup Variables, ktre m o g rozwiza problemy z uruchamianiem Joomla!. Wiksze moliwoci daje jednak bezporednia manipulacja danych w bazie MySQL. Bezporednie zapytania do bazy danych mog utworzy raport o stanie danych w tabelach Joomla!. Przykadowo Joomla! nie pozwala stworzy listy artykuw, dla ktrych nie ustawiono metadanych, i z tego powodu s kiepsko indeksowane przez roboty internetowe. Aby sprawdzi, ktrych pozycji dotyczy taki problem, wystarczy wykona zapytanie wzgldem tabeli jos_content i wywietli wszystkie artykuy, dla ktrych pole metadesc jest puste. Zaznacz baz danych Joomla! w programie MySQL Administrator, a nastpnie kliknij prawym przyciskiem pozycj jos_content. Wybierz opcj Edit Table Data z menu kontekstowego, jak zilustrowano to na rysunku 2.13. Zostanie wywietlone okno z zawartoci wybranej tabeli. Zauwa, e w grnej czci okna znajduje si zapytanie, ktre zostao wykonane:
SELECT * FROM "joomla".~jos_content'

Jest to zapytanie, ktre spowoduje pobranie wszystkich rekordw nalecych do tabeli jos_content. Moesz skorzysta z klauzuli WHERE, aby w prosty sposb ograniczy pobierane rekordy. Ponisze zapytanie zwrci tylko te rekordy, dla ktrych pole metadesc jest puste:
SELECT * FROM 'joomla".~jos_content~ WHERE metadesc = ""

Kliknicie przycisku Execute spowoduje wykonanie zapytania, a w oknie pojawi si tylko te rekordy, dla ktrych nie ustawiono metadanych. W menu File znajduje si opcja eksportu do pliku. Do wyboru jest kilka formatw (np. XML, HTML, CSV i Excel). Raport utworzony w ten sposb moesz wykorzysta jako list wpisw do poprawienia.

Rozdzia 2. Szczegy instalacji i konfiguracji


lysunek 2.13.
Wybierz opcj '.dit Table Data r menu kontekstowego
Schema Tables Schema Indices Views Stored proceduies

57

|oomla15 All tables of the joornla15 schema Table Name jos_banner jos_bannerclient jos_bannertrack jos_categories jos_components |os_contact_details Edit Table
-

Engine Myl SAM Myl SAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM

Rows 8 1 0 22 32 1
'' 5 0

Data length 1.3 kB 76 B OB 17 kB 3.9 kB 580 B

Index len... 4 kB 2 kB 1 kB 5 kB 3 kB 3 kB

Update time 2808-10-29 23:22:42 2008-10-29 23:22:42 2008-18-28 23:16:34 2008-10-29 23:22:42 2008-18-29 23:22:42 2008-10-29 23:22:42 2008-10-29 23:22:42 2008-10-29 23:16:36 2008-10-29 23:22:42 2008-10-29 23:22:42 2008-10-29 23:16:36 2008-18-28 23:22:42 2008-10-29 23:22:42 2008-10-29 23:16:36 2008-10-29 23:16:36 2003-10-29 23:22:42 2008-10-29 23:22:42
V

"

45 B OB 32 B 464 B OB 24 B 20 B OB OB 60 B 11,3 kB

2 kB 1 kB 4 kB 4 kB 1 kB 4 kB 3 kB 1 kB 1 kB 2 kB 4 kB

''

Maintenance Create Table

1 11
0 1

"""""

: :

Drop Table Refresh

'

l',C0re_aCLnfcup

1
0 0

ios_core_log_items jos_co(e_log_search.. |os_groups os_menu

3 23

Details >>

I Create Table j

Edit Table

j Maintenance J

Refresh

lesetowanie hasa uytkownika MySQL


aden uytkownik poza administratorem nie powinien mie dostpu do tabeli uytkownikw, w ktrej przechowywane s informacje na temat uytkownikw i ich uprawnie. Dostp do tej tabeli oznacza w zasadzie kontrol nad caym systemem. Jeli jeste administratorem Joomla! i od duszego czasu nie korzystae bezporednio z MySQL, moe zdarzy Ci si kopotliwa sytuacja, kiedy zapomnisz hasa dostpu do MySQL. W systemie MySQL nie jest moliwe odzyskanie zapomnianego hasa. Ale mona je zresetowa. Przedstawiona poniej metoda dziaa take dla kont administratora i roota, dlatego korzystaj z niej tylko na serwerach, do ktrych masz uprawniony dostp. Utwrz plik tekstowy, wprowad do niego ponisz lini i zapisz plik pod nazw resetpwd. txt w gwnym katalogu:
SET PASSWORD FOR ' r o o t l o c a l host' - PASSW0RD('haso');

W przypadku Linuksa, aby zresetowa haso, uruchom nastpujce polecenie:


mysq1_safe -init-file = -/resetpwd.txt &

W systemie Windows komenda powinna brzmie:


C:\mysql\bi n\mysqld-nt - i ni t-file=C:\resetpwd.txt

Usu plik resetpwd.txt po zresetowaniu hasa. Nierozwane jest pozostawienie na dysku rzeczy potencjalnie niebezpiecznej, ktra potem w jaki sposb moe zosta wykorzystana przez hakera.

58

Joomla!. Profesjonalne tworzenie stron WWW

Konfiguracja Joomla!
Prawdopodobnie potrafisz ju skonfigurowa Joomla! wedug potrzeb. Moliwe jednak, e przeoczye mniej oczywiste funkcje, ktre potrafi znaczco wpyn na sprawne dziaanie systemu. Jeli instalacja Joomla! sprawia Ci kopot, skopiuj po prostu pliki i upewnij si, e gwny 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
Twrcy Joomla! zalecaj wprowadzanie wszystkich zmian w konfiguracji z poziomu interfejsu administratora. Bezporednia manipulacja pliku configuration.php moe mie jednak swoje zalety. Przykadowo jeli zarzdzasz wieloma stronami Joomla! i potrzebujesz wprowadzi dan zmian w kilku plikach, rozwizaniem moe okaza si napisanie makra. Rczne modyfikacje z uyciem interfejsu graficznego byyby w takim przypadku mczce. Gwna konfiguracja systemu Joomla! znajduje si w pliku configuration.php. Wszystkie ustawienia przechowywane s wewntrz klasy PHP o nazwie JConfig. Jeli otworzysz plik konfiguracyjny w edytorze tekstu, zauwaysz, e na pocztku znajduje si definicja klasy:
class JConfig {

Plik zosta podzielony na rne czci. Site Settings (ustawienia strony) to pierwsza grupa parametrw, przypominajca ponisz list:
/* Site Settings */
var Soffline = '0' ; var $offlinejnessage 'This site is down for maintence.<br /> Please check back again soon.1 ;

var $sitename = 'Joomla!1:


var Seditor = 'tinymce' : var listjimit = '20' : var legacy = '0';

// Name of Joomla site

Zwr uwag, e przedstawiony plik pochodzi z domylnej instalacji. U Ciebie wartoci powinny odpowiada wprowadzonym ustawieniom. Sekcja Database (ustawienia bazy danych) wyglda podobnie, jak to przedstawiono poniszej:
var dbtype = 'mysql': var $host - 'localhost':

var $user = '':

// MySQL usemame

var password = 1': var $db = 1': var idbprefix = 'jos_';

Rozdzia 2. Szczegy instalacji i konfiguracji


S e k c j a Server Settings ( u s t a w i e n i a s e r w e r a ) : // Change this to something more secure var Ssecret = 'FBVtigI151ApEU4H'; var $gzip = 'O': var ilifetime = '900': // Session timeout var $error_reporting = '-l': var Shelpurl = 'http://help.joomla.org': var $xmlrpc_server = 'O'; var $ftp_host = 'O'; var Sftp_port = 'O'; var Sftp_user = ''; var $ftp_pass = " ; var $ftp_root = '': var $ftp_enable = ''; var $tmp_path = '/tmp'; var $log_path = '/var/logs'; S e k c j a Locale Settings ( u s t a w i e n i a j z y k a ) : var var var var var var $lang_site = 'en-GB'; $lang_administrator = 'en-GB'; Slanguage = 'en-GB'; $lang = 'english'; Soffset = '0'; Soffset user = '0';

59

value

S e k c j a Mail Settings ( u s t a w i e n i a p o c z t y ) : var var var var var var var var Smaller = Smailfrom Sfromname Ssendmail Ssmtpauth Ssmtpuser Ssmtppass smtphost mai I = = = /usr/sbin/sendmail = 0' ; = = = local host'

S e k c j a Cache Settings ( u s t a w i e n i a p a m i c i p o d r c z n e j ) : var var var var Scaching = '0'; Scaching_tmpl = 'O'; Scaching_page = '0'; Scachetime = '900':

S e k c j a Debug Settings ( u s t a w i e n i a d i a g n o s t y k i ) : var Sdebug = '0'; var $debug_db = 'O': var Sdebugjang = 'O': S e k c j a Meta Settings ( m e t a d a n e ) : var var var var SMetaDesc 'Joomla! - the dynamie portal engine': SMetaKeys = 'joomla. Joomla'; SMetaTitle = 'l'; SMetaAuthor = 'l';

60

Joomla!. Profesjonalne tworzenie stron WWW


Sekcja Statistics Settings (ustawienia statystyk):
var $enable_stats - 'O' : var $enab1e_log_items = 'O': var $enable_log_searches = 'O';

Sekcja Search-Engine-Opt~imization (SEO) Settings (ustawienia opcji poprawiajcych pozycjonowanie):


var $sef - '0';

Sekcja Feed Settings (ustawienia RSS):


var $feed_limit = 10: var $feed_summary = 0:
} ?>

Zawsze twrz kopi zapasow pliku konfiguracyjnego przed wprowadzaniem jakichkolwiek zmian. Jeli nowe ustawienia oka si bdne, bdziesz mg wrci do poprzednich, zastpujc plik konfiguracyjny kopi bezpieczestwa. Nie zapisuj kopii bezpieczestwa w tym samym folderze, w ktrym przechowywany jest eonfiguration.php. Jeli nazwiesz kopi przykadowo configuration.backup", haker moe wpisa adres URL odwoujcy si do tego pliku, a poniewa serwer WWW nie rozpozna typu pliku, jego zawarto zostanie wywietlona na ekranie hakera ujawniajc przy okazji kluczowe informacje.

Resetowanie hasa uytkownika Joomla!


Hasa s czsto zapominane przez uytkownikw, ale za porednictwem interfejsu administratora mona je zresetowa. Jeli jednak zdarzyo Ci si kiedy zapomnie hasa administratora, na pewno znasz frustrujce uczucie bycia odcitym od wasnego systemu. Podczas pisania tej ksiki sam znalazem si w podobnej sytuacji, kiedy w wyniku awarii dysku utraciem losowo utworzone haso zapisane w pliku. Nie musz chyba dodawa, e nie pamitaem tego hasa. Kade haso w systemie Joomla! zapisywane jest jako skrt stworzony za pomoc algorytmu MD5, co uniemoliwia jego odzyskanie. Moesz jednak zresetowa haso poprzez bezporedni modyfikacj tabeli zawierajcej dane uytkownikw Joomla!. Message-Digest 5 (MD5) jest algorytmem z dziedziny kryptografii, ktty na podstawie pobranego cigu znakw generuje skrt okrelonej dugoci. Zosta! opisany jako standard internetowy w RFC 1321. Skrt zapisywany jest w postaci 128-bitowego cigu (32 liczby heksadecymalne). Zaoeniem algorytmw tego typu jest, e minimalna zmiana danych wejciowych (np. dodanie jednej litery) znaczco zmienia cay skrt. Wykorzystanie skrtu jest z reguy bezpieczne, poniewa potrzeba ogromnej iloci oblicze, aby odzyska dane wejciowe. Istniej jednak bezpieczniejsze algorytmy (takie jak SHA-1), ktre mog zosta wykorzystane w Joomla! w przyszoci.

Rozdzia 2. Szczegy instalacji i konfiguracji

61

Uruchom aplikacj M y S Q L Administrator lub inn aplikacj online, np. phpMyAdmin. W obu przypadkach procedura jest podobna. W programie MySQL Administrator wybierz tabel jos users w bazie Joomla!. Zwr uwag, e dostp do poprawnie zabezpieczonej bazy danych, czyli take do tabeli jos users, wymaga posiadania uprawnie administratora lub roota. Jeli nie masz wymaganych uprawnie, popro administratora systemu, aby zresetowa Twoje haso (jeli zdarzyo Ci si je zapomnie) lub nadal niezbdne uprawnienia. Po klikniciu prawym przyciskiem pojawi si menu kontekstowe zawierajce opcj Edit Table Data, jak zilustrowano to na rysunku 2.14. ysunek 2.14.
'o klikniciu irawym przyciskiem os_users wybierz menu opcj dit Table Data
Schema Tables Schema Indices Views Stored procedures

.:

joomlal 5 All tables of the joomlal 5 schema Engine MjjISAM MylSAM Myl SAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM MylSAM Rows 6 0 0 0 41 33 8 32 1 12 11 0 3 1 8 2 Data length 352 B OB OB OB 6,8 kB 237 B 1,1 kB 2,6 kB 60 B 320 B 275 B OB 400 B 1,5 kB OB 40 B Index len.. 3 kB 1 kB 1 kB 1 kB 4 kB 2 kB 4 kB 3 kB 2 kB 3 kB 3 kB 1 kB 3 kB 5 kB 1 kB 3 kB 3 kB Update time 2088-10-23 23:22:42 2008-10-29 23:18:36 2008-10-29 23:16:36 2008-10-29 23:16:36 2008-10-29 23:22:42 2008-10-29 23:22:42 2008-10-29 23:22:42 2008-10-28 23:22:42 2808-10-29 23:22:42 2008-10-28 23:22:42 2008-10-28 23:22:42 2808-10-29 23:16:36 2808-10-28 23:22:42 2008-18-28 23:22:42 2008-18-28 23:16:36 2008-18-29 23:22:42 11 P 1 r M 1 i 1 rM 2008-18-29 23:22:42 v
A

Table Name ios_menuJypes jos_messages jos_messages_cfg |os_migration_backli... ios^modules jos_modules_menu jos_newsfeeds ios_plugins jos_polls jos_poll_data |os_poll_date ios_pollj"nenu jos_sections |os_session jos_stats_agents

I i L

|os_templates_menu MylSAM 11 1 WI' TMBBF*1*1* . |os_weblinks

^ ilHMWII 1
792 B

l'B^Hi

Edit Table m m m m h m m > Maintenance Create Table Drop Table

W rezultacie powinno pojawi si okno edytora tabeli z wywietlon aktualn list uytkownikw Joomla!. W moim przypadku musiaem zresetowa haso administratora, dlatego wyszukaem wiersz, dla ktrego pole username (nazwa uytkownika") odpowiadao wartoci admin. Przewi zawarto okna w prawo, dopki nie pojawi si kolumna oznaczona password, w ktrej umieszczone s skrty hase. Wybierz pole, ktrego warto chcesz zmieni, a nastpnie, jeli korzystasz z systemu Windows, nacinij klawisz F2. Wprowad teraz skrt MD5 nowego hasa. Poniszy skrt odpowiada sowu haso" 4 :
207023ccb44feb4d7dadca005ce29a64

Po wprowadzeniu tego dugiego tekstu kliknij zakadk Apply Changes na dole okna, jak przedstawiono to na rysunku 2.15.

Pisanemu bez polskich znakw! p r z y p . tum.

62

Joomla!. Profesjonalne tworzenie stron WWW


r a ^ a t a i W l H P W i K W ! ^ Plik Edycja Widok Zapytanie Skrypt ' Narzdzia FROH Okno Pomoc . j t \ j

Rysunek 2.15.
Wprowad znany skrt MD5 i zapisz zmiany w tabeli

SELEiT Odwie O Wynik 1

jooinlallS

Schemata password use . i cdcol information_schema joomldl 5 jos_banner jos_bannerclient : |os_bannertrack : |os_calegories i jos_components jos_contact_details |os_content a jos_content_frontpage a :

omlaJ umpstarl.com

Skadnia Data Definition Statements Data Manipulation Statements MySQL Utility Statements MySQL Transactional and Locking ... Database Administration Statements ; Replication Statements SQL Syntax for Prepared Statements

> 1 row fetched in 0,0132 Si t # Edycja P Znajd

Moesz teraz zalogowa si na konto, dla ktrego zmieniae haso, wprowadzajc sowo haso" jako haso. Niezwocznie zmie haso na bezpieczniejsze. Jeli nie masz dostpu do programu MySQL Administrator lub wolisz korzysta z tekstowego interfejsu MySQL, uyj poniszej komendy:
UPDATE josjjsers SET password^207023ccb44feb4d7dadca005ce29a64' WHERE name='admin';

Zwr uwag, by w miejsce admin wstawi odpowiedni nazw uytkownika. Ten kod zamieni aktualne haso na haso". Moesz teraz dostrzec, jak proste byoby da hakera wamanie do systemu Joomla!. Dlatego kluczowe jest zabezpieczenie instalacji MySQL. Wykorzystaj wskazwki i sugestie zawarte w rozdziale 14.

Serwer testowy a serwer produkcyjny


W tym rozdziale przedstawiono ogln konfiguracj systemu. Naley jednak pamita, e rne rodowiska powinny mie rne ustawienia. Podczas wstpnego tworzenia strony i dalszej pracy nad jej rozwojem powiniene korzysta z serwera testowego, na ktrym moesz instalowa dowolne rozszerzenia i wprowadza znaczce zmiany. Na takim serwerze powinno by take wczone wywietlanie wszystkich komunikatw systemowych, co pozwala na szybkie rozwizywanie problemw. Serwer testowy jest zazwyczaj sabo zabezpieczony, aby nie utrudnia dostpu i testowania.

Rozdzia 2. Szczegy instalacji i konfiguracji

63

Po ukoczeniu prac nad stron powiniene j przenie na serwer produkcyjny (zwany take serwerem wdroeniowym). Moe by to zdalny serwer WWW (oferowany np. przez SiteGround.com) lub inna maszyna, ktra zostaa odpowiednio zabezpieczona. W rodowisku testowym wane jest wywietlanie jak najwikszej iloci informacji, dokadnych komunikatw o bdach, monitorowanie wydajnoci i prb dostpu. Wczenie tych opcji negatywnie wpywa na wydajno systemu, poniewa powoduje zuycie dodatkowych zasobw. Dlatego ich stosowanie nie jest zalecane w rodowisku produkcyjnym. Wszystkie komunikaty systemu w rodowisku produkcyjnym powinny by przechowywane w ukryciu, poniewa ich ujawnianie uatwi hakerowi wamanie. Jeli pracujesz na platformie Windows, moesz wykorzysta dedykowane rozwizanie do testowania stron opartych na Joomla!. Joomla Standalone Server (JSAS) to poczenie serwera Apache, PHP, MySQL i Joomla!, ktre nie wymaga praktycznie adnej konfiguracji. Dodatkowo moliwe jest jednoczesne uruchamianie kilku stron na jednej maszynie i zarzdzanie nimi z poziomu pojedynczego interfejsu. JSAS moesz pobra zjsas.joomlasolutions.com.

Istawienia serwera testowego


Joomla! nie posiada trybu usuwania bdw z prawdziwego zdarzenia, dlatego rozwizywanie problemw sprowadza si do analizy komunikatu systemu, umieszczania wasnych komunikatw (za pomoc instrukcji PHP echo) w kluczowych miejscach w kodzie, a take badania treci dziennika bdw. Zanim strona zostanie upubliczniona, jest poddawana testom w rodowisku, w ktrym wczono wywietlanie komunikatw systemu. Nastpnie strona przenoszona jest na serwer jego konfiguracja blokuje pokazywanie informacji diagnostycznych, ktre ograniczaj wydajno i mog stanowi zagroenie w przypadku wykorzystania przez hakerw. Podobnie jak wikszo aplikacji PHP, praca nad Joomla! sprowadza si do zasady: wprowad zmian, odwie stron, popraw, sprbuj ponownie. Dodatkowe informacje dostarczane przez system uatwiaj zlokalizowanie i usunicie przyczyny problemu, jeli taki wystpi. Komunikaty o bdach (pod warunkiem e odzwierciedlaj rdo problemu) s prawdopodobnie najbardziej uytecznym narzdziem podczas usuwania bdw w aplikacji Joomla!. Komunikaty PHP s w tym wypadku szczeglnie pomocne, poniewa nie tylko informuj o problemie, ale take podaj nazw pliku i numer linii, w ktrej wystpi. Typowy komunikat o bdzie w kodzie komponentu wyglda tak:
Notice: Use ot undefined constant kasjda - assumed 'kasjda' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\components\com_content\content.php on line 32

Serwery WWW (zarwno Apache, jak i Microsoft Internet Information Server) przechowuj dokadne informacje na temat wystpujcych problemw w dzienniku bdw. Analiza pliku dziennika moe okaza si niesamowicie przydatna w rozwizywaniu nie tylko duych problemw, ktre blokuj dziaanie strony, lecz take mniejszych, ktre czsto pozostaj niezauwaone. Przykadowo gosowanie w sondzie powinno zakoczy si zapisaniem oddanego gosu w odpowiedniej tabeli. Jeli wystpi bd, poniewa nie istnieje tabela o danej

64

Joomla!. Profesjonalne tworzenie stron WWW


nazwie, aden komunikat nie zostanie wywietlony. Dziennik bdw zawiera jednak informacj, e instrukcja SQL Insert zakoczya si niepowodzeniem. Dziki analizie dziennika moesz poprawi take mae bdy.

Ustawienia serwera produkcyjnego


Po zakoczeniu konfiguracji i testw systemu Joomla! zechcesz pewnie upubliczni swoj stron w internecie. Zaoenia rodowiska produkcyjnego, ktre wykorzystuje si do tego celu, rni si diametralnie od tych dla serwera testowego. Gwnym zmartwieniem jest w tym przypadku bezpieczestwo i wydajno. Wiele ustawie, ktre s pomocne w usuwaniu bdw, moe jednoczenie zdradzi informacje przydatne podczas ataku na system Joomla!. Dodatkowo konfiguracja pod ktem diagnozowania i rozwizywania problemw spowalnia cay system. Ograniczenie liczby komunikatw diagnostycznych prowadzi do znaczcego wzrostu wydajnoci.

Domylne hasa wbudowanych kont


Czsto pierwsz czynnoci wykonywan przez hakera podczas ataku jest sprawdzenie, czy wbudowane konta nie maj ustawionych domylnych hase. Dlatego powiniene regularnie zmienia hasa wszystkich wbudowanych kont. Ponisze serwery maj wbudowane konta: MySQL Konto root przeznaczone jest dla superadministratora systemu. Domylnie w przypadku wielu instalacji haso tego konta jest puste. Upewnij si, e zmienie domylne haso. Warto take rozway utworzenie innego konta dla superadministratora i ograniczenie praw konta root.

U Joomla! Domylne konto superadministratora Joomla! nosi nazw admin. Dziki zmianie tej nazwy, np. na jadmin, haker w pierwszym odruchu nie zdobdzie poowy danych niezbdnych do zalogowania si na konto administratora. Domylna instalacja MySQL jest dobrze zabezpieczona. Powiniene zmieni jak najwicej domylnych ustawie dostpu (np. port dziaania MySQL), co uniemoliwi hakerowi zgadnicie (na podstawie najczstszych wartoci) czci informacji niezbdnych do penetracji systemu.
Wszystkie przykadowe hasa wykorzystane w tej ksice powinny zosta zmienione. Materiay zawarte w tej ksice s dostpne dla kadego, kto j kupi. Nazwy kont i hasa umieszczone w tej ksice mog zosta dodane przez hakera do sownika, ktry zostanie wykorzystany do zautomatyzowanego ataku na hasa. Zmie wszystkie hasa pochodzce z tej ksiki, zanim zdecydujesz si upubliczni stron.

Komunikaty o bdach dostarczaj wskazwek na temat wewntrznej struktury strony WWW, wczajc w to nazwy folderw, baz danych, tabel itd. Podczas gdy informacje diagnostyczne maj kluczowe znaczenie w rodowisku testowym, na serwerze produkcyjnym mog pomc hakerowi wama si do systemu. Dlatego zawsze sprawdzaj, czy wywietlanie komunikatw o bdach zostao ograniczone w rodowisku produkcyjnym.

Rozdzia 2. Szczegy instalacji i konfiguracji

65

odsumowanie
Instalacja i konfiguracja Joomla! wydaje si prosta, dopki nie natrafi si na problemy. W tym rozdziale opisano sposoby instalacji i konfiguracji Joomla!, a w szczeglnoci: Opcje konfiguracyjne serwera Apache w pliku httpd.conf, a take dyrektywy, dziki ktrym mona usprawni dziaanie Joomla!. Sposoby na popraw wydajnoci serwera przez zmian ustawie zgaszania i zapisywania komunikatw systemowych. Dziki zwikszeniu liczby komunikatw moesz atwiej zdiagnozowa rda obecnych i potencjalnych problemw. Udoskonalanie konfiguracji PHP przez zmian ustawie w pliku PHP.ini. Odpowiednie zmiany mog zapobiec przekroczeniom limitu czasu, a take udoskonali zabezpieczenia. Obszerny proces instalacji MySQL, wczajc w to bezporedni manipulacj baz danych, co daje szerokie moliwoci, od tworzenia raportw, po resetowanie hase. Zastosowanie serwera testowego, co uatwia dokadne sprawdzenie i usunicie bdw strony Joomla! bez koniecznoci publikacji w internecie oraz pozwala unikn zwizanych z tym zagroe. Migracj ze rodowiska testowego do rodowiska produkcyjnego.

Waciwa, drobiazgowa konfiguracja strony Joomla! nie sprowadza si wycznie do ustawienia serwera pod ktem wydajnoci. Wizerunek profesjonalnego i solidnego portalu wymaga take waciwego wygldu. W rozdziale 3. dowiesz si, jak samodzielnie wykona atrakcyjny szablon, ktry moe suy za wzorzec dla kolejnych, ktre stworzysz w przyszoci.

66

Joomla!. Profesjonalne tworzenie stron WWW

3
Tworzenie wasnych szablonw
Moliwo wykorzystania szablonw jest jednym z kluczowych powodw, dla ktrych Joomla! jest tak popularny na wiecie. Stron, ktrej wygld zasuguje na okrelenie mierny", mona w cigu piciu minut zmieni w imponujc witryn dziki profesjonalnym szablonom. Kwitncy rynek szablonw jest jednym z kluczowych segmentw dziaalnoci zwizanej z Joomla!. Wiele stron wykorzystuje model miesicznej subskrypcji, podczas ktrej klient moe pobiera dowolne szablony bdce w ofercie. Taki model gwarantuje zapotrzebowanie na nowe szablony, ktre su utrzymaniu zainteresowania abonentw. W tym rozdziale dowiesz si, jak od podstaw stworzy szablon, a pniej wykorzysta arkusze stylw, aby wprowadzi zoony ukad strony. Wikszo darmowych szablonw opiera si na jednej podstronie, ktra wykorzystywana jest na caej witrynie. Poznasz sposoby tworzenia grup szablonw, dziki czemu nadasz swoim stronom profesjonalny wygld, a zastosowanie arkuszy stylw pozwoli Ci ksztatowa spjny wizerunek lub mark strony internetowej. Zanim zaczniesz tworzy szablony, warto przyjrze si ich strukturze. Dokadne zrozumienie tego zagadnienia uatwi Ci projektowanie wasnych i edycj istniejcych, poniewa struktura szablonu nie rni si znaczco w poszczeglnych przypadkach.

Struktura szablonu
Szablony Joomla! mog skada si z dowolnej liczby plikw i folderw, chocia zastosowanie si do przyjtych norm pozwala jednakowo postpowa z kadym szablonem. Dziki temu mona zmieni wygld i zewntrzn funkcjonalno strony Joomla!, wybierajc po prostu inny szablon. Dopki zawiera on miejsce na wywietlenie komponentu, a take kilka typowych pozycji moduw, mona wykorzystywa go zamiennie z innymi. Z tego powodu musisz wiedzie, jakie foldery powinien zawiera szablon (czsto jest s do dwa foldery \css i 1 image), a take jakie pliki (index.php, template.css i templadeDetails.xml), aby mona byo z niego poprawnie i bezproblemowo skorzysta. Istnieje te grupa nieobowizkowych plikw (parameters.ini i template thumbnail.png), ktre uatwiaj zarzdzanie

68

Joomla!. Profesjonalne tworzenie stron WWW


szablonem. Poniewa Twoje dotychczasowe dowiadczenia mog ogranicza si wycznie do perspektywy uytkownika szablonw, zaczniemy od oglnej organizacji szablonu Joomla!.

Pliki i foldery
Wszystkie szablony instalowanie na stronie Joomla! s zapisywane w katalogu \templates, ktry znajduje si wewntrz gwnego katalogu strony Joomla!. Folder 1 templates zawiera po jednym podkatalogu dla kadego zainstalowanego w systemie szablonu. Nazwa folderu musi dokadnie zgadza si z nazw szablonu, take pod wzgldem wielkoci liter. Przykadowo szablon rhukjnilkyway musi znajdowa si w folderze \rhuk milky way. Cho jest moliwe, by tylko jeden plik stanowi cay szablon (index.php), to nawet najprostsze z nich skadaj si przynajmniej z czterech plikw (index.php, template.ess, templateDetails.xml i banner jpg). Wikszo opiera si jednak na liczniejszej grupie plikw, np. dodatkowych arkuszach stylw i obrazkach, pomocniczej grafice (sucej do tworzenia zaokrglonych rogw, elementw oddzielajcych itd.). Kademu gwnemu plikowi przypisano oddzieln funkcj: index.php Zawiera logik szablonu, miejsce na wywietlenie komponentu i moduw. W tym pliku czsto znajduje si take odwoanie do skryptw JavaScript, wzbogacajcych funkcjonalno strony. Niestety, wiele szablonw umieszcza w tym pliku te informacje o ukadzie, np. wielokolumnowe tabele, obrazki i formatowanie tekstu. Waciwym miejscem dla definicji ukadu i wygldu s arkusze stylw. template.ess Okrela krj pisma1, kolory, pozycjonowanie, obrazki i inne aspekty warstwy prezentacji danego szablonu. Poniewa wszystkie gwne przegldarki obsuguj technologi CSS, arkusz stylw umieszczony w tym pliku pozwala zdefiniowa praktycznie kady aspekt, od ukadu kolumn, po formatowanie list. templateDetails.xml Przechowuje metadane na temat szablonu, ktre wykorzystywane s podczas instalacji, a take zarzdzania w interfejsie administracyjnym Joomla!. Zapisano w nim list wszystkich plikw, z ktrych skada si szablon, informacje o autorze i publikacji, a take parametry, ktre moe zmienia za pomoc interfejsu administratora. banner.fff Chocia nie jest absolutnie wymagana, wikszo szablonw zawiera graficzn form nagwka banner, ktra nadaje charakter szablonowi. W przypadku komercyjnych szablonw ich konstrukcja umoliwia wykorzystanie w ich miejsce logo, znaku handlowego lub nazwy strony, co sprawia, e strona wyglda jakby bya projektowana na zamwienie. Banner zapisywany jest zazwyczaj w formacie JPG lub PNG (co odpowiada rozszerzeniom jpg i png w miejsce f f f podanego wyej). template.ess

Szablony zawieraj zazwyczaj dwa foldery, w ktrych umieszcza si pliki i banner.fff.

Zwany popularnie czcionkami komputerowymi przyp. tum.

Rozdzia 3. Tworzenie wasnych szablonw


U \css Zawiera jeden lub wicej plikw CSS, ktre s wykorzystywane w szablonie. Zazwyczaj umieszczony jest tutaj co najmniej plik template.ess. \images Przechowuje wszystkie pliki graficzne uyte w szablonie. To tutaj najprawdopodobniej zamieszczony zostanie plik banner.ff. W przypadku wikszoci szablonw umieszczono tutaj take mae pliki graficzne, ktre dopeniaj ukad strony.

69

Prawie wszystkie szablony Joomla!, ktre poznasz w przyszoci, zawieraj co najmniej te podstawowe foldery i pliki. Dziki zachowaniu opisanej wyej struktury szablony mona atwo wykorzysta w systemie Joomla!. W przeciwiestwie do moduw i komponentw, ktre trzeba instalowa w interfejsie administratora (dziki czemu niezbdne ustawienia zostan zapisane w bazie danych), aby wykorzysta szablon na stronie, wystarczy skopiowa go do folderu 1 templates. Szablony zawieraj czsto dwa dodatkowe foldery: 1 html Przechowuje pliki, ktre zmieniaj wygld dodatkw systemu Joomla!. Wicej informacji na ten temat znajdziesz w podrozdziale Modyfikacja wygldu dodatkw". \javascript Zawiera kod JavaScript wykorzystywany w szablonie.

Szablony dostpne s zazwyczaj w postaci archiwum .zip lub .tar, ktre zawiera pliki w odpowiednich podkatalogach. System Joomla! korzysta z biblioteki Zlib, aby rozpakowywa archiwa .zip, ktre dodano na stron za porednictwem opcji Instaluj Rozszerzenia. Wypakowane pliki i foldery umieszczane s w katalogu o nazwie odpowiadajcej nazwie szablonu. Najwaniejszym z tych plikw jest index.php, ktry przechowuje ca gwn logik szablonu.

.ogika szablonu: plik index.php


Plik index.php jest gwnym i jedynym wymaganym elementem szablonu Joomla!. Stanowi on kombinacj kodu HTML i PHP. Kod HTML zawiera gwnie elementy, ktre w poczeniu z arkuszami stylw tworz warstw prezentacji. W kodzie PHP umieszcza si odwoania do platformy Joomla!, aby wymagane treci pobrane z bazy danych umieci na stronie. Najprostszy plik index.php przypomina poniszy:
<html> <head> <jdoc:include type="head" /> </head> <body> <hl>Hello World!</hl> </body> </html>

Powyszy kod HTML nie jest raczej zgodny z wytycznymi standardu World Wide Web Consortium (W3C), ale spowoduje wywietlenie powitania Hello World!" 2 na stronie Joomla!.
Dosownie: Witaj, wiecie!", wywietlenie tej frazy stanowi w literaturze czsto pierwszy przykad wykorzystania danego narzdzia czy jzyka programowaniaprzyp. tum.

70

Joomla!. Profesjonalne tworzenie stron WWW


Zwr uwag, e ten podstawowy szablon nie wywietli adnej treci. Wywoanie funkcji Joomla! (w postaci znacznika <jdoc>) powoduje wstawienie informacji nagwkowych, jeli s one dostpne. W dalszej czci tego rozdziau dowiesz si, jak stworzy bardziej skomplikowany szablon, wywietlajcy kilka moduw i komponent. Powyszy szablon zosta maksymalnie ograniczony, aby mg zaobserwowa, ktre elementy stanowi wymagane minimum, niezbdne do poprawnego dziaania szablonu. Prawd mwic, usunicie dyrektywy Joomla! nie sprawi, e szablon przestanie dziaa. Warto jednak zapozna si z dyrektywami Joomla!, poniewa stanowi one o potdze szablonu.

Instrukcje Joomla!
Joomla! dziaa w oparciu o bezporednie wywoywanie kodu PHP, a aplikacja sama w sobie jest platform skadajc si z klas PHP. Poprzez odwoywanie si do obiektw Joomla!, takich jak JDocument i JDocumentHTML, moesz umieci w szablonie wynik dziaania moduw i komponentw, a take zdoby informacje na temat rodowiska, w ktrym uruchamiany jest kod.

Wykorzystanie obiektu JDocument


W podstawowym szablonie przedstawionym wczeniej umieszczono wywoanie metody include obiektu jdoc. Wikszo wywoa odnosi si do klasy JDocument (dostpnej za porednictwem obiektu jdoc). Widziae ju wykorzystanie metody include w szablonie Hello World!. Zostaa uruchomiona za pomoc poniszej instrukcji:
<jdoc:include type="head" />

Powyszy kod spowoduje uruchomienie metody, ktra zwrci informacje nagwkowe dla danej strony Joomla!. Moesz take wykorzysta wywoanie include do wywietlania komunikatw systemowych. Poniszy kod spowoduje wywietlenie komunikatw systemowych:
<jdoc:include type="message" />

Najczciej include wykorzystuje si do wstawienia kodu HTML moduu Joomla!. Przykadowo aby doczy wydruk moduu top (co powoduje zazwyczaj wywietlenie bannera strony), uyjesz poniszej instrukcji:
<jdoc:include type="modules" name="top" style="xhtml" />

Oprcz dyrektyw jdoc moesz wykorzysta take oglne polecenia PHP. PHP jest zaawansowanym jzykiem programowania, ktry ma bogate moliwoci od struktur sterujcych po programowanie obiektowe (OOP ang. object oriented programming). Jeli nie znasz PHP, ale rozumiesz oglne zasady programowania, powiniene poj wikszo przykadw przedstawionych w tej ksice. Mimo to polecam lektur Beginning PHP5 Apache and MySQL Web Development (Wiley, Indianapolis 2005), dziki ktrej zdobdziesz solidn wiedz na temat PHP.

Rozdzia 3. Tworzenie wasnych szablonw

71

W starszych wersjach Joomla! wykorzystywano w szablonach interpreter komend o nazwie patTempl ate jako uzupenienie dyrektyw Joomla!. W nowej wersji porzucono patTemplate, poniewa nauczenie si go wymagao dodatkowego czasu, a wykorzystanie ograniczao wydajno serwera. Zastpiono go kodem PHP, ktrego kompilacja pozwala osign jeszcze wysz wydajno pod warunkiem e nie korzysta si z dyrektyw Joomla!. Stare rozwizanie wymagao od programistw, oprcz nauki PHP, poznania take funkcji sterujcych interpretera (takich jak ptle).

korzystanie odwoania Sthis


Jedn z najczciej wykorzystywanych przez Ciebie dyrektyw PHP bdzie instrukcja $this. Instrukcja ta umoliwia odwoanie do obiektu, w zakresie ktrego uruchamiany jest kod. W przypadku szablonu Joomla! $this zawiera referencj do obiektu JDocumentHTML. Klasa JDocumentHTML zawiera kilka przydatnych pl. Przykadowo aby wywietli wybrany jzyk, naley wykorzysta warto pola language:
<?php echo $this->language; ?>

Poniej znajduje si lista pozostaych pl klasy JDocumentHTML, ktrych warto mona pobra za pomoc odwoania Sthis: di recti on Informuje o kierunku czytania, od prawej do lewej (przyjmuje warto Itr3), od prawej do lewej (przyjmuje warto rtl) itd. templ ate Okrela ciek dostpu do katalogu szablonu. titl e Przechowuje tytu dokumentu. descri pti on Zawiera opis dokumentu (z metadanych HTML). link Wskazuje adres URL dokumentu. 1 anguage Okrela jzyk dokumentu, np. angielski (przyjmuje wtedy warto en).

Klasa JDocumentHTML zawiera take kilka uytecznych metod, ktre mona wykorzysta podczas tworzenia szablonu. Za porednictwem operatora $thi s mona wywoa na przykad metod countModules(), dziki ktrej okrelisz liczb moduw na danej stronie. Aby pobra liczb wystpie pojedynczego moduu, naley wywoa metod, jak pokazano to poniej:
$this->countModules('userl');

Moesz wykorzysta t funkcj do zliczenia sumy wystpie kilku moduw:


$this->countModules('userl + user2'):

Moliwe jest take skorzystanie z operacji logicznych, takich jak:


$this->countModules('userl and user2'); $this->countModules('userl or user2');

Poniszy kod sprawdza, czy obszar top zawiera jakie moduy. Jeli tak, zostan one wywietlone, w przeciwnym razie zostanie wstawiony obrazek zastpczy (ang. placeholder).
' ang. left-to-right przyp. tum.

72

Joomla!. Profesjonalne tworzenie stron WWW


<?php if($this->countModules('top')) : ?> <jdoc:include type="modues" name="top" /> <?php else : ?> <img src='placeholder.gif1 /> <?php endif; ?>

P a r a m e t r y szablonu

System Joomla! umoliwia dodanie parametrw szablonu, ktre mona nastpnie ustawi w interfejsie administratora (wicej szczegw znajdziesz w podrozdziale Zmienne szablonu: plik parametrw"). Zmiana wartoci tych parametrw moe wpywa na wygld i funkcjonalno szablonu. Domylny szablon pozwala okreli, za pomoc parametru showComponent, czy Komponent ma by wywietlany na stronie. Wewntrz szablonu znajduje si kod, ktry odczytuje warto parametru, a nastpnie okrela, czy komponent zostanie wywietlony:
<?php if($this->params->get('showComponent')) <jdoc:include type="component" /> <?php endif; ?> : ?>

Pamitaj, e operator Sthis odwouje si do obiektu, w zakresie ktrego uruchamiany jest dany kod. Dlatego odwoanie Sthis w kodzie komponentu odnosi si do zupenie innego obiektu ni w przypadku szablonu. Aby zapobiec bezporedniemu uruchomieniu (szczeglnie przez hakerw) kodu Joomla! z pominiciem systemu, powiniene wstawi ponisz lini przed wprowadzeniem waciwego kodu PHP.
definedC'_JEXEC') or dieCBrak dostpu');

Powyszy kod sprawdza, czy staa _JEXEC zostaa zdefiniowana, w przeciwnym wypadku wywietli komunikat o braku dostpu i zakoczy uruchamianie kodu. Powysza instrukcja jest bardzo wana z punktu widzenia bezpieczestwa Joomla!. Zanotowano przypadki wama na strony Joomla! z wykorzystaniem stron zawierajcych kod PHP (takich jak pliki szablonw), ktre nie zawieray powyszej dyrektywy. P r y m i t y w n y index.php Prymitywny przykad wszystkich tematw poruszonych do tej pory wygldaby podobnie do poniszego:
<?php definedC ?> JEXEC') or dieCBrak dostpu');

<?xml version="1.0" encoding="utf-8"?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" > <head> <jdoc:include type="head" /> </head>

Rozdzia 3. Tworzenie wasnych szablonw


<body> <jdoc:include type="message" /> <hl>Hello World!</hl> <?php if($this->countModules('top')) : ?> <jdoc:include type="modules" name="top" /> <?php else : ?> <img src='placeholder.gif' /> <?php endif; ?> <?php if($this->params->get('showComponent')) : ?> <jdoc:include type="component" /> <?php endif; ?> </body> </html>

73

Powyszy kod rozpoczyna si sprawdzeniem, czy uruchamiany jest wewntrz platformy Joomla!. Jeli nie, wykonywanie zostaje przerwane. Nastpnie wartoci pl language i dir wprowadzane s do atrybutw znacznika <html >. W nagwku umieszczone zostaje odwoanie do informacji jdoc head. Tre dokumentu HTML rozpoczyna si wydrukiem komunikatw systemowych (ktre zazwyczaj nie wystpuj). Teraz, po wywietleniu powitania Hello World!", zostaje wywietlony modu dla pozycji top, o ile j okrelono. W przeciwnym wypadku wywietla si plik placeholder.gif. Ostatnim elementem powyszego kodu jest sprawdzenie wartoci parametru showComponent, i jeli zosta ustawiony na True, doczenie wydruku komponentu. Chocia kod w powyszej postaci nie zadziaa samodzielnie (do poprawnego funkcjonowanie wymagane jest przynajmniej stworzenie parametru showComponent), ale pozwoli Ci lepiej zrozumie struktur szablonu ni minimalny szablon Hello World! przedstawiony wczeniej.

ezentacja szablonu: plik CSS


Drugim najwaniejszym elementem po index.php jest plik CSS. Szablony mog wykorzystywa jeden lub wicej plikw CSS, aby okreli kolory, fonty i ich atrybuty, ktre zostan wykorzystane do wywietlania strony. Jeli dany szablon spenia Twoje potrzeby, ale chciaby, aby odnoniki byy koloru czerwonego zamiast zielonego, wystarczy tylko zmodyfikowa CSS. Wraz z wprowadzeniem wersji Joomla! 1.5 umoliwiono wykorzystywanie kilku plikw CSS, podczas gdy w starej wersji wszystkie style musiay znajdowa si w pojedynczym pliku. Celem programistw Joomla! byo (maksymalnie moliwe) oddzielenie warstwy prezentacji od logiki programu. Dziki wprowadzeniu jasnego podziau zmian wygldu i zewntrznej funkcjonalnoci strony mona przeprowadzi, wybierajc inny szablon, bez wpywu na kod odpowiadajcy np. za koszyk z zakupami lub zapisanie w bazie danych gosu w sondzie. Wan 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 niezbdne jest tylko odwoanie do pliku CSS, aby zastosowa okrelone w nim style. Do stworzenia skutecznego szablonu niezbdna jest moliwo dokadnego okrelenia pozycji elementw, ktre znajduj si na stronie. Za pomoc CSS mona wpywa na wygld moduw, okrela wzgldn pozycj, opywanie i odstpy. Dziki reguom i metodom dostpnym w arkuszach stylw jeste w stanie dopasowa wygld tekstu do swoich wymaga.

74

Joomla!. Profesjonalne tworzenie stron WWW


Podczas tworzenia arkusza stylw musisz wzi pod uwag, jak zostanie on zinterpretowany przez rne przegldarki. Na maszynie testowej powiniene mie zainstalowane przynajmniej dwa programy tego typu. Niezalenie od systemu operacyjnego jednym z nich powinna by przegldarka Mozilla Firefox. Jest to obecnie najpopularniejszy program spord tych, ktre dziaaj w wielu systemach operacyjnych. Nawet jeli nie korzystasz z systemu Windows, sprawd tworzon stron w programie Internet Explorer (najlepiej w wersji 6 i 7) na komputerze z Windowsem. Prawdopodobnie wikszo odwiedzajcych bdzie korzysta wanie z tej przegldarki. Regularnie sprawdzaj, jak wyglda Twj szablon w rnych przegldarkach, poniewa s one stale rozwijane. Szablon moe zawiera jeden lub kilka plikw CSS. Prawd mwic, nawet na pojedynczej stronie mona wykorzysta kilka plikw CSS. Jeli definicja stylu pokrywa si z inn, okrelon wczeniej w (tym samym lub innym) pliku CSS, zostanie wykorzystana ostatnia definicja, ktra zastpi wszystkie poprzednie.

Elementy blokowe i liniowe

W pliku CSS mona okrela styl dla dwch typw elementw: blokowych i liniowych. Element}' liniowe traktowane s jak zwyky tekst i nie wpywaj na ukad szablonu. Przykadem takich elementw s znaczniki <B>, <I> lub <SPAN>4. Elementy blokowe okrelaj konkretny obszar, np. z uyciem znacznikw <P>, <TR>, <DIV> lub <TABLE>. Podczas projektowania ' szablonu zwr uwag na odpowiedni dobr elementw. Odwoanie do pliku arkusza stylw wymaga wstawienia poniszych dwch linii w nagwek pliku index.php'.
<link rel="stylesheet" href="templates/_system/css/general .ess" type="text/css" /> <link rei"stylesheet" href="templates/<?php echo $this->template; ?>/css/template.css" type="text/css" />

Pierwsza linia powoduje doczenie podstawowych stylw systemu Joomla!. Okrelaj one wygld takich podstawowych elementw HTML, jak znacznik <body>. Druga linia odwouje si do gwnego pliku CSS dla danego szablonu (tradycyjnie ten plik nosi nazw template.ess).

Wbudowane style

Stworzenie poprawnego arkusza stylw, ktry mona nastpnie wykorzysta w Joomla!, wymaga odpowiednich nazw stylw. Style dla elementw takich jak komponenty zawieraj w swojej nazwie stosown informacj. Przykadowo wygld tytuu komponentu (zobacz rysunek 3.1) okrela si przez odwoanie do stylu componentheadi ng.

Jeli chciaby wywietli tytu szablonu z dolnym obramowaniem w kolorze biaym o szerokoci jednego piksela i z tekstem w kolorze czerwonym, powiniene umieci ponisz definicj stylu w pliku CSS:

W przypadku szablonw Joomla!, ktre s w gwnej mierze plikami XHTML, znaczniki naley pisa

maymi literami przyp. tum.

Rozdzia 3. Tworzenie wasnych szablonw


rsunek 3.1.
'ygld tytuu omponentu krel si 'zez odwoanie o stylu jmponent heading
id= " lo g_'

75

class="contentpaneopen"

J o o m l a !
class="pill" L '
Stiert litourf,: Fe.uier Hews I I ' Community

class="breadcrumbs

J?puli"

pclass="search" 1

.componentheading { 00101': red; border-bottom: lpx solid white;

Niektre style nie s wywietlanie na stronie, poniewa nie zostay zdefiniowane. Z tego powodu pozostaj niewidoczne. Dobrym przykadem jest styl article_separator. Poniewa wiele szablonw nie zawiera jego definicji, nie pojawia si on na stronie. Ponisza definicja spowoduje wywietlanie zielonego separatora o szerokoci dwch pikseli midzy kolejnymi artykuami:
,article_separator { margin: 10px 0: border: 2px solid #00FF00;

System Joomla! zawiera ogromn liczb stylw. Wiele z nich wykorzystywanych jest w szablonie doczonym w domylnej instalacji Joomla!. Na rysunku 3.1 przedstawiono domylny szablon wraz z zaznaczonymi poszczeglnymi stylami. Zwr uwag na miejsca, w ktrych s wykorzystywane. Wbudowane style mona podzieli na trzy gwne kategorie: tre, administracja i rozszerzenia. Do kategorii tre nale ponisze style:
article_separator author content_emai1 content_rating contet vote

76

Joomla!. Profesjonalne tworzenie stron WWW


contentdescription contentpagetitle contentpane contenttoc created-date intro title modifydate smali smalldark

Dla kategorii a d m i n i s t r a c j a m o n a o d w o y w a si d o n a s t p u j c y c h stylw: adminform cl r date input inputbox outline pagenav pagenavjiext pagenav_prev pagenavbar pagenavcounter pathway

Dla kategorii r o z s z e r z e n i a m o n a o d w o y w a si d o poniszych: bannerfooter bannergroup bannerheader banneritem blog blog_more blogsection button buttonheading

Rozdzia 3. Tworzenie wasnych szablonw


lastetnews loclink message metadata module newsfeed pollstableborder read searchintro sections sectiontable_footer sectiontableentry sectiontablefooter sectiontableheader sublevel wrapper

77

Nie musisz definiowa wszystkich wyej wymienionych stylw. Minimum w przypadku szablonu to zazwyczaj definicja stylu body, ktry okrela, jak zostanie wywietlony na stronie tekst, ktremu nie przypisano innego stylu. Definicja stylu body bdzie znajdowa si na samym pocztku pliku CSS i bdzie przypomina:
.body { font: 0.7em/l.5 Verdana. Arial, Helvetica, sans-serif;

}
Wykorzystanie stylu body pozwala na okrelenie fontu bez koniecznoci ingerencji w plik index.php, dziki czemu mona oddzieli warstw prezentacji, ktrej opis przechowywany jest w pliku arkusza stylw. Dobrym pomysem jest take odwoanie do obrazkw wycznie w ramach arkusza.

itawianie obrazkw w CSS


Wstawianie obrazkw w CSS moe okaza si uyteczne, cho take problematyczne. Powiniene unika tworzenia arkuszy, ktre s zbyt szczegowe, co nie pozwala na wykorzystanie ich dla dowolnych artykuw. Jednoczenie odwoania do kluczowych obrazkw warto umieci w pliku CSS. Dziki temu wszystkie odwoania skupiane s w jednym miejscu. Jeli przykadowo chcesz wstawi w miejsce starego nowy obrazek, poniewa wygld strony zosta zmieniony, poprawi trzeba wycznie jedno wystpienie w pliku CSS, przez co pojawi si on na wszystkich stronach w miejscu starego.

78

Joomla!. Profesjonalne tworzenie stron WWW

Waniejszym zagadnieniem jest jednak problem techniczny: wzgldny adres URL. Adres obrazka musi zosta okrelony tak, aby przegldarka bya w stanie znale waciwy obrazek. W przypadku szablonu katalog images znajduje si na tym samym poziomie co katalog css Dlatego, aby z poziomu arkusza stylw odwoa si do obrazka, trzeba skonstruowa ciek, ktra odwoa si do katalogu images, znajdujcego si poziom wyej:
background: url (.,/images/bottomleft.gif)

Metadane szablonu: plik lemplateDetails.xml

Kady szablon potrzebuje pliku z metadanymi, ktry zawiera podstawowe informacje o autorstwie (nazw szablonu, autora, prawa autorskie itd.), list plikw i ewentualne parametry, ktre mona okreli z poziomu interfejsu administratora.

Na listingu 3.1 przedstawiono przykadowy plik ze szczegami szablonu. Puste linie su do oddzielania czterech czci pliku.
Listing3.1. Standardowy plik ze szczegami skada si zazwyczaj z trzech sekcji: informacji o autorstwie, listy plikw i parametrw
<?xml version="l.0" encoding="utf-8"?> <instal 1 version="1.5" type="template"> <name>Szablon dwukolumnowy</name> <description> Dwie kolumny z uyciem CSS w wiecie Joomla! </description> <files> <fi1ename>i ndex.php</fi1ename> <fi1ename>templateDetai1s.xml</fi1ename> <fi 1 ename>images/LSlogo.jpg</fi1ename> <fi 1 ename>css/template.css</fi 1ename> </files> <positions> <posi t i on>left</posi ti on> <posi tion>right</positi on> </positions> <param name="showComponent" type="radio" default="l" label="Poka komponent" description="Poka/ukryj wydruk komponentu"> <option value="0">Nie</option> <opti on value="1">Tak</opt ion> </param> </install>

Pierwsza sekcja zawiera informacje o autorstwie szablonu. Poza sam nazw inne pola nie s wymagane. Jeli nie zostan okrelone, w interfejsie Joomla! pojawi si unknown zamiasi stosownej wartoci.

Rozdzia 3. Tworzenie wasnych szablonw

79

Druga cz pliku jest duo waniejsza, poniewa przedstawia list plikw, z ktrych skada si szablon. Lista wykorzystywana jest przez instalator do wypakowania plikw z archiwum i umieszczenia ich w odpowiednich folderach. Poza tym wykorzystywana jest wycznie podczas usuwania szablonu. Trzecia sekcja to lista moliwych pozycji moduw, ktre umieszczono w szablonie szablon. Zwr uwag, e s to tylko informacje dla uytkownika nie wpywaj na przypisanie pozycji w interfejsie administratora. Czwarta sekcja opisuje parametry wykorzystywane przez szablon. Parametry to zmienne wpywajce na dziaanie szablonu, ktrych warto mona ustawi z poziomu interfejsu administratora. Najczciej parametry wykorzystywane s do okrelenia opcji wpywajcych na prezentacje, np. kolor ta. Wartoci zapisywane s w pliku parametrw, ktry opisano w kolejnym podrozdziale.

lienne szablonu: plik parametrw


W pliku templateDetails.xml mona wstawi parametry szablonu, ktrych zmiana wpywa na funkcjonowanie szablonu. Domylny szablon Joomla! zawiera parametr showComponent, ktiy pozwala administratorowi na wyczenie wydruku komponentu (w ten sposb nie zostan wywietlone adne artykuy). Wartoci parametrw przechowywane s w plikuparams.ini, ktry znajduje si w gwnym katalogu danego szablonu. W przypadku szablonu domylnego zawiera on tylko jedn lini:
showComponent=l

Wartoci parametrw zapisywane s w formacie INI, dziki czemu plikiem mona manipulowa za pomoc zwykego edytora tekstowego. Najlepszym rozwizaniem jest jednak zmiana wartoci za pomoc opcji Szablony w interfejsie administratora, jak to przedstawiono na rysunku 3.2. Parametry szablonu wykorzystywane s najczciej do tego, aby umoliwi ustawianie opcji wpywajcych na prezentacj, takich jak schemat kolorw, liczba kolumn w ukadzie szablonu, szeroko kolumn itd. Dziki parametrom szablony staj si bardziej przyjazne uytkownikom, poniewa ingerencja w wygld nie wymaga rcznej edycji plikw. Warto parametrw mona odczyta w szablonie, wykorzystujc instrukcj analogiczn do $this->params->get( 'showComponent'), ktr zademonstrowano wczeniej w tym rozdziale. Dziki parametrom moesz nada szablonowi wiksz elastyczno.

afika szablonu: folder images


Wszystkie obrazki i grafiki wykorzystywane przez szablon powinny zosta umieszczone wewntrz katalogu images. Najczciej umieszcza si w nim gwny banner strony, graficzne przerywniki, obrazki zaokrglonych rogw, wasne znaki wypunktowania i strzaki wskazujce. Liczba plikw graficznych moe si znaczco rni w przypadku rnych szablonw.

80

Joomla!. Profesjonalne tworzenie stron WWW


www.JoomlaJ HMl
Pomoc "M Podgld 0 'S 1 ^ Wyloguj

Rysunek 3.2.
Moesz ustawi parametry szablonu, wybierajc go z listy w czci Szablony

[ Zmie ]

K
Podgld

u
Edytuj HTML.

u
Edytuj CSS Zapisz

y
Zastosuj

o
Zamknij

o
Pomoc,

< 5z.l>lon RHUK Milhyw.i\

Preferencje Parametr-Plik ltemplatesVhuk_milkyway\pararris.ini jest , ,-iprvy\v,-<tnv1 VV,w i.iif k o l o r y s t y c z n y Niebieski v v

Wariant t . Niebieski !( Brak - >Wybierz z listy Szeroko szablonu

Maksymalna szeroko V

Miniatura szablonu
W interfejsie administracyjnym, w czci Szablony po najechaniu kursorem myszy na nazw szablonu zostanie wywietlona w maym okienku jego przykadowa miniatura, o ile jest ona dostpna. W przypadku wikszoci szablonw miniatura przedstawia tylko gwny fragment strony, jak zilustrowano to na rysunku 3.3. Aby przyci niepotrzebne paski narzdzi, paski przewijania i inne niepotrzebne elementy, ktre nie s czci szablonu, moesz uy programu graficznego, np. aplikacji Adobe Photoshop lub darmowego GNU Image Manipulation Program, czyli w skrcie: GIMP (www.gimp.org). Rysunek 3.3.
Wielko pliku template_thumbn ail.png powinna wynosi okoo 200x150 pikseli

Miniatura powinna zosta zapisana pod nazw template thumbnail.png w gwnym katalogu danego szablonu. Zwr uwag, e musi to by gwny katalog, a nie podkatalog taki jak images. Aby stworzy miniatur, naley wykona zrzut ekranu, na ktrym wida Twj szablon, a nastpnie przyci go i zmniejszy do rozmiaru okoo 200x150 pikseli. Sposb wykonania zrzutu ekranu bdzie si rni w zalenoci od systemu operacyjnego.

Rozdzia 3. Tworzenie wasnych szablonw

81

W systemie Windows moesz wykorzysta klawisz Print Screen (czsto oznaczony na klawiaturze jako PrtSc), co spowoduje umieszczenie zrzutu ekranu w schowku. Wcinicie i przytrzymanie klawisza Alt, a nastpnie nacinicia klawisza Print Screen spowoduje skopiowanie zrzutu aktywnego okna, zamiast caego ekranu. Po tej operacji moesz wklei zawarto schowka do wybranego programu graficznego. Jeli tworzysz sporo szablonw, moesz rozway wykorzystanie komercyjnego programu do wykonywania zrzutw ekranw, 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 naciniciu klawiszy Shift+Apple+3. Aby zapisa tylko wybrany fragment ekranu, naley nacisn kombinacj Apple+Shift+4. Kursor przybierze ksztat krzya, co oznacza, e moesz zaznaczy fragment ekranu, ktrego zrzut zostanie wykonany. W systemie MacOS zawarto take narzdzie o nazwie Grab, ktre zawiera szereg opcji zwizanych z wykonywaniem zrzutw. Program mona znale w menu Applications/Utility. Dla Linuksa napisano wiele programw sucych do tworzenia zrzutw. Jeli korzystasz z interfejsu XWindows, moesz wykorzysta program xvidcap (http://sourceforge.net/project/ xvidcap/). Uytkownicy GTK+ mog uy programu Gsnapshot (http://sourceforge.net/ projet/gsnapshot). Po wykonaniu zrzutu ekranu naley skorzysta z programu graficznego, aby zmniejszy obraz do odpowiednich rozmiarw i zapisa go w formacie PNG. Gotow miniatur zapisz w gwnym katalogu swojego szablonu pod nazw templatejhumbnail.png. Od teraz miniatura szablonu bdzie automatycznie wywietlana w interfejsie administratora Joomla! po najechaniu kursorem myszy na nazw szablonu w czci Szablony.

worzenie trjkolumnowego ukadu


Szablony rzadko konstruuje si od podstaw. Wikszo projektantw wykorzystuje wzorzec do tworzenia nowych szablonw. W tym podrozdziale opisano tworzenie trjkolumnowego wzorcowego szablonu, ktry moesz wykorzysta jako podstaw wszystkich Twoich kolejnych prac. Do okrelenia ukadu elementw i ich wygldu wykorzystasz CSS. Jeli masz ju jakie dowiadczenia z t technologi, to zdajesz sobie spraw, e arkusze stylw s w rny sposb interpretowane przez rne przegldarki. Najbardziej znaczcym przykadem jest Internet Explorer 6, ktry zawiera bdn implementacj wielu podstawowych funkcji standardu CSS lub wcale jej nie ma. Z tego powodu twrcy Joomla! doczaj do swoich szablonw specjalny plik o nazwie ieonly.css5. Wraz z wydaniem Internet Explorera 7 wikszo problemw zostaa rozwizana, jednake program w wersji 6 bdzie jeszcze dugo wykorzystywany przez uytkownikw.

Tylko dla Internet Explorera" przyp. tum.

82

Joomla!. Profesjonalne tworzenie stron WWW


Dlatego jeli jaki fragment CSS nie dziaa poprawnie, prawdopodobnie niezbdny jest dodatkowy kod konieczny do zapewnenia kompatybilnoci z rnymi przegldarkami. W tej ksice staraem si umieci wystarczajco duo kodu CSS i opisu specjalnych przypadkw, aby zapewni jak najszersz kompatybilno z najpopularniejszymi przegldarkami. Jeli jednak Twj szablon jest niepoprawnie wywietlany w przegldarce, sugerowabym znalezienie fragmentu arkusza stylw, ktry powoduje problem, a nastpnie przeszukanie internetu pod ktem obejcia dla tego problemu (najczciej bdnej implementacji CSS). W ten sposb uda Ci si najprawdopodobniej rozwiza problem i dodatkowo poprawi kompatybilno wzorcowego szablonu. Jedn z poytecznych funkcji Joomla! jest moliwo wykorzystania kilku arkuszy stylw w jednym szablonie. Jeli szablon skada si wycznie z jednej strony i pojedynczego arkusza stylw, musi by on do wszystkiego". Jednak bdc projektantem, yczyby sobie raczej, eby rne podstrony wywietlane byy w odrobin inny sposb. Zamiast wykorzystywa kilka szablonw, mona wykorzysta jeden, ktry w zalenoci od potrzeb danej podstrony zmieni swj wygld dziki specjalnemu plikowi CSS. Jeli tworzysz nowe szablony lub poprawiasz wygld ju istniejcych, zalecane jest skorzystanie z rozszerzenia przegldarki, ktre pozwoli Ci na ywo" bada, a nawet modyfikowa arkusze stylw. W przypadku programu Firefox istnieje narzdzie o nazwie Firebug (https://addons.mozilla.org/en-US/firefox/addon/1843), ktre umoliwia diagnozowanie, edycj, a take monitorowanie kodu CSS i JavaScript interpretowanego przez przegldark. Dla Internet Explorera moesz znale na stronie Microsoftu (www.microsoft.com) Internet Explorer Developer Toolbar. To darmowe narzdzie pozwoli Ci przeglda i zmienia obiektowy model dokumentu (DOM), ustawia styl poszczeglnych elementw, sprawdza poprawno kodu CSS, a take wiele wicej.

Tworzenie struktury szablonu


Pierwszym krokiem podczas projektowania nowego szablonu jest utworzenie folderu, w ktrym zostanie umieszczony. Ja zawsze nadaj nazwom szablonw przedrostek tmpl, dziki temu, jeli znajdzie si w katalogu miscellaneous, bd wiedzia, e chodzi o szablon, a nie o modu lub inny element Joomla!. Poniewa masz zamiar stworzy szablon trjkolumnowy, rozwa nazwanie go tmplThreeCor, a nastpnie umie w katalogu templates systemu Joomla!. Jeli projektujesz szablon na serwerze testowym (zalecane) w rodowisku Windows, cieka dostpu do Twojego szablonu bdzie przypomina ponisz:
C:\Program Files\Apache Software Foundation\Apache 2.2\htdocs\templates\tmplThreeCol

Aby nie zajmowa si pniej przygotowaniami, utwrz od razu foldery css i images w katalogu szablonu. Do momentu ukoczenia szablonu znajdzie si w nich wiele plikw, arkusze stylw, grafiki pomocnicze, a take logo strony.

Z ang. szablon trj kolumnowy p r z y p . thun.

Rozdzia 3. Tworzenie wasnych szablonw

83

Potrzebujesz take podstawowy plik templateDetails.xml, aby mc przeprowadza testy w czasie tworzenia szablonu. Joomla! wykorzystuje ten plik, by zdoby informacje na temat szablonu, a take umoliwi jego wybr za pomoc opcji Szablony. Wprowad poniszy kod i zapisz go w pliku templateDetails.xml, w katalogu Twojego szablonu:
<?xml version="1.0" encoding="utf-8"?> <1nstal1 version"1.5" type="template"> <name>Trzy Kolumny</name> <description> Wzorzec szablonu o ukadzie trj kolumnowym </description> <files> <fi 1ename>i ndex.php</fi 1 ename> <f i 1ename>templateDetai1s.xml</fi1ename> </files> <posntTons> <position>userl</position> <position>right</pos i ti on> </positions> </1nstal1>

Po utworzeniu podstawowej struktury szablonu moesz przej do etapu konstruowania logiki szablonu. Pierwszym krokiem jest stworzenie prototypowego pliku index.php.

wonzenie pliku index.php


Wstpna wersja pliku index.php bdzie bardzo prymitywna ma to umoliwi szybkie uruchomienie szablonu. Bdzie si skada z trzech kolumn, z czego kada bdzie odpowiada za inn cz interfejsu. W domylnej instalacji Joomla! szablon wzorcowy spowoduje wywietlenie strony gwnej przypominajcej t, ktra jest przedstawiona na rysunku 3.4. Kada kolumna ma obramowanie, co uatwia okrelenie elementw, ktre zawiera. Kolejnym uproszczeniem jest brak oddzielnego pliku arkusza stylw zamiast tego kod CSS zostanie umieszczony w nagwku pliku index.php. Jeli masz ju jakie dowiadczenie w pracy z Joomla!, wiesz, e strona skada si z pewnej liczby paneli nazywanych moduami. Kady z tych moduw moe zawiera menu, artyku, sond lub inny dowolny element. Szablon strony moe zawiera okrelon liczb moduw, widocznych lub ukrytych, w zalenoci od ustawie strony. Poprzez wywietlanie lub ukrywanie poszczeglnych moduw szablon strony mona dopasowa do funkcji poszczeglnych podstron. Aby zrozumie, na czym polega ukad moduw, wyobra sobie zwyk gazet. Logo znajduje si na grze, spis treci w ramce na dole, a reszt miejsca podzielono na kilka rnych paneli. Mog one zawiera komentarze, reklamy, ogoszenia, prognoz pogody lub praktycznie dowolny inny element. Moduy Joomla! odzwierciedlaj t funkcj. Strona skada si z rnych moduw umieszczonych w panelach. Podstawowy wywietla zawarto artykuu. Bardziej zaawansowany moe zawiera sond na temat mody i umoliwia wybr konkretnej odpowiedzi, np. Tak, w tym sezonie spdniczki s krtsze ni w poprzednim". Przykadem dynamicznego moduu jest wywietlanie aktualnego notowania giedy.

84

Joomla!. Profesjonalne tworzenie stron WWW

Rysunek 3.4.
Strona gwna wywietlona z wykorzystaniem trjkolumnowego wzorcowego szablonu

Maili Menn
Home

Welcome to the Frontpage Welcome to Joomla! Wpisa Administrator czwartek, 12. padziernik 2006 10:00 .Joomla) is a free open source framework and content publislimg system designed for quickly treating highly interactive multi-language Web sites, online communities, media poitals, blogs and eCommerce applications. loiJldl v is used for? ) Community Sites Public Brand Sites ) eCommerce O Blogs . Intranets Photo and Media Sites : ; All of the Above! [_Gtosuj I
I vVymk j

[ X ] [5J

Foils

Joomla!
Overview

Joomla! > FAO ' The News Web Links ' News Feeds

Joomla! provides an easy-to-use graphical user interface that 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 fcjy

Joomla!

Zmiemony ( czwartek, 08. listopad 2007 12:06 ) Wicej. W e are Volunteers

WllO'S ' >Mil11'

Sticktothi

[DDL]

"Wpisa Administrator r 0 < j 07 p l e t ; 0 0 4 12:00


To msure

Nasz witryn przeglda teraz 2 goci

Wpisa Administrator

Key Concepts

roda, 07 lipiec 2004 09:54 The Joomla 1 Core Team

cocie

release,

Ailvei-lisemellf |

Wilco Jansen resorted to

W podstawowym ukadzie trjkolumnowym w lewej kolumnie wywietlony zostanie modu userl, ktry zawiera menu z najnowszymi wiadomociami. rodkowa kolumna zawiera tre artykuu, a w prawej wywietlany jest modu przypisany do r i g h t , co w domylnej instalacji Joomla! odpowiada sondzie. Jeli w interfejsie administracyjnym po wybraniu szablonu wzorcowego klikniesz przycisk Podgld, na ekranie pojawi si szablon wraz z zaznaczeniem poszczeglnych moduw, jak przedstawiono to na rysunku 3.5. Rysunek 3.5.
Kliknicie przycisku Podgld spowoduje wywietlenie szablonu wraz z oznaczeniem moduw k r iiuiWei"
Welcome to the Frontpage Welcome to Joomla! Wpisa Administrator czwartek, 12. padziernik 2006 10:00 LJoomla! is a free open source framework and content Vublishmg system designed foi quickly creating lugldy interactive multi-language Web sites, onlnie communities lilpdia poitals, blogs and eCommerce applications

Joomla! provides an easy-to-use graphical user interface that 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 W e b sites, Intranets, and Extranets and is supported by a community of thousands of users. Zmiemony ( czwartek, 08. listopad 2007 12:06 )

Powei W

^^ J o o m l a !

version i >

Wigcej

We are Volunteers Wpisa Administrator

0 S S

Stick t0

Code!

0 E3 S

Wpisa Administrator roda, 07. lipiec 2004 12:00 Wile o J a n s e n r e s o r t e d t o s ending rum to joint lead-developer Johan Jans sens. Johan, who's had a

roda, 07. lipiec 2004 09:54 of volunte er develop ers, designers, administrators and managers who, together with a

The Joomla! Core Team consists To ensure this code release,

Rozdzia 3. Tworzenie wasnych szablonw

85

Domylna instalacja Joomla! zawiera moduy login, polling, who is online, syndication i search. Kady z nich zostanie dokadniej opisany w kolejnych rozdziaach. Istnieje moliwo zaczenia dodatkowych moduw w postaci rozszerze. Aby stworzy szablon Trzy Kolumny, wprowad poniszy kod, a nastpnie zapisz go pod nazw index.php w katalogu szablonu:
<html> <head> <jdoc:include type="head" /> <style> #colLeft { float:left: width:15X: border:lpx solid black: padding:5px:

#colCenter { float: left: width: 605!; padding:5px: border:lpx solid black;

#colRight { float: left: width:15S: margin:10px: padding:15px; border:8px black dashed:

</style> </head> <body> <jdoc:include type="message" /> <div id="logo"> </div> <div id="colLeft"> <jdoc:include type="modules" name="left" style="xhtml" /> <div class="ArticleFooter"><p>&nbsp:</p> </div> </div> <div id="colCenter"> <jdoc:include type="component" /> </div> <div id="colRight"> <jdoc:include type="modules" name="right" style="xhtml" /> <di v class="Arti cleFooter"><p>&nbsp;</p></di v> </div> <jdoc:include type="modules" name="debug" /> </body> </html>

86

Joomla!. Profesjonalne tworzenie stron WWW

Szablon powinien by teraz gotowy do testw. Otwrz opcj Szablony, a na licie powiniene znale szablon Trzy Kolumny. Kliknij przycisk opcji po lewej stronie tego szablonu, a nastpnie kliknij przycisk Domylnie. W kolumnie Domylnie powinna pojawi si gwiazdka obok wybranego szablonu, jak przedstawiono to na rysunku 3.6. Rysunek 3.6.
Ustaw szablon Trzy Kolumny jako szablon domylny
Witryna Menu Artykuy Komponenty Rozszerzenia llaizdzia Pomoc g * Podgld
1

B'..! Szablony
WffllVlH Z.I(||CC.'.

Ttzy Kolumn-.' Ter, kolumny Zaokrelone

Poniewa podstawowa cz szablonu dziaa ju poprawnie, przysza pora na udoskonalenie wygldu. Przykadowo profesjonalne szablony maj bardziej wyrafinowany ukad ni trzy proste kolumny. Jednym z elementw profesjonalnego ukadu bdzie dodanie zaokrglonych rogw.

Tworzenie arkusza stylw dla zaokrglonych rogw

Wikszo zabiegw w celu dodania zaokrglonych rogw sprowadza si do pracy nad arkuszem stylw. Pierwszym krokiem jest umieszczenie go w oddzielnym pliku. Zamie znaczniki <style> i </style>, a take cay kod znajdujcy si midzy dwiema poniszymi liniami:
<link rel="stylesheet" href="templates/_system/css/general .ess" type="text/css" /> <link rel="stylesheet" href="templates/<?php echo $this->template: ?>/css/template.css type="text/css" />

Dodanie tych dyrektyw spowoduje zaadowanie arkuszy stylw z zewntrznych plikw. Pierwszy odpowiada domylnym stylom sytemu Joomla!. Drugi to arkusz, ktry zostanie za chwil utworzony. Zwr uwag na kod PHP, ktry odczytuje warto pola template obiektu wskazywanego przez zmienn Sthis. Warto zostanie wstawiona w ciek dostpu przez co przegldarka bdzie w stanie znale odpowiedni plik CSS.

Wprowad poniszy kod w edytorze tekstu, a nastpnie zapisz go pod nazw template.ess w folderze ess szablonu Trzy Kolumny zaokrglone:
/* Arkusz stylw dla szablonu Trzy Kolumny zaokrglone */ /* Definicja kolumn tworzcych ukad, bez widocznego obramowania */
#colLeft { float: left; width: 151; padding: 5px:} #colCenter { float; left: width: 60$; padding: 5px; } #colRight { float: left: width: 1535: padding: 5px: }

Rozdzia 3. Tworzenie wasnych szablonw


/* Domylny krj pisma */ .body { font: 0.7em/l.5 Verdana, Arial. Helvetica, sans-serif:

87

/* Pierwszy znacznik div odpowiedzialny za lewy grny zaokrglony rg */ di v.modue_menu. div.module { margin-top: 10px: background: #999999 url(../images/topleft.gif) top left no-repeat: width: 9 M :

}
/* Wywietl prawy grny zaokrglony rg */ di v.modue_menu div, div.module div { background: url(../images/topright.gif) top right no-repeat: padding:0px: border-bottom: lpx solid #fff; margin:0: color: #FFFFFF:

}
/* Wywietl dolny lewy zaokrglony rg */ div.module_menu div div. div.module div div { background: url (../images/bottomleft.gif) bottom left no-repeat: padding:Opx; border-bottom: lpx solid #fff:

}
/* Wywietl dolny prawy zaokrglony rg */ div.modue_menu div div div. div.module div div div { background: url(../images/bottomright.gif) bottom right no-repeat: padding:0px: border-bottom: lpx solid #FFFFFF;

}
/* Menu i tytuy moduw pisane biaym kolorem div.modue_menu div div div h3. div.module div div div h3 { padding:lOpx: border-bottom: lpx solid #FFFFFF; margin:0: color: #FFFFFF: */

/* WIE6 lista nachodzi na zaokrglenia, ponisza definicja zapobiega temu */ div.moduejnenu div div div ul { padding-top:5px; padding-bottom:5px:

88

Joomla!. Profesjonalne tworzenie stron WWW


/* Opcje w sondzie wywietlane na jasnoszarym tle */ .pol 1 td { background: #cccccc; font-size: 80X; margin-left:5px; padding-left:5px; marg1n-right:5px; margin-top:Opx;

}
.latestnews, .menu, .keyconcepts, .othermenu { background: #cccccc top right repeat-y: margin-left:5px: padding-left:Opx: margin-right:5px: margin-top:Opx:

}
div.moduetable li, .menu li. .keyconcepts li, .othermenu In { background: #cccccc top right repeat-y; margin-left: 1.5em: padding:5px; font-size: 80:

* Powyszy zestaw stylw jest bardziej skomplikowany ni trzy style doczone wczeniej w pliku index.php. Komentarze wyjaniaj wykorzystanie poszczeglnych stylw. Zwr uwag, e wikszo z nich zastpuje podstawowe style Joomla!. Na wygld moduw i komponentw wpywa kilka stylw, m.in. modu etable i contentheading. Poprzez zastpienie tych stylw moesz dokadnie kontrolowa wygld treci na stronie.

Tworzenie grafiki zaokrglonych rogw


Arkusz stylw zawiera definicje, ktre odwouj si do czterech plikw graficznych: topleft.gif, topright.gif, bottomleft.gif i bottomright.gif. Te pliki odpowiadaj zaokrglonym rogom. Musisz wykona je samodzielnie lub kto musi je zrobi dla Ciebie. Poniej opisano pokrtce, jak mona je stworzy w programie Adobe Photoshop. Niezbdne kroki bd prawie identyczne dla innych programw graficznych, takich jak np. GIMP. Rozpocznij od utworzenia obrazu o rozmiarze 100 x 100 pikseli w trybie RGB. Zamiast tradycyjnie biaego ta wybierz to przezroczyste, jak zilustrowano to na rysunku 3.7. Zaokrglone rogi bd przezroczyste, dziki czemu kolor kolumn bdzie mona ustawi w arkuszu stylw (dziki czemu nie bdzie konieczne tworzenie oddzielnych plikw dla kadego koloru). W miejsce obrazu powinna zosta wywietlona szachownica, co oznacza, e jest on pusty. Po wybraniu opcji Fili... z menu Edit pojawi si okno dialogowe. Wybierz biay (ang. White) jako kolor wypenienia, jak zilustrowano to na rysunku 3.8, i kliknij przycisk OK. Obraz powinien zosta wypeniony biaym kolorem.

Rozdzia 3. Tworzenie wasnych szablonw


sunek 3.7.
ybierz zezroczyste to a tworzonego irazu

89

Wysoko: p 00 Bozdiiefczo: 72 I r y b koloru: j RGB j piks/cal _*J j 8 bitw na kana Rozmiar obrazka: 29.3K

awartota: (Przezroczyste s Zaawansowane

sunek 3.8.
'ybierz biay jako iior wypenienia

Kolejnym krokiem jest narysowanie zaokrglonego prostokta. Wybierz najpierw narzdzie rectangle, nastpnie konieczne bdzie dopasowanie kilku opcji na pasku narzdzi. Po pierwsze, jak przedstawiono to na rysunku 3.9, wybierz wypenianie pikseli, pniej zaznacz zaokrglony prostokt. Odznacz opcj Anti-aliased po prawej stronie, dziki czemu krawdzie bd ostre. Rysowany prostokt ma by w kolorze czarnym, dlatego kliknij przycisk Default Foreground and Background Color. Na koniec ustaw przyblienie na 400 procent i narysuj prostokt, ktry wypeni dostpn przestrze.

'

'

..

"" "

IZZM

SUnek 3.9. Ustaw wszystkie niezbdne opcje, a nastpnie narysuj zaokrglony prostokt, /peni dostpn przestrze

ktry

90

Joomla!. Profesjonalne tworzenie stron WWW


Wybierz narzdzie Magie Wand i odznacz opcj Anti-aliased, jak pokazano to na rysunku 3.10. Kliknij prostokt, ktry narysowae wczeniej, i nacinij klawisz Delete. Ptno powinno teraz przedstawia szachownic (co odpowiada przezroczystoci) wraz z czterema zaokrglonymi rogami. Zwr uwag, e w przypadku tego szablonu bdziesz wykorzystywa biae to. Jeli chciaby wybra inny kolor ta, musisz stworzy nowe zaokrglone rogi, a w miejsce biaego wybra odpowiedni kolor.
jjQlJSl

Pk

Edycja

Qbrazek

Carstwa

Zaznsz

Fftr

Widok

Okno

POEIX)

RFI > >'* L3


V.
!..

rw. Fw> V i

mm
J L

1 S 4 o. y

>.

4.-J

J.S

Bpi!

vi;

^ -r/-*.^{'il'H:'

i;;;-;-

iKmS'

::

: i' : !

'

' i^ f t :

Wm
Rysunek 3.10. Wycz opcj Anti-aliased dla narzdzia Magic Wand

Wybierz narzdzie do prostoktnego zaznaczania i zaznacz lewy grny rg. Z menu Image wybierz opcj Crop, co spowoduje takie przycicie obrazu, aby zawiera tylko zaznaczony wczeniej rg, jak przedstawiono na rysunku 3.11. Zapisz obraz pod nazw topleft.gif w podkatalogu images szablonu. Aby utworzy pozostae trzy rogi, musisz tylko obrci obraz i zapisa go pod odpowiedni nazw. Z podmenu Rotate Canvas w menu Image wybierz opcj Flip Horizontal i zapisz plik pod nazw topright.gif. Nastpnie wybierz opcj Flip Vertical z tego samego podmenu, a plik zapisz jako bottomright.gif. Ostatecznie uruchom ponownie polecenie Flip Horizontal i zapisz wynik jako bottomleft.gif Szablon jest ju prawie gotowy, ale jeszcze nie zamykaj programu graficznego.

Tworzenie bannera

Kolejny etap to stworzenie bannera, ktry bdzie zawiera logo i nazw strony. Opis tego procesu wykracza poza ramy tej ksiki. Jedn z szybkich metod jest wykorzystanie prostego, tekstowego logo za pomoc makr Script-Fu, doczonych do programu GIMP. W menu Xtns/Script-Fu/Logos znajdziesz list kilkudziesiciu rnych skryptw, ktre umoliwiaj

Rozdzia 3. Tworzenie wasnych szablonw


unek 3.11.
ytnij obraz, > obejmowa :o lewy ny rg

91

wprowadzenie tekstu, okrelenie podstawowych kolorw, dziki czemu uzyskasz proste, ale profesjonalnie wygldajce logo. Dla aktualnie tworzonego szablonu powiniene wykona banner o szerokoci przynajmniej 800 pikseli (eby wypenia grn cz strony) i wysokoci okoo 150 pikseli. Po jego ukoczeniu zapisz rezultat pod nazw banner.png w folderze images szablonu.

iana moduw
Pomimo e modu sondy jest domylnie wczony, wikszo stron internetowych nie zawiera sondy na stronie gwnej. Dlatego w tym podrozdziale wstawisz w miejsce sondy modu Lastest News, ktrego obecno bdzie preferowana w przypadku wikszo stron W W W . Strona Joomla! skada si z moduw, dla ktrych zarezerwowano miejsce w szablonie. W Joomla! 1.5 wprowadzono moliwo atwego okrelenia pozycji moduw dziki opcji Podgld. W czci Szablony kliknij nazw szablonu, a nastpnie kliknij przycisk Podgld, aby wywietli wybrany szablon wraz z opisanymi pozycjami moduw. Dobrym zwyczajem podczas tworzenia szablonw jest wykorzystywanie domylnych nazw pozycji, dziki czemu uytkownicy mog atwo dopasowa wywietlanie moduw. Dlatego, zanim zdefiniujesz wasne pozycje w tworzonym szablonie, zbadaj ukad ktrego z domylnych szablonw. Dziki opcji Podgld poznasz najczciej uywane nazwy pozycji, ktre powiniene umieci w tworzonym szablonie. W interfejsie administratora wybierz opcj Szablony. Przewi list do pozycji Pol 1 s, nastpnie kliknij ikon po prawej stronie, jak pokazano na rysunku 3.12. W jej miejsce pojawi si czerwony X, co oznacza e modu zosta wyczony.

92

Joomla!. Profesjonalne tworzenie stron WWW

Rysunek 3.12.
Kliknij ikon Wycz modu, aby wyczy sond

W miejsce sondy moesz wczy wywietlanie moduu Lastest News. Znajd go na licie, a nastpnie kliknij jego nazw, aby przej do ekranu zmiany. Upewnij si, e modu jest wczony i przypisany do strony gwnej, a nastpnie wybierz pozycj right, jak przedstawiono to na rysunku 3.13. Aby wprowadzi zmian pozycji, kliknij przycisk Zastosuj. Rysunek 3.13.
Ustaw opcj Pozycja na right, co spowoduje wywietlanie Latest News w prawej kolumnie

Joomtcii" www.JoomlaJumpstarf.com

Modli: [ m e ] Zi

ieiy moduu io*e tutykuw 5 Ostatnio dodan Dowolny

: Wywietla l s czy do artykuw o; it modyfikowanych.

Prryi ostek Masy moduhi Piiuimetiy: rozsietzone

Wszystkie ' Pozycje wybi Exumpfe Pages

Na danej pozycji mona umieci dowolny modu, poprzez wybranie jednej z pozycji na licie. Poniej znajduje si grupa parametrw, ktre moesz zmieni, aby dopasowa dziaanie moduu do swoich potrzeb. Jeli otworzysz teraz stron gwn, modu Lastest News powinien pojawi si w prawym grnym rogu jak na rysunku 3.14.

Rozdzia 3. Tworzenie wasnych szablonw


sunek 3.14.
ybrany modu stanie owietlony miejscu sondy
Joomla!

93

Welcome to the Frontpage Welcome to Joomla! Wpisal Administrator czwartek, 12. pazdziermk 2006 10:00 Joomla! is a f i e e open source framework and content pubbslung system designed for quickly creating lugldy mtei active multi-language Web sites, online communities license
Joomla! FAQ

U 1 H P I

f Layouts 1 The Joomla! I Community Welcome to . Joomla! I Newsflash

media portals, blogs and Commerce applications

Powered by

Joomla! provides an easy-to-use graphical us er inteifac e that simplifies tta management and publishing of large volumes of content including HTML,

J^ Joomla !
version 1.5

! -4 Newsflash

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. Zmiemony ( czwartek, 08. listopad 2007 12:06 ) Wigcei...

Joottdai Home
Joomla! Fomms Joomla! Help

We are Volunteers Wpisa Administrator

Stick to the Code ! Wpisal Administrator

Adverts tmei
Featured Links: Joomla! Joomla! The mo s popular and wide

roda, 07. lipiec 2004 09:54 of volunteer developers, designers, administrators and managers who, together with a

roda, 07. lipiec 2004 12:00 Wilco Jans en resorted to sending rum to joint lead-developer Johan Jans sens. Johan, who's had a

The Joomla! Core Team consists To ensure this code release,

OSMHome \

lasny kod CSS dla komponentw


Wspania funkcj dostpn w Joomla! jest moliwo wykorzystania, w zalenoci od sytuacji, rnego kodu CSS dla komponentw (rodkowa kolumna), np. po wybraniu danego elementu menu lub artykuu. Oznacza to, e pliki CSS mog odpowiada schematom kolorw, ktre ustalisz dla poszczeglnych czci systemu. Przykadowo na stronie zarzdzania nieruchomociami cz odpowiadajca za refinansowanie moe by wywietlana w kolorystyce ciemnoniebieskiej, a cz sprzeday w kolorystyce jasnozielonej. Moliwe jest stworzenie wariacji stylu i przypisanie jej do danego menu. Przejd do folderu szablonu Trzy Kolumny i otwrz plik template.css. Wprowad poniszy kod i zapisz zmiany:
,componentheading_blue. .contentpage_blue { color: blue;

}
Aby przypisa zmieniony styl do danego menu, otwrz Projektanta Menu w interfejsie administracyjnym. Kliknij ikon Zarzdzaj pozycjami menu po prawej stronie menu, do ktrego chcesz przypisa zmieniony styl, co przedstawiono na rysunku 3.15. W tym przypadku klikamy Main Menu, poniewa nowe pozycje tego menu pojawi si w lewej grnej czci strony. Teraz kliknij ikon Utwrz, aby doda now pozycj menu. Na ekranie pojawi si hierarchiczna lista dostpnych typw. Kliknij pozycj Artykuy, eby wywietli list dostpnych sekcji. Dodawana pozycja ma prowadzi do listy artykuw w danej sekcji, dlatego wybierz pozycj Lista Kategorie artykuw w sekcji, jak przedstawiono na rysunku 3.16. Zostaniesz przeniesiony do ekranu dodawania nowej pozycji menu, gdzie moesz ustawi jej parametry.

94

Joomla!. Profesjonalne tworzenie stron WWW


Joomla! wwwJoomiaJumpstart.com
rtytutly Komponenty P.ozszei

Rysunek 3.15.
Kliknij ikon Zarzdzaj pozycjami menu po prawej stronie menu, ktremu chcesz przypisa zmieniony styl

U l Projektant menu

O Q 0

Resources Example Pages Key Concepts

j s wolnym oprogramowaniem dostpnym ne et

Rysunek 3.16.
Kliknij Lista Kategorie artykuw, aby wybra pozycj menu tego typu

Joomlci! www.JoomlaJumpstart.com

t l i Pozycjja menu: [utwrz


W y t i i tyj pozycji I y cze wewnta , Artykuy iii Archiwum

Wprowad nazw pozycji, a w ramce Parametry: podstawowe wybierz sekcj, z ktrej bd wywietlane artykuy. Rozwi ramk Parametry: systemu, ktra znajduje si poniej. W polu oznaczonym jako Przyrostek klasy CSS wprowad bue, co zilustrowano na rysunku 3.17, i kliknij przycisk Zapisz. Jeli wejdziesz teraz na stron gwn i wybierzesz stworzon przed chwil pozycj menu, elementy komponentu zostan wywietlone w kolorze niebieskim.

Tworzenie dystrybucyjnego pliku templateDetails.xml


Twj szablon jest ju prawie gotowy! Zanim udostpnisz go szerszemu gronu, warto poprawi plik templateDetails.xml i wprowadzi dodatkowe informacje o autorstwie oraz licencji. Po ukoczeniu plik ze szczegami powinien przypomina poniszy:

Rozdzia 3. Tworzenie wasnych szablonw


sunek 3.17.
odaj przyrostek )lue, aby ementy wizane t pozycj byy /wietlane Bdug stylw ym przyrostkiem
0 T. 1 O Wyloguj

95

enu: [ utwrz )

v/

rtykutow w sekcji wybranej s k ] oraz opisy k t g r i eci aeoi

i Zm""!"yp J :
:

Parametry
Pafliiietiy koinjHiiien!

P-.l.i'z';!-, \>i.

Wyczone 'c.' Ignoruj o Wczone

<?xml version="1.0" encoding="utf-8"?> <install version="1.5" type="template"> <name>Trzy kolumny zaokrglone</name> <version>l.0</version> <creationDate>l/20/07</creationDate> <author>Dan Rahmel</author> <authorEmai 1 >admi ntajooml a jumstart. com</authorEmai1> <authorllrl>http://www. joomla jumpstart,com</authorUrl> <copyright></copyright> <license>GNU/GPL</license> <description> Wzorzec szablonu o ukadzie trjkolumnowym </description> <files> <fi1ename>i ndex.php</fi1ename> <fi 1ename>templateDetai1 s.xml</fi 1ename> <filename>params.ini</filename> <fi 1 ename>i mages/banner.png</fi 1ename> <fi 1enarne>css/ i ndex.html</fi 1ename> <fi 1ename>css/template.css</fi 1ename> </f11es> <positions> <posi ti on>left</posi tion> <posi ti on>ri ght</posi ti on> </positions> <params> <param name="showComponent" type="radio" default="l" label="Poka komponent" description"Poka/ukryj wydruk komponentu"> <option value="0">Nie</option> <option value="l">Tak</option> </param> </params> </install>

Jeli spakujesz zawarto folderu do archiwum zip pod nazw, ktra dokadnie odpowiada nazwie folderu z szablonem, bdziesz mg udostpni szablon innym. Moesz tego dokona na stronie Joomla Hut (www.joomlahut.com), ktra umoliwia dodawanie darmowych szablonw.

96

Joomla!. Profesjonalne tworzenie stron WWW

Zaawansowane techniki tworzenia szablonw


Kluczowy element skadowy systemu szablonw Joomla! to CSS. Moliwe jest nie tylko wykorzystywanie kilku plikw CSS dla jednego szablonu, lecz take utworzenie arkusza stylw definiujcego style nawet dla poszczeglnych artykuw. Dla projektanta pracujcego z Joomla! duo wiksze znaczenie mjjednak same funkcje CSS. Inspekcja plikw CSS prowadzi do konkluzji, e wikszo ich autorw wykorzystuje tylko najbardziej podstawowe funkcje. Technologia CSS skada si z ogromnej liczby atrybutw, dziki ktrym jeste w stanie doprowadzi wygld strony WWW do perfekcji. Dobr wiadomoci jest fakt, e wikszo atrybutw okrelonych w specyfikacji CSS jest obsugiwana przez popularne przegldarki. W tym podrozdziale zapoznasz si z technikami, ktre sprawi, e Twoja strona bdzie wyrnia si na tle innych. Dowiesz si, jak umiejscowi tekst, aby nakada si na obrazek. Nastpnie poznasz inne zalecane praktyki, takie jak umieszczanie odwoa do obrazkw w plikach CSS, a take przypisanie odpowiedniego pliku CSS danemu artykuowi lub wybranej platformie (moe by to np. telefon komrkowy lub PDA).

Wykorzystanie grupy szablonw a CSS


Projekt szablonu dla systemu Joomla! moe zakada wykorzystanie jednego szablonu dla wszystkich podstron lub przypisanie oddzielnych szablonw do poszczeglnych kategorii i sekcji, dziki czemu wygld bdzie odzwierciedla funkcj danej czci witryny. W dalszej czci tego rozdziau termin szablon bdzie odnosi si do pojedynczego szablonu, a zestaw szablonw przypisanych do poszczeglnych kategorii i sekcji bdzie nazywany grup szablonw. Zaprojektowanie jednego lub drugiego wymaga zupenie innego podejcia, poczwszy od fazy organizacji i planowania. W przeciwiestwie do pojedynczego szablonu, ktry musi odpowiada wszystkim potrzebom strony, elementy grapy szablonw maj spenia okrelone zadania, przykadowo strona gwna ma przedstawia oglny wizerunek (dziki doborowi kolorw, organizacji i wyborze fontw), podczas gdy podrzdne szablony nadaj stronie tosamoci. Grupa szablonw gra podobn rol jak marka. Przykadowo wszystkie pochodne marki Coca-Cola (Cherry Coke, Coca-Cola Zero itd.) zawieraj wsplne elementy, wic nawet przypadkowy obserwator moe zauway zwizek. Po stworzeniu kilku szablonw moesz przypisa je do poszczeglnych czci strony za pomoc opcji Szablony, jak pokazano na rysunku 3.18. W poniszym przykadzie jasnozielony szablon zosta przypisany do wszystkich elementw sekcji Kluczowe pomysy.

Rozdzia 3. Tworzenie wasnych szablonw


unek 3.18.
pomoc opcji iblony mona ypisa szablon okrelonych ici strony

97

^ f ^ i W ^ t W i i i W i f f f
C i Szablon; [zmicn]

Ha;-.

Szablon RHUK Milkyway

Piefet encje Parametr-Plik emplates\rhuk_milkywaylparams in

Opis; MilkyWay jest szablonem przygotowanym specjalnie

yi''! jest wolnym oprogramowaniem dostpnym na i -il) -

/icon.ico
Szablon Joomla! moe zawiera plik favicon.ico1, umieszczony w jego gwnym katalogu. Jest to maa ikona (o rozmiarze 16x16 pikseli), ktra po umieszczeniu odpowiedniego odwoania w pliku index.php zostanie wywietlona na pasku adresu przegldarki internetowej* (zobacz rysunek 3.19), a take po lewej stronie na licie zakadek. Jeli plik favicon.ico bdzie umieszczony w gwnym katalogu serwera WWW, zostanie automatycznie odczytany przez wikszo przegldarek. Aby umieci odwoanie do tego pliku w szablonie, wprowad kod podobny do poniszego w sekcji <head> pliku index.php:
<link rel="shotcut icon" href="http://przyklad.com/favicon.ico" type="image/vnd.mi crosoft.i eon" /> <link rel="icon" href="http://przyklad.com/favicon.ico" type="i mage/vnd.mi crosoft.i eon" />

Powyej umieszczono dwa typy odwoania, poniewa poszczeglne przegldarki odczytuj plik favicon.ico dla rnych wartoci atrybutu rei. Nowsze przegldarki umoliwiaj doczenie ikon zapisanych jako pliki GIF lub PNG, a nawet wstawienie animowanej grafiki w tych formatach. Nie musisz wprowadza poniszego kodu, jeli umiecie w szablonie dyrektyw doczenia standardowych nagwkw <jdoc:include type="head" />, poniewa Joomla! automatycznie wstawi odwoanie do ikony ulubionych.
<link rel="shorcut icon" href="templates/<?php echo $this->remplate; ?>/favicon.ico" type="image/vnd.mic rosoft.i eon" />

\ ang. favorites icon ikona ulubionych przyp. thim.


'rzegldarka Internet Explorer w wersji wczeniejszej ni 7 wywietla t ikon dopiero po dodaniu trony do ulubionych, Favicon Wikipedia, the free encyclopedia [online][dostp 28.10.2008]

tip: //en. wikipedia. org/wiki/Favicon

98

Joomla!. Profesjonalne tworzenie stron WWW


g a g
Ctrl+D s

Rysunek 3.19.
Plik favicon.ico wywietlony na pasku adresu i licie zakadek
MAIM M E N U

S Narzdzia Dodaj zakadk... Subskrybuj t stron

Pomoc

&

'X *<'
d i HNr

- *

Zarzdzaj zakadkami ' Pasek 2akadek Ostatnio dodane .Ostatnio uywane etykiety Dodatki zwijane z zakadkami

Ctrl+Shift+B

Sfc

-UbS:'

2: Installing C o m p o n e n t s

Why do I need

@ Joomla Jumpstart -- Home of Beginning Joomla " ^ B f c

Joomla? * 2. How is Joomla! organized? 3. Joomla! Presentation * Frequently Asked Questions (FAQs) Beginning Joomla! * Professional Joomla! General Joomla! > Get Paid to Write Articles Zakonczono

'

In Part 1, you installed a module to the Joomla system. Part 2 will take you mgh the quick and simple process of installation and configuration of a :ornponent. Components are the dominant type of extension and form the backbon *> ; of much of the extensible functionality available to the Joomla CMS. R E A D MORE...

J o o m l a E x t e n s i o n s -- D i g g T h i s ! p a t c h e d for 1.5

P r o b i n g t h e Joomla! S o u r c e C o d e for Information

O&

Aby zapisa obrazek w formacie ICO, moesz wykorzysta darmow wtyczk do programu Photoshop, ktr znajdziesz na stronie: http: //www. telegraphics. com. au/sw/Mcoformat

Moesz take skorzysta z aplikacji internetowej do rysowania plikw .ico pod adresem: http://www.favicon. cc

Kolejn opcj jest program GIMP, za pomoc ktrego, bez dodatkowych wtyczek, mona zapisywa w formacie .ico. Aby stworzy ikon ulubionych w programie GIMP, utwrz obrazek o rozmiarach 16x16 pikseli, a nastpnie zapisz go w formacie Microsoft Windows leon (.ico).

Modyfikacja wygldu rozszerze

Chocia wykracza to poza ramy tego rozdziau, warto wspomnie, e rozszerzenia (komponenty, moduy itd.) maj wasne szablony, ktre okrelaj ich wygld i funkcjonalno. Zazwyczaj szablony te zapisane s w podkatalogu \tmpl, ktry znajduje si w gwnym katalogu danego rozszerzenia. System Joomla! zaprojektowano z myl o moliwoci zmiany szablonu wykorzystywanego przez rozszerzenia, aby dopasowa jego wygld i funkcjonalno do reszty strony. Moesz doczy do szablonu podkatalog \html, w nim znajd si podfoldery dla poszczeglnych moduw i komponentw, ktrych wygld chcesz zamieni (na przykad \com_contact, \com_weblinks, \mod_poll i \mod_search). Przykady modyfikacji wygldu rozszerze mona znale w podkatalogu \html szablonu beez w domylnej instalacji Joomla!.

Zazwyczaj jednak wystarczy stworzy odpowiedni arkusz stylw, ktry zastpuje definicje danego komponentu. Istnieje prosty sposb, aby upewni si, e Twj szablon zawiera definicj dla wszystkich gwnych stylw. Sprawd w przegldarce, jak wywietlane s wszystkie moduy, komponenty i inne elementy interfejsu dla wybranego szablonu.

Rozdzia 3. Tworzenie wasnych szablonw

99

Wykorzystaj opcj Poka rdo strony, aby zobaczy kod HTML dla danej strony. Przegldajc kod rdowy pod ktem atrybutw id i class, natrafisz na wszystkie definicje elementw CSS wykorzystywanych na stronie. Teraz, kiedy zapoznae si z ich nazwami, moesz zmieni ich wygld za pomoc arkusza stylw doczonego do szablonu.

iorzenie ukadu strony dla telefonw komrkowych


Coraz wicej osb przeglda strony WWW za porednictwem telefonw komrkowych. Widzc ogromn popularno urzdze PDA, takich jak np. iPhone, mona spokojnie zaoy, e mobilny dostp do internetu bdzie coraz powszechniejszy. Dziki przygotowaniu strony pod ktem wygodnego przegldania na takich urzdzeniach moesz powikszy grono osb odwiedzajcych stron, a w przypadku witryny komercyjnej zwikszy zyski. Stworzenie w systemie Joomla! szablonu dla telefonw komrkowych, dopasowanego do ekranu o maych rozmiarach, jest wyjtkowo proste, poniewa na wygld strony w gwnej mierze wpywa arkusz stylw. W czasie, kiedy pisaem t ksik, ponisze programy byy najpopularniejszymi mobilnymi przegldarkami: Pocket Internet Explorer Gwna przegldarka wszystkich PDA z systemem Windows (nazywana czsto take Pocket PC). Opera Prawdopodobnie najpopularniejsza mobilna przegldarka instalowana przez uytkownikw. NetFront Popularna przegldarka, szczeglnie na nieuywanych ju urzdzeniach Sony Clie. Na jej podstawie powstaa przegldarka Blazer. Blazer Popularna przegldarka dostpna w modelach Tungsten i Treo PDA. Minimo Darmowa przegldarka o otwartym kodzie rdowym, oparta na silniku programu Mozilla Firefox. Safari Domylna przegldarka urzdzenia iPhone.

Poza tym istnieje spora liczba przegldarek przygotowanych specjalnie na dan platform (np. OpenWave czy Series 60), a biorc pod uwag dynamiczny rozwj tego rynku, lista mobilnych przegldarek bdzie rosn. Dobra wiadomo jest taka, e Twoja strona nie musi by zaprojektowana z myl o kadej z tych przegldarek. Doczenie pliku CSS wyglda zazwyczaj podobnie do:
<link rel="stylesheet" type="text/css" href="Mycss.css" />

Dla tego znacznika istnieje dodatkowy atrybut o nazwie media, ktry jest poprawnie odczytywany przez wikszo mobilnych przegldarek. Atrybut media pozwala okreli platform, dla ktrej naley odczyta podany plik CSS. Trzy najczciej stosowane wartoci to: screen, print i handheld9. Z tego powodu Twj szablon moe odwoywa si jednoczenie, bez kolizji do wicej ni jednego pliku CSS.
ikran, drukarka i urzdzenie przenone p r z y p . tum.

100

Joomla!. Profesjonalne tworzenie stron WWW


Aby doczy pliki CSS dla kadej platformy, moesz wstawi w szablon poniszy kod:
<link rei"stylesheet" type="text/css" media="screen" href="screen.css" /> <link rel="stylesheet" type="text/css" media="print" href="print.css" /> <link rel="stylesheet" type="text/css" media="handheld" href="mobile.css" />

Znacznik z atrybutem media ustawionym na screen moe odnosi si do zwykego pliku CSS. Warto atrybutu print moe oznacza odwoanie do arkusza, ktry wycza wywietlanie bannerw, kolumn i elementw nawigacyjnych nieprzydatnych na papierze. Czsto jest to kopia gwnego pliku CSS z atrybutem visible (widoczny) ustawionym na false dla elementw, ktre powinny zosta pominite na wydruku. W czasie, kiedy pisaem t ksik, przegldarka Pocket Internet Explorer wykorzystywaa arkusze stylw oznaczone zarwno jako screen, jak i media do wywietlania stron na urzdzeniach mobilnych, co byo powodem frustracji wielu projektantw. Zwyka wersja Internet Explorer 6 (najpopularniejsza przegldarka internetowa) w przeciwiestwie do wersji mobilnej nie wywietla stylw oznaczonych jako handheld. Sposobem na osignicie kompatybilnoci z Internet Explorerem jest umieszczenie odwoania do pliku CSS odpowiadajcego screen przez odwoaniem do tego, ktry odpowiada handheld. Dziki temu na normalnych komputerach plik oznaczony jako handhe Id zostanie zignorowany, a przegldarka Pocket IE odczyta najpierw style zawarte w pliku odpowiadajcym screen, a nastpnie odczyta zawarto pliku odpowiadajcego handheld, uniewaniajc wczeniejsze definicje.

Typ handheld wykorzystywany jest przez urzdzenia przenone, ktre obsuguj CSS. W czasie pisania tej ksiki wikszo sprawdzanych urzdze pozytywnie przesza testy i odczytaa plik CSS oznaczony atrybutem handheld. Sprawdzone zostay nastpujce przegldarki: Blazer (w urzdzeniu Treo), Opera (w Nokii) i Pocket Internet Explorer (w iPAQ-u). Niestety, pewna liczba testowanych przypadkw nie obsugiwaa poprawnie tego atrybutu (gwnie Netfront 3.1). Jednak patrzc w przyszo, mona z pewnoci stwierdzi, e wszystkie nowe przegldarki bd poprawnie obsugiwa ten atrybut.

Definiowanie arkusza stylw dla urzdze przenonych

Jeli masz zamiar doczy alternatywny arkusz stylw dla urzdze przenonych, poniej znajdziesz kilka wskazwek. Pamitaj, e nie mona po prostu wykorzysta zwyczajnego pliku CSS, poniewa zosta stworzony z myl o osigniciu innych celw, innej prezentacji graficznej. Poniej znajduje si lista rzeczy, o ktrych naley pamita podczas projektowania arkusza stylw dla urzdze przenonych: Ustaw marginesy na 0 Dla znacznikw zawierajcych tekst ustaw atrybut margin: 0 0 0 0: przez co margines zostanie ustawiony na 0, a tekst bdzie zajmowa ca dostpn przestrze. Ustaw szeroko obramowania na 0 Dla znacznikw di v i table ustaw atrybut border-width: 0 0 0 0: aby usun ramk wok komrek. Ustaw wysoko linii na lem Zamiast okreli inn wysoko linii (co i tak nie bdzie dobrze wyglda na urzdzeniu przenonym), wykorzystaj kod 1 i ne-height: lem: aby ustawi standardow wysoko linii.

Rozdzia 3. Tworzenie wasnych szablonw

101

Korzystajc z tych wskazwek, moesz wprowadzi modyfikacje domylnego szablonu Joomla!. Utwrz pod nazw mobile.css nowy arkusz stylw w folderze css i wprowad poniszy kod:
Body { margin: O.Oem 0 0 0: line-height: lem: padding: 0 0 0 0.2em: font-size: 100%: line-height: lem; color: black; border-width: 0:

}
hi, h2. h3, M . h5, h6 { line-height: lem; font-size: 100%; font-weight: bold;

}
p, ul, ol, li. dt, dd { line-height: lem:

{
}

moduletable. ,moduletable_menu. div.moduletable h3. .moduletablejnenu h3, .poll td font-size; 100%: font-weight: bold;

Wstaw w index.php odwoanie do pliku CSS z atrybutem media ustawionym na handheld, a plik mobile.css zostanie automatycznie wykorzystany na urzdzeniach przenonych. Wykorzystanie tego arkusza wprowadzi jednakowy wygld i wielko tekstu na caej stronie, a nagwki i inne specjalne style Joomla! zostan pogrubione.

laptowanie szablonw Mambo lub Joomla! 1.0


Szablony Mamo dziaaj bez problemw w Joomla! 1.0. Z powodu ich popularnoci od piciu lat powstaway tysice szablonw. W Joomla! 1.5 istnieje moliwo wykorzystywania szablonw napisanych z myl o starych systemach, jednak musi zosta wczony Tryb spucizny. Niestety, wczenie tego trybu powoduje utrat wszystkich nowych funkcji i wzrostu wydajnoci wersji 1.5. Na szczcie adaptacja szablonu w wikszoci przypadkw nie jest trudna. Praktycznie wszystkie wywoania systemowe w starej wersji Joomla!/Mambo maj swoje odpowiedniki w nowej wersji Joomla!. Najbardziej oczywistym przykadem jest funkcja modCountModules, ktra zostaa zastpiona przez $this->countModules. Elementy <jdoc include ... / > z a s t p i y w i k s z o funkcji mosLoadModul es. Ponadto wykorzystanie zmiennych globalnych nadal jest moliwe, cho niezalecane, poniewa prawdopodobnie zostan usunite w przyszych wersjach Joomla!. Najlepiej jest unika wykorzystania zmiennych globalnych.

102

Joomla!. Profesjonalne tworzenie stron WWW


W systemie Mambo i starszych wersjach Joomla!, jeli na danej stronie niezbdny by edytor, trzeba byo go wcza rcznie, podczas gdy w nowej wersji wcza si automatycznie, jeli wystpi taka potrzeba. Jedyn nieobecn technologi w nowej wersji Joomla! jest patTemplate. Wtyczka patTemplate umoliwiaa proste rozwizywanie zoonych problemw, jakie w przeszoci napotykali projektanci szablonw. Gwnie ze wzgldu na wydajno, patTemp late zostaa usunita w nowej wersji platformy Joomla!. Dlatego jeli szablon stworzono w oparciu o intensywne wykorzystanie patTemplate, jego adaptacja do nowego systemu bdzie trudniejsza ni w wikszoci przypadkw.

Podsumowanie
Po przeczytaniu tego rozdziau powiniene wiedzie ju, jak od podstaw stworzy szablon. Na projektowanie szablonw skada si wiele aspektw, m.in. stworzenie waciwego arkusza stylw. W rozdziale zawarto informacje, dziki ktrym bdziesz w stanie: Stworzy od podstaw szablon, ktry dziki CSS wykorzystuje ukad wielokolumnowy. Doda elementy graficzne, ktre sprawi, e szablon bdzie wyglda profesjonalnie. Udoskonali kompatybilno z rnymi przegldarkami, dziki czemu bdy obsugi CSS nie wpyn negatywnie na wygld strony. Stworzy stron zgodn ze standardami dostpnoci, aby umoliwi kademu jej przegldanie. Wykorzysta arkusze stylw w celu dostosowania wygldu strony do danej platformy, takiej jak PDA lub telefon komrkowy.

Tworzenie wasnego szablonu to tylko wierzchoek gry lodowej w zakresie modyfikacji strony Joomla!. W rozdziale 4. przedstawiono rozszerzenia, ktre znacznie wzbogac funkcjonalno Twojej strony.

4
Dodawanie i modyfikacja dostpnych rozszerze
Gama rozszerze Joomla! zaczyna si szablonami (najprostsza forma) i koczy si na dodatkach (najbardziej zaawansowana). Midzy tymi dwiema skrajnociami znajduj si moduy i komponenty. Podczas gdy szablony wpywaj na prezentacj Joomla!, dodatki wpywaj na dziaanie najbardziej podstawowych funkcji systemu. Komponenty i moduy s prostszymi rozszerzeniami, ktre su do dodania okrelonej funkcjonalnoci (np. sondy, fora lub menu). Wykorzystanie rozszerze trzech typw (moduw, komponentw i dodatkw) moe ogromnie zwikszy funkcjonalno systemu Joomla!. Dla Joomla! dostpnych jest wiele rozszerze i czasem trudno wybra ktre z nich. Przykadowo istnieje sze rnych dodatkw sucych do tworzenia galerii zdj kady ma swoje wady i zalety. Niektre maj zapewnion bardzo dobr obsug klienta, inne zawieraj wicej funkcji. Czasem wybranie waciwego rozszerzenia sprowadza si do sprawdzenia wszystkich dostpnych z danej kategorii. W tym rozdziale przedstawiono najbardziej zaawansowane i najpopularniejsze rozszerzenia, ktre mona przypisa do nastpujcych obszarw: funkcjonalno strony; organizacje i e-commerce; zawarto strony; komunikacja na stronie.

Przegld rozszerze z powyszych kategorii uzmysowi Ci potencja tkwicy w Joomla!. Zanim przejdziemy do sprawdzenia poszczeglnych rozszerze, warto odwiedzi ich katalog, ktry mona znale na stronie gwnej Joomla!.

104

Joomla!. Profesjonalne tworzenie stron WWW

Katalog rozszerze
Na stronie gwnej Joomla! (www.joomla.org) dostpny jest katalog rozszerze dziaajcych z Joomla! wraz z systemem oceniania i komentowania, co pozwala uytkownikom dzieli si ich dowiadczeniami zwizanymi z danymi rozszerzeniami. Katalog znajduje si pod adresem: http://extensions.joomla.org

Katalog rozszerze Joomla! (ang. Joomla Extension Directory JED) zawiera prawie 4000 pozycji (w momencie pisania tej ksiki) zarejestrowanych w systemie. Kade rozszerzenie przypisano do jednej z 23 kategorii. Na stronie gwnej katalogu umieszczono take pi najnowszych rozszerze i pi najwyej ocenianych. Kada pozycja zawiera opis i informacje zwizane z wykorzystaniem rozszerzenia. Typowy wpis do katalogu zawiera ponisze informacje: Opis Opis danego rozszerzenia. Zazwyczaj jest to krtkie podsumowanie historii wersji programu, a take lista zmian wprowadzonych w najnowszej wersji. Typ rozszerzenia Wikszo wpisw to poczenie kilku rozszerze w jedn cao. Poszczeglne elementy oznaczane s ikonami: czerwon liter Mw przypadku moduw, zielon liter C w przypadku komponentw i purpurow liter P w przypadku dodatkw. Ikony wywietlane przy danym wpisie wskazuj na typy rozszerze, ktre zawiera. Strona domowa (ang. Homepage) Strona domowa rozszerzenia. Jeli dane rozszerzenie Ci si podoba i uwaasz, e jest uyteczne, moesz wykorzysta ten odnonik, aby przej na stron, gdzie najprawdopodobniej znajdziesz inne rozszerzenia tego samego autora. Wersja (Version) Wywietla oznaczenie najnowszej wersji i informacje, kiedy zostaa upubliczniona. Deweloper i e-mail Te dwa pola zawieraj nazw i adres e-mailowy twrcy danego rozszerzenia. Liczba odwiedzin (Views) Przedstawia liczb odwiedzajcych, ktrzy kliknli wpis w katalogu, aby przeczyta cay opis danego rozszerzenia. Licencja (License) Licencja, pod jak udostpniono rozszerzenie. Najpopularniejsze licencje to GNU GPL, komercyjne i inne darmowe lub wolne licencje. Kompatybilno (Compatibility) Wersja Joomla!, z ktr dziaa rozszerzenie. Obecnie moliwe jest okrelenie kompatybilnoci z wersj Joomla! 1.0, Joomla 1.5 i obiema wersjami 1 . Data dodania (Date added) Data wczenia rozszerzenia do katalogu.

Oznaczone odpowiednio 1.0 Native, 1.5 Native i l.ONative,

1.5 Legacy przyp. tum.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze


Komentarze i oceny uytkownikw (User Reviews) Prawdopodobnie najuyteczniejszy element wpisu. Zawiera nadesane przez uytkownikw dowiadczenia, komentarze i opisy rnych problemw zwizanych z rozszerzeniem. Czsto znajduj si tutaj, poza komplementami, take informacje odnonie do funkcjonalnoci i instalacji lub rekomendacje innych rozszerze, ktre speniaj to samo zadanie tylko lepiej.

105

Na stronie wyszczeglniono 23 kategorie rozszerze, a kada z nich zawiera podkategorie. Dla uatwienia w kolejnych podrozdziaach kategorie podzielono na cztery gwne aspekty: funkcjonalno i obsuga strony; organizacje i e-commerce; zawarto strony; komunikacja na stronie.

Powyszy podzia uproci wyszukiwanie rozszerze, ktre dodaj okrelone funkcje do Joomla!. Katalog rozszerze zawiera wyszukiwark, chocia czsto jest ona mao pomocna w znajdowaniu rozszerze z okrelonymi cechami. Podczas wyszukiwania powiniene ogranicza si do pojedynczych sw, poniewa masz wtedy najwiksz szans znale wpisy, ktre bd zawiera wymagan funkcj. Wyszukiwanie przy wpisaniu wielu sw zwraca zazwyczaj zbyt wiele wpisw niezwizanych z interesujcymi moliwociami.

inkcjonalno i obsuga strony


Rozszerzenia funkcjonalno i obsugi strony rozbudowuj kluczowe funkcje, ktre mona znale w interfejsie administratora. Rozszerzenia tego typu umoliwiaj np. ustalenie dokadniejszej hierarchii artykuw ni tylko kategorie i sekcje czy dodanie opcji wyszukiwania. Poniewa ten typ zmian dotyczy kluczowej funkcjonalnoci systemu, najczciej konieczne jest instalowanie dodatkw. Rozszerzenia dla tego obszaru pogrupowano w JED w nastpujce kategorie: Administracja (ang. Administration) Rozszerzenia dla zaplecza. Zawiera podkategorie: Rozszerzenia dla administratorw (Admin Addons), Interfejs administracyjny (Admin Interface), Zmiana formatw danych (Data Coversion), Zarzdzanie baz danych (Database Management), Zarzdzanie plikami (File Management), Serwer (Server). Rozbudowywanie podstawowej funkcjonalnoci (Core Enhancements) Wzbogacenie podstawowej funkcjonalnoci systemu Joomla!. Zawiera podkategorie: Zarzdzanie treci (Content Management), Tworzenie raportw (Data Reports), Wstawianie i doczanie (Embed & Include), Instalatory (Installers), Menu (Menu Systems), Funkcjonalno dla kilku stron (Multiple Sites), Sekcje i kategorie (Sections & Categories), Nawigacja (Site Navigation).

106

Joomla!. Profesjonalne tworzenie stron WWW


Wyszukiwarki i indeksowanie (Search & Indexing) Zawiera podkategorie: Wyszukiwanie domen (Domain Search), Wyszukiwanie rozszerze (Extensions Search), Powizane wpisy (Related Items), Wyniki wyszukiwania (Search Results), Wyszukiwanie na stronie (Site Search) i Chmury znacznikw (Tags & Clouds). Jzyki (Languages) Rozszerzenia dla instalacji Joomla! zorientowanych na inne jzyki ni angielski. Zawiera podkategorie: Automatyczne tumaczenie (Automatic translations), Treci w wielu jzykach (Multi-Ungual Content) i Tumaczenia Joomla! (Translations for Joomla!). Narzdzia (Tools) Lista zewntrznych rozszerze, np. rozszerzenie dla programu Dreamweaver do obsugi stron Joomla!, programy instalacyjne dla rnych platform, rodowiska programistyczne PHP i inne. Obsuga strony (Site Management) Rozszerzenia zwizane z obsug strony i zarzdzaniem ni. Zawiera podkategorie: Pami podrczna (Cache), Statystyki treci (Content Statistics), Informacje autorskie (Crdits), Ranking (Ranks), Przyjazne adresy (SEF), Pozycjonowanie i metadane (SEO & Metadata), Statystyki strony (Site Analytics), Mapa strony (Site Map), Statystyki mchu na stronie (Site Traffic Statistics), Przekierowywanie (URL Redirection) i Odwiedzajcy ( Visitors).

W poniszym podrozdziale opisano instalacj alternatywnego edytora w systemie Joomla!.

Instalacja dodatkowego edytora WYSIWYG

System Joomla! zawiera dwa edytory: TinyMCE i XStandard Lite. Domylnym edytorem jest TinyMCE, za pomoc ktrego mona wprowadza formatowany tekst, wybiera fonty, styl (pogrubiony, pochylony itd.), rozmiar i inne. Wprowadzony tekst pojawi si w tej samej formie na stronie. XStandard Lite take zawiera funkcje WYSIWYG 2 . Rnica midzy dwoma edytorami polega na tym, e XStandard Lite w przeciwiestwie do TinyMCE tworzy w peni poprawny kod XHTML i HTML. Jeli nie okrelono domylnego edytora, wszystkie artykuy bd wprowadzane jak zwyky tekst. Poniewa Joomla! jest systemem opartym na HTML, zwyky tekst oznacza w praktyce kod HTML.

Edytor TinyMCE zosta napisany w JavaScripcie, a jego poprawne dziaanie potwierdzone na wielu rnych przegldarkach (Internet Explorer, Firefox, Opera i Safari). Pozwala na tworzenie kodu XHTML 1.0, a take instalacj dodatkowych jzykw (w tym polskiego), tematw i wtyczek (wczajc w to Adobe Flash Player). XStandard Lite jest edytorerr dostpnym w postaci skompilowanej, co oznacza, e obecnie mona go stosowa tylke w systemie Windows. Pomijajc przewag funkcjonalnoci XStandard, uruchamianie skompilowanego kodu oznacza ogromn przewag pod wzgldem wydajnoci nad TinyMCE.

Oba wymienione edytoiy nie s jedynymi, ktre doczono do Joomla!. Istnieje kilkanacie innych edytorw w katalogu JED, ktre mona pobra i zainstalowa. Szeroki wybr edytorw oznacza rnorodno dodatkowej funkcjonalnoci, np. profile ustawie uytkownikw.
2

Ang. What You See Is What You Get To, co widzisz, jest tym, co otrzymasz przyp. tum.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze

107

formatowanie kodu rdowego, obsuga wtyczek, zarzdzanie dokumentami, edytowanie arkuszy stylw i wiele innych. Przykadowo moesz zainstalowa rozszerzenie JoomlaFCK, ktre zawiera mniej funkcji ni TinyMCE lub XStandard, ale jest duo mniejsze i szybsze ni standardowe edytory. Rozszerzenie JoomlaFCK, przedstawione na rysunku 4.1, oparto na skrypcie FCKeditor, stworzonym przez Frederico Caldeira Knabbena. Jest to jeden z pierwszych edytorw dostpnych za porednictwem przegldarki WWW, ktry mia pen funkcjonalno WYSIWYG bez koniecznoci instalacji dodatkowego oprogramowania. sunek 4.1.
iytor JoomlaFCK a niewielki kod, :iki czemu :ia!a sprawnie
Tytu Alias Sekcja WeIcome to Joomla! welcome-to-ioomla News Opublikowane arona startowa Kategoria O Nie 'Nie Latest Tak 'Tak ID 1 tyk ulu: .1 St.it iis Odsony Popi awiony Ut *oi zony Po|i.iniony 1 Opublikowan 92 Wyczyi< 29 razy czwartek, 1 i czwartek, 08

3 S t dkmn . do ou et u LA ffl :,[b] / J * ; J= = I : i :[SJ m %'iii A i H <> n a 1 sMajte S i| Styl i" Fr a N r a yDV ' Czcionka omt om l ( I ) n Jno^ia. .,'BP w g a - i w O ' -

M '" B O ^ G ?

Parametry: artyku

Autor

Inny Mit os ! ; i.>'. <!'><;*<>!! > '

Joomla 1 is a f i e e open soiuce framework and content publishing system designed foi quickly creating highly interactive multi-language Web sites, onlme I communities, media portals, blogs and eCommerce applications

Rozpoczrtij p M t p u i K? k Z k z pubikacj ao c
Parametry: rozszerz Mst.idaiie

Joomla! provides an easy-to-use graphical user interface that 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.

Joomla! Logo

With a fully documented library of developer resources, Joomla! allows the customisation of every aspect of a Web site including presentation, layout, administration, and the rapid integration with third-party applications. Joomla! has a rich heritage and has been crowned CMS king many times over. N o w with more power under the hood, Joomla! is shifting gear and provides developer power while

JoomlaFCK skada si z pojedynczego dodatku, ktry mona zainstalowa w zapleczu administracyjnym. Jedn z najbardziej uytecznych (i unikatowych) funkcji JoomlaFCK jest moliwo wykorzystania szablonw dla wprowadzanych artykuw w podobny sposb jak Microsoft Word zawiera szablony dla rsum, prezentacji itd. Szablony powinny zosta zapisane w katalogu, ktry znajduje si najprawdopodobniej (w odniesieniu do gwnego katalogu Joomla!) w: \p lugins \editors Xfckeditor Szablony zapisywane s w formacie XML w pliku fcktemplates.xml. dwa szablony. Poniej kod pierwszego z nich: Domylnie dostpne s

<Template title="Image and Title" image="templatel.gif"> <Description>One main image with a title and text that surround the image.</Description> <Html> <![CDATA[ <img style="MARGIN-RIGHT: lOpx" height="100" alt=" " width="100" align="left" /> <h3>Type the title here</h3> Type the text here ]]> </Html> </Template>

108

Joomla!. Profesjonalne tworzenie stron WWW


Zauwa, jak proste jest w tym przypadku zastosowanie szablonw. Projektowanie szablonw dla wprowadzanych treci moe by szczeglnie przydatne, jeli Twoja strona ma kilku redaktorw. W ten sposb moesz nada artykuom jednakow form, jednoczenie oferujc wicej funkcji ni za pomoc prostego formularza. Przykadowo jeli prowadzisz stron telewizyjnego programu o gotowaniu i chciaby, eby przepisy byy dodawane na stron przez pracownikw programu, szablon przepisu znaczco przyspieszyby wprowadzanie wpisw.

Dodawanie wasnych stylw do TinyMCE


Istnieje moliwo dodania wasnych stylw do listy w edytorze TinyMCE, jak zilustrowano na rysunku 4.2, dziki czemu redaktorzy mog korzysta ze stylw odpowiadajcych funkcjom strony. Przykadowo strona powicona programowaniu bdzie zawiera artykuy z elementami kodu rdowego. Mona wtedy stworzy styl, ktry powodowaby automatyczne wywietlanie kodu rdowego fontem Courier z szarym tem, oddzielajc go od reszty tekstu. Rysunek 4.2.
Dodanie jednego lub kilku stylw TinyMCE umoliwia lepsze dopasowanie treci i strony
51HS Sekcja welcome^o^oomla News " S t r o n a startowa Kategoria Odsony Popiaiviony utwoi zony U . ~ --StylesPoplamiony 92 Wy*; 29 razy Czwartek Czwartek

_j ' x. x' 1 - J yellowhighlighler 2 ""fTiii!

P.ll.iriifrtly: .irtyk

Joomla! is a free open source framework and content publishing s y s t e m designed for guickly creating highly interactive mujti-language Web sites, online communities, media portals, blogs and eCommerce applications. Powered fey J o o m l a ! p r o v i d e s an e a s y - t o - u s e graphical user interface t h a t simplifies the m a n a g e m e n t and p u b l i s h i n g of large v o l u m e s of content including H T M L , d o c u m e n t s , and rich m e d i a . J o o m l a ! is u s e d by o r g a n i s a t i o n s of all sizes for Public W e b sites, I n t r a n e t s , a n d E x t r a n e t s and is s u p p o r t e d by a c o m m u n i t y of t h o u s a n d s of users. D.t.i ut rtoi R u - p o r z m i pi iMil

Joomla!

W i t h a fully d o c u m e n t e d library of d e v e l o p e r r e s o u r c e s , J o o m l a ! allows t h e c u s t o m i s a t i o n of every aspect of a W e b site Including p r e s e n t a t i o n , l a y o u t , a d m i n i s t r a t i o n , a n d t h e rapid i n t e g r a t i o n with t h i r d - p a r t y applications.

Zakocz publik.' P.nametiy: 1 0 Metad.ine

TinyMCE pozwala wykorzysta wasny plik CSS zamiast domylnego. Dobrym pomysem jest skopiowanie domylnego pliku CSS i dodanie do niego swoich nowych stylw. Domylnie plik znajduje si, wzgldem gwnego katalogu Joomla!, w: \plugim\editors\tmymce\jscripts\tiny_mce\themes\advanced\css\editor_content.css Skopiuj plik editor content.css do innego katalogu. Generalnie najprociej jest skopiowa ten plik do katalogu \css dla wybranego szablonu, dziki czemu style mona bdzie lepiej dopasowa do wygldu strony. Dla uproszczenia skopiowaem ten plik do gwnego katalogu serwera W W W i nazwaem go mytinymce.css. Wprowad do tego pliku style, ktrych potrzebujesz na stronie. Ja dodaem kilka stylw, by podwietli tre:
.purplehlghlighter { background: purple: color: #000000:

}
.bluehighlighter { background: blue: color: #000000:

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze


.yellowhighlighter { background: yellow; color: #000000;

109

}
Aby doczy stworzony arkusz stylw, otwrz opcj Dodatki w interfejsie administratora Joomla!. Kliknij Editor TinyMCE 2.0, aby przej do ustawie dodatku. W polu Wasny arkusz stylw wprowad adres URL, ktry prowadzi do utworzonego wczeniej pliku, pliku CSS, jak przedstawiono to na rysunku 4.3. sunek 4.3.
jrowad mpletny adres ?L nowego ku CSS w pole asny arkusz A w
Nie c z y s c e n c j i O-sti ze<jaj, cjdy Anuluj" Wer sja skompresowana O Tak ' . ; Nie O Wczone ' . Vtfczone

(t' W y c z o n e

'<tJ W y c z o n e

A<fr e s y v*ewrttt z n e Kierunek t e k s t u Automatyczny wybr jzyka Kod jzyka

Wzgldne

Od lewej do prawej > Nie O en Tak

Zabronione elementy Klasy CSS szablonu Wasny arkusz stylw O Nie Tak

/ /

http :fllocalhost^ooml

Na zdalnym serwerze adres moe przypomina poniszy: http://www.przyklad.com/mytinymce.css Kliknij przycisk Zapisz, aby wprowadzi zmiany. Od teraz, po otwarciu artykuu w edytorze TinyMCE, dodane style bd dostpne w menu.

idawanie obsugi plikw i FTP


Czasem konieczny jest bezporedni dostp do strony Joomla! za pomoc przegldarki, kiedy niedostpny jest klient FTP, szczeglnie wwczas, gdy korzystasz z urzdzenia przenonego lub publicznego dostpu do sieci (np. w kawiarence internetowej lub bibliotece). Dziki rozszerzeniu joomlaXplorer moesz doda funkcjonalno zarzdzania plikami do Joomla!. Po zainstalowaniu dostpu do joomlaXplorer (zobacz rysunek 4.4) mona klikajc opcj w menu Komponenty, w interfejsie administratora. W joomlaXplorer wywietlana jest kompletna lista katalogw i plikw w danym folderze serwera WWW, a nawet pasek stanu informujcy o wolnym miejscu. Obecnie joomlaXplorer jest wydany prawie w 20 jzykach, m.in. angielskim, duskim, niemieckim, francuskim, hiszpaskim i rosyjskim 3 .

Niestety, nie jest dostpny po polsku p r z y p . tum.

110

Joomla!. Profesjonalne tworzenie stron WWW


Dii ectoiy:..

Rysunek 4.4.
Za pomoc rozszerzenia joomlaXplorer mona zarzdza plikami, a take symulowa poczenie FTP z poziomu przegldarki internetowej

4 Joomla! J^piorer H.ime ; 0C ggicrt,en iggioomla


Size

File

Type Directory Directory Directory

Modified 2 Q/ 1 0 : 0 8S2 2 i 3 20A82 0 : 83/1 2 3 20/02 2 0 081/9 3

Perms 77 7 drwxrwxrwx 77 7 drwxrwxrwx 77 7 77 7 drwxrwxrwx 77 7 drwxrwxrwx 77 7 drwxrwxrwx 77 7 drwxrwxrwx 77 7 77 7 77 7 0 ff 6t>

o.pl Directory Directory 20/2 0 : 8D/1 2 3 20/82 0 : :> 080/1 2

^m i ^iphpMy d n fS-e. ed = 9 ' Igi sonatapi! pl

Directory Directory Directory 27 K . B 2 GF Picture I

20? 82 0'i:4i 8D/3 20/82 0 3 080/1 2 f 20/82 0 : t 080/1 23 20/22 00 071/1 4C :

a ah jrti.gif pce

Rozszerzenie mona wykorzysta do wyszukiwania, edytowania, usuwania, kopiowania, zmieniania nazw, tworzenia i rozpakowywania archiww plikw oraz katalogw. Pozwala na wysyanie i pobieranie plikw za pomoc dostarczonego interfejsu lub symulacji FTP. JoomlaXplorer umoliwia uytkownikom zmienianie praw dostpu do plikw i katalogw za pomoc narzdzia przypominajcego chmod. Komponent moe zosta wykorzystany tylko przez uytkownika z uprawnieniami superadministratora. Komponent joomlaXplorer mona pobra z poniszej strony: http://joomlacode.org/gf/project/joomlaxplorer/frs/

Dodawanie mapy strony


Dodanie mapy strony jest czsto jedn z najlepszych metod uproszczenia nawigacji na niej. Mapy strony brakuje czsto na mniejszych witrynach, poniewa rczne stworzenie jej jest trudne, a zarzdzanie mczce. Na szczcie dla uytkownikw Joomla! istnieje wiele rozszerze, ktre m a j moliwo automatycznego tworzenia mapy strony. Czas instalacji i konfiguracji jest krtki, a zmiany wprowadzane s automatycznie i zawsze odpowiadaj aktualnemu stanowi strony WWW. Najpopularniejszym narzdziem do tworzenia mapy strony jest rozszerzenie Joomap, ktre przedstawiono na rysunku 4.5. Mapa strony skada si m.in. z menu, kategorii i sekcji. Joomap potrafi take stworzy map strony w formacie Google Sitemap XML, co pozwala na lepsz integracj z systemem Google. Joomap jest prostym komponentem, ktry mona zainstalowa dziki opcji Rozszerzenia, a nastpnie doda jako ostatni wpis do Main Menu.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze


sunek 4.5. zszerzenie omap umoliwia orzenie namicznej 3py strony, ira 'zwierciedla Zanizacj strony
Joomap Mam Menu
Heme Section Category 2

111

Another Arlid

Testcategory

SectlonBlog
Another Article

i rti tarticli Cate>

Secondary

Menu #3

W rozdziale 13. zawarto wicej informacji na temat map strony (i Joomap). Znajdziesz tam take opisy innych rozszerze, ktrych dziaanie wpywa na pozycj strony w wyszukiwarkach internetowych.

immunity Builder
Community Builder (CB) jest rozszerzeniem o otwartym kodzie rdowym, ktre znaczco zwiksza moliwoci Joomla! w zakresie zarzdzania uytkownikami. Jest to jedno z najpopularniejszych rozszerze w wiecie Joomla!. Funkcje CB to m.in.: zarzdzane hasa i grupy; ustawianie przez uytkownikw wasnego awatara; dodatkowe pola w profilach uytkownikw; listy uytkownikw; cieki pocze midzy uytkownikami; wasne zakadki; zarzdzanie przebiegiem procesw, takich jak potwierdzenie Warunkw korzystania z serwisu, wysyanie wiadomoci e-mailowych z daniem aktywacji konta, informowanie administratora o nowych uytkownikach, moliwo zdefiniowania wiadomoci e-mailowych wysyanych do nowych uytkownikw, ktre mog zawiera dowolne informacje z profilu uytkownika, w formacie tekstowym lub HTML; integracja z innymi komponentami, takimi jak systemy wiadomoci prywatnych (PMS Personal Mail System), galerie i wiele innych.

112

Joomla!. Profesjonalne tworzenie stron WWW


Rozszerzenie Community Builder mona znale pod adresem: www.joomlapolis. com/

Jedn z wad CB (ale to jednoczenie zaleta) jest cakowicie odmienny system rejestracji i logowania ni standardowy w Joomla!. Oznacza to czciowe oddzielenie funkcji zwizanych z zarzdzaniem uytkownikami od reszty interfejsu Joomla!.

Struktura Community Buildera


Rozszerzenie CB posiada, podobnie jak Joomla!, wasn struktur wtyczek 4 . Gwny komponent nadal nosi oryginaln nazw Community Buildera {comprofiler). Wikszo funkcji zawarta jest w jednym z trzech kluczowych moduw doczonych do CB. Podstaw CB jest system logowania odpowiada za zoony proces rejestracji oraz logowania ktry moe zosta rozszerzony przez administratora. Za pomoc CB mona doczy pola z dodatkowymi informacjami do profilu uytkownika, co przypomina rozszerzalny system zarzdzania kontaktami. Platforma logowania dostpna jest take za pomoc interfejsu rozszerze Joomla!, dziki temu moliwa jest wymiana informacji z innymi dodatkami Joomla!. System logowania CB mona zintegrowa (midzy innymi) z poniszymi rozszerzeniami Joomla!: Simpleboard lub JoomlaBoard, myPMS, Mamboblog, Yanc tab newsletter, zOOm Gallery, uddelM (prywatne wiadomoci), CB Gallery, PHPBB bulletin board system, Group Jive.

Strona gwna komponentu w interfejsie administratora zawiera list wtyczek, ktre s domylnie dostpne, co zilustrowano na rysunku 4.6. Gdy zainstalujesz nowe rozszerzenie CB, pojawi si ono na licie. Podstawowy ekran ustawie uytkownika, przedstawiony na rysunku 4.7, skada si prawie z tych samych opcji, co zwyky system rejestracji Joomla!. Na tym kocz si podobiestwa. W przypadku CB istnieje moliwo okrelenia dodatkowych parametrw dla wybranych grup lub wszystkich uytkownikw.

Wtyczki (ang. plug-ins) nazywane s w Joomla! dodatkami p r z y p . tum.

Rozdzia 4. Dodawanie i modyfikacja dostpnych r o z s z e r z e

113

unek 4.6. mny ekran erfejsu mmunity ildera edstawla list stalowanych /czek

k.

, COMMUNITY V2

Your version i s : Latest version:

1.0.2 1.0.2

Copyright 2004 - 2006 MamboJoe JoomlaJoe, Be.it and CB team. This component is leleased undei the GIIUGPL License and a fiee C o m m u n copyright statements m u s t be kept. Deiivate work m u s t piominently duly acknowledge original work and include visible online link www.ioomiapoiis.com Credits: Nick A. Documentation and Public Relations

If y o u like the services provided by this free component, please consider making a small donation to support the team behind it: Donate in EUR to CB.Team@joomlapolis.com Donate in USD to CB.Team@joomlapolis.com Community Builder includes following components: Application Icons Tabs Calendar overLib Snoopy Bes (Menus Vet sion N/A 1.02 1.1 4.17 1.2.3 1.0 License htt p: I f w w w foood .net/agreement .htm http: /.'Web fx .eae .net .license html GNU Lesser General Public License http: / / w w w bosrup com/Vveb/overlib/?License GNU Lesser General Public License Limited Community Builder JoomlaPolis Lic ense

unek 4.7. dstawo we tawienia profilu rtkownika podobne tych ystemu imla!

Contact Info llame: Fli st lianie: Middle N a m e : L a s t lianie: Email: Usei name: P a s s w o r <1: Verify P a s s w o r d : Jzyk witryny: Str efa c z a s o w a : - Wybierz jzyk V Kowalski kowalski@onet.pl ko walski@onet .pi . J a n Kowalski Jan

. % fi

% fi 9 % fi mm II
V

(UTC 00:00) Uniwersalny: Dublin, Lizbona, L o n d y n Witryna " ^ ^ : %

Group:

- Autor - Redaktor - Wydawca - Zaplecze - Operator - Administrator - Gwny administrator

Block U s e r : Approve User: Confirm User:

No Yes ' Yes

V v V

^j % ^

Dodatkowe pola m o g przyj jeden z 11 typw: przycisk wyboru, data,

114

Joomla!. Profesjonalne tworzenie stron WWW


adres e-mailowy, obszar edycyjny, pole tekstowe, wielowierszowe pole tekstowe, przycisk opcji, adres W W W , lista rozwijalna, przyciski wyboru dla kilku opcji, ogranicznik pl.

Dla kadego z pl CB mona wybra dowolny z powyszych typw. Przykadowo jeli chcesz da uytkownikom moliwo okrelania preferowanego typu CMS w swoich profilach, moesz wykorzysta rozwijaln list. Pola moesz dodawa za porednictwem opcji Field Management, dostpnej w menu Community' Buildera, co przedstawiono na rysunku 4.8. Rysunek 4.8.
Dodawanie nowego pola, ktre pozwala uytkownikowi okreli preferowany system CMS

i Type: Tab: Name: Ule: Drop Down (Single Select) Contact Info cb_cmbtype Referowany Typ C K' ichowuje preferowany typ CHS V

Description/"!" field-tip: text or HTML:

Required?: Show on Profile?: User Read Only?: Show at Registration?: Published: Size:

N > T; N N N

Use the table below to add new values. Add a Value Name Joomla 1.5 Joomla 1.0 Vigenette

Po zapisaniu pola musisz je opublikowa. Nastpnie, jeli przejdziesz do ekranu ustawie profilu uytkownika, przedstawionego na rysunku 4.7, zobaczysz, e pojawio si nowe pole. Moliwo dostosowania profilw uytkownika (wczajc w to nawet wymagane" polaj daje efekt w postaci zbierania najwaniejszych informacji o odwiedzajcych.

By moe zauwaye, e na rysunku 4.7 wszystkie informacje o uytkowniku pojawiy si w jednej zakadce, zatytuowanej Contact Info. By moe zauwaye take, e podczas tworzenia nowego pola wybrana bya opcja umieszczenia go wanie w tej zakadce. System

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze

115

CB umoliwia stworzenie dodatkowych zakadek, zawierajcych nie tylko informacje o uytkownikach, ale take poczonych z innymi rozszerzeniami, ktrych funkcje zwizane s z profilem uytkownika, np. blog uytkownika. Wszystkie zakadki w profilu uytkownika wywietlane s w Tab Manager (przedstawiono to na rysunku 4.9). Korzystajc z tej opcji, moesz zmieni nazw zakadki, jej pozycj i typ wywietlania. Jeli jest to zakadka szczeglnego typu (na przykad zakadka menu), zostanie wywietlony panel zawierajcy dodatkowe parametry. rsunek 4.9.
pcja Tab lanager rzechowuje st zakadek, tre mona oda do profilu ytkownika

tyczki CB
Community Builder zawiera obsug wasnych wtyczek. Wikszo z nich czy system autoryzacji CB z innymi rozszerzeniami. Na rysunku 4.10 zilustrowano ekran Plugin Manager, ktry przedstawia list wtyczek zainstalowanych domylnie. Cz z nich jest oznaczona w kolumnie Type jako templates, co oznacza, e wpywaj na wygld CB. Wtyczka typu user odpowiada za kluczowe funkcje systemu lub za poczenie z innymi rozszerzeniami Joomla!. Zauwa, e domylna instalacja zawiera wtyczki czce z Simpleboard Forum, Mamblog Blog, YaNC Newsletters, PMP MyPMS i Pro. Wicej wtyczek tego typu mona znale na stronie internetowej CB.

watar uytkownika
Jedn z kluczowych opcji, ktre sprawiaj, e uytkownicy odwiedzajcy stron angauj si w jej funkcjonowanie, jest moliwo ustawienia okrelonego awatara (obrazka), ich graficznej wizytwki. Obrazek ten wywietlany jest w profilu uytkownika. Chocia wybrana nazwa uytkownika moe go wystarczajco reprezentowa, to jednak may obrazek pozwala w wikszym stopniu zakomunikowa wasn osobowo.

116

Joomla!. Profesjonalne tworzenie stron WWW


Plncjin Managei [sits]
a

Rysunek 4.10. Ekran Plugin Manager przedstawia list wtyczek zainstalowanych w systemie CB

Install Ptuyin Filter:

- Select Type -

V C dei M -1 V V 1 2 3 4 g. V V V * .... . 5 6 1 2 3 Public Public Public Public user user user user user user user user ** Ace s s e Public Public Public Public Public Public Type language tempttes tompiates templaes tmplate; tompiates

i 3 4 S e 8 3 10 11 13 11 15

P l u g m llame Default language (English) Default VVmCiassic WebFX OSX n Luna Dark

installed Published Peoi d e i

V
V v/

CB Core CB Menu CB Connections

Joomla Content Author U Simpleboard Forum O Mamblog Blog YaNC 1 4b3 Newsletters PMS MyPMS and Pro v Install l l e w PliKjin V 0 O

5 6 7 8

Public Public Public Public

Poka: 20

Uplo.id Pack.uje File Package File: j Ftzegldaj... Upload File & Install

Wysyanie obrazkw moe by dodatkowo moderowane, aby awatary byy wywietlane, dopki nie zostan zaakceptowane. Opcja moderacji moe by bardzo przydatna w przypadku strony o tematyce rodzinnej lub ochrony przed naruszaniem praw autorskich do obrazkw. Prawa autorskie i wykorzystanie obrazkw w internecie to temat peen kontrowersji. Bez wtpienia kopiowanie treci chronionych prawem autorskim jest naruszeniem praw waciciela fakt ten nie podlega dyskusji. Jest wielu autorw i posiadaczy praw autorskich, ktrzy nie maj nic przeciwko publikowaniu ich obrazkw, o ile nie s wykorzystane do dziaalnoci zarobkowej, a take nie s przedstawiane w sposb negatywny. Fanfilmy inspirowane rnymi produkcjami tworzone s od lat, a tylko kilka studiw zabrania tworzenia takich dzie. Jeli martwi Ci status prawny, powiniene skontaktowa si z prawnikiem. Aby umoliwi uytkownikom dodawanie obrazkw, zaloguj si na stron, na ktrej masz zainstalowany CB. Przejd do profilu uytkownika, gdzie zobaczysz pust ikon. Kliknij j, a nastpnie wybierz pozycj My CB Profile w User Menu. Nastpnie moesz wybra opcj Update Your Image w Edit menu, eby doda wasny obrazek. Nie zostanie on jednak wywietlony do momentu zatwierdzenia przez administratora.

Pobieranie i instalacja
Po pobraniu Community Buildera zauwa, e nie jest to pojedynczy plik, lecz zestaw plikw, ktre naley zainstalowa. W zestawie tym znajduj si nastpujce elementy:
comprofi Ter To archiwum zawiera waciwy komponent CB, ktry naley zainstalowa w Joomla!. cblogin

Modu logowania, ktry naley doda do gwnej strony Joomla!.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze


mod_comprof i 1 ermoderator Przypisuje poszczeglnym moderatorom moliwo zatwierdzania procesu rejestracji. mod_comprofi 1 eronl i ne Wywietla list uytkownikw CB, ktrzy wanie odwiedzaj stron.

117

Wymagane s tylko dwa elementy: komponent comprofiler odpowiada za zarzdzanie systemem z poziomu interfejsu administracyjnego, i modu cblogin pozwala uytkownikom zalogowa si do systemu CB. Comprofiler to take oryginalna nazwa Community Buildera, do ktrej odwoania znajdziesz w wielu miejscach zaplecza. Przy pierwszym uruchomieniu CB powiniene wybra opcj Tools z menu. Jak zilustrowano na rysunku 4.11, doczone narzdzia pozwalaj zainstalowa przykadowe dane, skopiowa dane uytkownikw z obecnego systemu rejestracji, a take sprawdzi poprawno danych w bazie CB.

Tools Manager

This will load sample data Into the Joomla Community Builder component. This will s y n c h r o n i z e the JoomlaMlambo U s e r table w i t h the Joomla Community Builder U s e r Table. Please make s u r e b e f o r e s y n c h r o n i z i n g that the u s e r name t y p e (first/la stria me mode c h o i c e ) is set c o r r e c t l y in C o m p o n e n t s Builder - s Configuration - G e n e r a l , s o that the u s e r - s y n c h r o n i z a t i o n imports the n a m e s In the appropriate format. This will p e r f o r m a s e r i e s of t e s t s o n the Community Builder d a t a b a s e and report back potential inconsistencies without c h a n g i the database.

Unek 4.11. Na stronie narzdzi CB moesz wybra opcj instalacji przykadowych danych, skopiowania nych uytkownikw Joomla! do systemu CB, a take sprawdzi poprawno danych w bazie CB

rganizacje i e-commerce
Rozszerzenia zwizane z organizacjami i e-commerce czsto su do poczenia systemu Joomla! z zasobami zewntrznymi (na przykad zewntrznymi sieciami), dziki ktrym mona skorzysta z programw partnerskich, systemw elektronicznej patnoci i innych. Rozszerzenia tego typu wykorzystywane s gwnie przez organizacje, koordynuj oraz uatwiaj komunikacj wewntrz i na zewntrz organizacji. Rozszerzenia dla tego obszaru pogrupowano w JED w nastpujce kategorie: Reklamy i programy partnerskie (ang. Ads & Affiliates) Zawiera podkategorie: Programy partnerskie ( A f f i l i a t e Advertising), Amazon, Zarzdzanie bannerami (Banner Management), Ogoszenia (Classified Ads), Bannery naronikowe (Corner Banners), Reklamy Google (Google Ads), Odnoniki i reklamy tekstowe ( Text & Link Ads). E-Commerce Zawiera podkategorie: Handlowe programy partnerskie (Affiliate Carts), Aukcje (Auction), Bilingi i faktury (Billing & Invoices), Darowizny (Donations), Patny dostp (Paid Access and Content), Systemy patnoci (Payment systems). Sklepy internetowe (Shopping Cart).

118

Joomla!. Profesjonalne tworzenie stron WWW


Dla poszczeglnych rozszerze (Extensin Specijic) Zawiera podkategorie dla rozszerze i wtyczek: AdsManager, AlphaContent, BannersManager, Community Builder, dcsFlashGames, DOCMan, ECJC, Fireboard Forum, Freeway, Hot Property, JCE, JContent Subscription, jDownloads, Jomres, Joom!Fish, JoomLeague, JoomSEF, nBill, Pages-and-Items, Phoca, PUArcade, RSGallery2, SEF Service Map, Seyret, SOBI2, VirtueMart. Klienci i oprogramowanie do pracy grupowej (Clients & Groupware) Zawiera podkategorie: Autorzy (Authors), CRM, Pomoc uytkownikom (Help desk), Status internetowy (Online Status & Profile), Zarzdzanie projektem i zadaniami (Project & Task Management), Social Bookmarking, Wiki. Rynki branowe (Vertical Markets) Zawiera podkategorie: Samochody i inne pojazdy (Auto & Vehicles), odzie i jachty (Boat & Yachting), Ksiki i biblioteki (Books & Librarles), Edukacja (Education), Jedzenie i napoje (Food & Beverage), Nieruchomoci (Real Estate), Podatki i zastawy hipoteczne (Taxes & Mortgages). Niektre z moliwoci oferowanych przez rozszerzenia z tych kategorii potrafi zmieni prost stron Joomla! w profesjonaln i (lub) komercyjn witryn. Opcja subskrypcji jest przykadowo jedn z popularniejszych funkcji.

Meneder subskrypcji
Jedn z wbudowanych funkcji Joomla! jest moliwo ograniczenia treci dla poszczeglnej grupy lub po prostu uczynienia artykuw niewidocznymi dla niezarejestrowanych uytkownikw. Niestety, nie istnieje funkcja ograniczania dostpu do treci do poszczeglnych uytkownikw w ograniczonym czasie. Takie moliwoci ma rozszerzenie Open Source Account Expiration Control & Subscription Manager (AEC). Jak przedstawiono na rysunku 4.12, powyszy komponent dodaje na stronie Joomla! funkcjonalno patnego dostpu do treci. Rozszerzenie AEC mona poczy z innymi (np. CB), co pozwala na korzystanie z takich systemw patnoci, jak: Paypal, Authorize.Net, 2Checkout, Allopass, viaKLIX i inne. Umoliwia okrelenie rnorodnych planw patnoci, na przykad darmowe okresy prbne, patne i doywotnie oraz darmowe prbki. Za pomoc interfejsu administratora mona w prosty sposb skonfigurowa opcje patnoci za treci, a take poczenie z rnymi usugami patnoci. Moliwe jest take ustawienie subskrypcji dla rnych kont uytkownikw Joomla!.

Twrcy AEC cigle dodaj nowe systemy patnoci, dlatego upewnij si, e dysponujesz najnowsz wersj. Dodatkowo na stronie rozszerzenia znajduje si forum 5 , na ktrym mona uzyska pomoc. Odwied stron AEC pod adresem: https://globalnerd. org/index.php/AECl. html

Dostpne po uiszczeniu opaty przyp. tum.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze


sunek 4.12.
imponent AEC noliwia introlowany istp tre oparciu model ibskrypcyjny
What G a t e w a y s ate s u p p o r t e d ?

119

A C ciiiientlysupports: E Paypal fj)1 Fajimi Authori/.e.Net fy* Subscription |


the AEC hns also I ecently irlrleil stippoittoi tliese:

Supported Gatt Other Features Working with ot

viaKLIX

ii ,:" : gggj^l'heckout

M.0!Tt v

| Allopass

m
While these integrations have been tested to be working, there might be a bug left here or there, so just tell us if you have a problem with one of the

W are CUIIently woihimj o t incotpoiatmy: e u


WordPay O

u also have the choice to offer non-automatic payments to your plans This way, you can even handle customers who cant pay with one of the p

VISA1

klep internetowy MicroShop z patnociami Paypal


MicroShop jest wygodnym i prostym sklepem internetowym (zobacz rysunek 4.13), ktry umoliwia dodawanie przedmiotw i skadanie zamwie. Jest w peni zintegrowany z systemem patnoci Paypal, co upraszcza zamwienie. rsunek 4.13.
ozszerzenie [icroShop voliwia a stronie odawanie zedmiotw o koszyka
Browse

Capelo
C a p e l o " is an artist, an architect, a painter, a sculptor, a n d a ceramist. H i s paintings a n d c e r a m i c pieces decorate his breathtaking h o m e a n d can be f o u n d in collections a r o u n d the w o r l d

derby:

Product N a m e v

Display* Start

10 v < Prev t 2

Ceramic Sink.
^ y&KBUXBs $242.12 A d d to Cart Capelo is an artist, an architect, a painter, a sculptor, and a ceramist. His paintings arid ceramic pieces decorate numerous places throughout the world.

Capelo is an artist, ari architect, a painter, a sculptor, and a ceramist. His paintings and ceramic pieces decorate numerous places throughout the world.
:

242.12

Quantity: 1 A d d to Cart

Interfejs administratora, ktry umoliwia ustawienie opcji systemu patnoci, a take skadania zamwie, przedstawiono na rysunku 4.14.

120

Joomla!. Profesjonalne tworzenie stron WWW


[ Simple Layout | Extended Layout ]

Rysunek 4.14.
Zaplecze rozszerzenia MicroShop umoliwia ustawienie systemw patnoci takich jak Paypal

VirtueMart 1.1.2 (Check for latest version) C o n t r o l Panel Statistics

SfedlAdministration
j1 U Store Summary

|i Your Store: : Control Panel mwm w


Product List Category Tree Orders

)% Edit Store !<'; List Payment Methods fp- A d d Payment M e t h o d Shipping M o d u l e List p H p4" Credit Card List A d d Edit Cr edit C a r d T y p e s List Export Modules A d d Export Module Configuration Edit Store "

%
List Payment Methods

-y'-1
\
Help

Orders i Vendor
:

S- Reports

1 2> Shipping ; 2> Coupon

Meneder projektw Project Fork


Koordynacja ludzi pracujcych nad danym projektem moe by trudna i frustrujca, jeli nie zostan uyte waciwe narzdzia. Programy takie jak Microsoft Project lub Copper doskonale nadaj si do zarzdzania duymi projektami, ale ich sztywno ogranicza praktyczne wykorzystanie przy maych i rednich projektach. Dla systemu Joomla! istnieje rozszerzenie o nazwie Project Fork, ktre umoliwia zarzdzanie projektami z poziomu przegldarki. Jak zilustrowano na rysunku 4.15, rozszerzenie Project Fork jest narzdziem do zarzdzania projektami, a dokadniej do kontroli nad wieloma zadaniami i ludmi. Poniewa dziaa w ramach systemu Joomla!, dostp do Project Fork moliwy jest w kadym miejscu, w ktrym mona przeglda strony internetowe. Rnorodne opcje tworzenia raportw pomocne s w analizie obecnej i wczeniejszej wydajnoci. Funkcja obsugi dokumentw i plikw powizanych z projektem sprawia, e to rozszerzenie staje si miniaturow aplikacj do pracy grupowej. Nowy projekt tworzy si, klikajc przycisk New Project po wybraniu zakadki Projects. Po utworzeniu projektu mona przypisa do niego zadania. Kade z nich ma nazw, opis w postaci formatowanego tekstu, stan (np. anulowany, kompletny, opniony itd.), dat rozpoczcia, dat ukoczenia, aktualny postp (np. w procentach) i uytkownika, ktry jest odpowiedzialny za to zadanie. Dodatkowo uytkownik przypisany do zadania moe by automatycznie powiadamiany, kiedy ulegnie ono zmianie. Wikszo funkcji zarzdzania projektami w Project Fork (wczajc w to konfiguracj uytkownikw) dostpna jest z poziomu strony Joomla!. Rozszerzenie zostao pomylane w ten sposb, poniewa w przeciwiestwie do innych zada zwizanych z zarzdzaniem stron administrator projektu nie musi mie uprawnie administratora strony. Interfejs administracyjny umoliwia cakowit kontrol nad prawami dostpu i aktualnymi projektami.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze

121

project
^i-rtrol Panel Projects

iOid y o u k n o w ? Voters clicking or a project, ft will be set as- your urrerrt workspace.

It . Select your proj

Tasks

File M a n a g e i

Calendar

Board

Profile

Us

A nevy project h a s b e e n created!

/ Projects
Hew Copy Title Zapozmii ? si ? z J o o m l a ! Archive Delete Project fountlei Administrator Total t a s k s , 0 Poka: wszystko V lle*v Copy A i chive Delete Search; Total m e m b e r s 1 Total j i o u p s ,, 0 Cieatedon 10/30/2008, ,

]
j

linek 4.15. Strona gwna rozszerzenia Project Fork przedstawia list projektw, do ktrych dany <tkownik ma dostp

zszerzenie kart pracy


Aby zarzdza czasem w projekcie (a szczeglnie zlicza patny czas), moesz wykorzysta rozszerzenie TimeWriter. Interfejs tego rozszerzenia, ktry pozwala rejestrowa czas pracy, zilustrowano na rysunku 4.16. Dostpne s dwa sposoby prowadzenia rejestru: czas przeznaczony na klientw lub czas przeznaczony na projekty. Mona tworzy powtarzalne zadania, a take wywietla karty pracy. sunek 4.16.
rona

Timesheet Calendar

Suit 39 5 40 12 41 19 42 26 43 Total Billable H o u r s : Total N o n - B i l l a b l e H o u r s - 27 m 28 2 9 20 21 22 13 - 14 * 1 5 * 16 17 1 8 :rfSS $ K* 10 *= 11 m Hon hie October Weil 1 S35 2008 Tim Fi i 3 Sat 4

Reports

gwna zszerzenia

0.00 iOJO 0.00 0 00 + 0.00 0.00 0 00 + 0.00 0.00 0.00 + 0.00 0.00 0.00 + 000 0.00 0 00 0 00

neWriter
loliwia godne towanie ;zystkich /nnoci izanych irojektem j klientami

24

25

30

31

Podobnie jak w przypadku Project Fork, wikszo funkcji rozszerzenia TimeWriter dostpna jest za porednictwem strony gwnej. Aby uzyska dostp do tych funkcji, kliknij odnonik Reports (lekko niefortunna nazwa) w prawym grnym rogu. Zostanie wywietlona lista odnonikw do nastpujcych funkcji: Timesheet Report by Company (Przegld kart pracy wedug firm)', Timesheet Report by Project (Przegld kart pracy wedug projektw)',

122

Joomla!. Profesjonalne tworzenie stron WWW


Report Total Hours by Project (Przegld cakowitej liczby godzin dla poszczeglnych projektw); Report Total Mileage (Przegld caego przebiegu)-, Set User Preferences (Ustawienia uytkownika);

Show Vehicles (Poka list pojazdw)', Mileage Log Form (Formularz notowania Manage Companies (Zarzdzaj Manage Projects (Zarzdzaj firmami)', projektami). przebiegu)',

Zanim utworzysz projekt, musisz najpierw utworzy firm dopiero wtedy moesz zacz notowa liczb godzin. Kliknij odnonik Manage Companies, aby doda now firm. Nastpnie moesz klikn odnonik Manage Projects, aby stworzy nowy projekt. Kolejnym krokiem jest kliknicie ikony Assign na licie projektw, aby przypisa uytkownikw Joomla! do danego projektu. Funkcje tworzenia raportw umoliwiaj oglne zarzdzanie, a take tworzenie raportw tygodniowych dla okrelonych parametrw. Z poziomu zaplecza moesz zaimportowa dane Mambotastic Timesheets.

Dodawanie na stronie platformy aukcyjnej


Strona serwisu aukcyjnego eBay jest jedn z najpopularniejszych witryn internetowych. Wielu ludzi yje ze sprzeday produktw za porednictwem tego serwisu. Jeli chciaby zosta jednym z nich, Joomla! moe pomc! Dostpna jest spora liczba rozszerze, ktre umieszcz informacje o aukcjach na Twojej stronie Joomla!. W praktyce oznacza to, e moesz zaoy wirtualny sklep na stronie Joomla!, a ogldajcych kierowa na aukcje w serwisie eBay. Wikszo udanych przedsiwzi biznesowych opiera si na powracajcych klientach. Nie inaczej jest w przypadku przedsiwzi uruchomionych w serwisie aukcyjnym eBay. Dziki wstawieniu na stronie sklepu aukcyjnego stworzysz dla regularnych odwiedzajcych miejsce, w ktrym bd mogli kupowa produkty i usugi. Istnieje kilka rozszerze aukcyjnych, ktre dosownie dodaj funkcj prowadzenia aukcji na stronie Joomla!. Jest to opacalne tylko w sytuacji, kiedy wielu kupujcych przebija swoje oferty, podnoszc cen do akceptowalnego poziomu. Poniewa eBay pozwala dotrze dosownie do milionw potencjalnych klientw, przy czym zapewnia ochron przed faszywymi przebiciami, zastosowanie wasnej implementacji serwisu aukcyjnego jest kiepskim wyborem dla wikszoci webmasterw. Jeli mimo wszystko chciaby doda takie funkcje, sprawd zawarto kategorii Auction w JED.

Rozszerzanie My EBay Store, przedstawione na rysunku 4.17, umoliwia zaprezentowanie oferty Twojego sklepu w serwisie eBay na stronie Joomla!. Informacje na temat poszczeglnych aukcji s dynamicznie aktualizowane i zawieraj najwiesze informacje. Rozszerzenie wywietla informacje o produkcie, doczone zdjcia, aktualn cen i dat zakoczenia aukcji. Bez problemu przedstawia informacje o wicej ni 150 aukcjach.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze


unek 4.17.
zszerzenie ' EBay Store wietla tualne rmacje temat branych aukcji

123

M Ebay Store y
1 SEARCH J o

Reload

M V

L YR 52 b H - A E 1M : P i Pd UB Ms : -I o S ui e M2 M4 P& P ER 45,00 32 min;:1; U ' Ocehiai 8 speccr Ryban pornobrile: a E te. avsater NW ER 24,99 3 minii U 1 F I P RAIE a R OT T G L D E fUNZIONitl il U CLO E F R DO AD E D ER 62,55 18 m U i n

'

J M 1

Modu My EBay Stor moe zosta umieszczony w dowolnym panelu na stronie Joomla!. Jego pooenie, a take pozostae ustawienia moesz zmieni, wybierajc modu na licie opcji Moduy. Ekran parametrw przedstawiony na rysunku 4.18 pozwala ustawi dobr wywietlanych przedmiotw.
Pilmetry tmnlufu Ebay Site Seller ID K e y w o r d Search ferrari Search title and description United States v

Tak

Cr)

Nie

Search . r t e y o i y ID -1 n i n v H n j>t ice M x i m u m price S h o w H e m s w i t h Gallery i m a g e s only S h o w Buy It H o w i t e m s only O . Tak ' ' Nie

Tak Nie

B>,ry Store Module Size Headet Image Ebay L o g o Enable Search Box Search Box position

Wide Skyscraper (160 x 600) Electronics (GRAY) 12: Gray Tak O V Y

Nie

Gra ( t ) Dolne

Sort By S o i l Dir Tar get L ink Hull Result Handling. S h o w Gallery t n u g e

EndTime

v Descending

(?) Ascending O Tak

Nie V

Show Most Watched Items on Ebay.

Tak

Nie

awarto strony
Sercem kadej strony opartej na CMS jest jej zawarto. Rozszerzenia przedstawione w tym podrozdziale pozwol Ci wzbogaci typ treci zarzdzanych za pomoc Joomla! o podcasty, kartki elektroniczne, mapy i inne. Istniej nawet rozszerzenia potrafice zmieni stron Joomla! w rozszerzalny system wiki.

124

Joomla!. Profesjonalne tworzenie stron WWW


Rozszerzenia dla tego obszaru pogrupowano w JEB w nastpujce kategorie: Zawarto i newsy (ang. Content & News) Rozszerzenia, ktre umoliwiaj import lub tworzenie treci wykraczajcych poza standardowe artykuy Joomla!. Zawiera podkategorie: Lista artykuw (Article Listing), Pokaz slajdw dla artykuw {Article Slideshow), Blog, Newsy na stronie gwnej (Frontend News), Najnowsze wiadomoci (Latest News), Mikroblogi (Microblogging), Paski z wiadomociami (News Tickers & Scrollers), Losowe newsy i artykuy (Newsflash & Random), Popularne treci (Popular Content), Cytaty (Quotes), Oceny i przegldy (Ratings & Reviews), Kanay RSS (RSS Syndicate). Katalogi i dokumentacja (Directory & Documentation) Rozszerzenia, ktre umoliwiaj tworzenie dokumentacji na stronie. Zawiera podkategorie: Bibliografia (Bibliography), Katalog (Directory), Pobieranie plikw (Downloads), FAQ, Sowniki (Glossary & Directory), Portfolio i katalogi (Portfolio & Catalog), Odnoniki (Weblinks). Grafika i multimedia (Images & Multimedia) Rozszerzenia, ktre dodaj obsug treci multimedialnych. Zawiera podkategorie: Grafiki dla artykuw (Article Images), Odtwarzacze audio i galerie (Audio Players & Galleries), Kartki elektroniczne (eCards), Grafiki (Images), Pokaz slajdw (Image Slideshow), Mapy (Maps), Wywietlanie multimediw (Multimedia Display), Panoramy (Panorama), Galerie zdj (Photo Galleries), Dodatki do galerii (Photo Galleries extras), Podcasting, Radio internetowe (Radio & Shoutcast), Streaming i nadawanie (Streaming & Broadcasting), Galeria filmw (Video Gallery), Odtwarzacze wideo (Video Players), Rzeczywisto wirtualna i 3D (Virtual Reality & 3D).

Podcasting w Joomla!
Podcasting to nowe znaczce medium. Najnowsze badania Bridge Ratings pokazuj, e liczba ludzi, ktrzy pobieraj podcasty, wzrosa z 820 000 w 2004 roku do 4,8 miliona ludzi w 2005. Prognozy na rok 2010 przewiduj poszerzenie grupy odbiorcw do 45 milionw. Wedug Business Week" przez ostatnie sze miesicy roku 2004 i pierwsze sze miesicy 2005 liczba podcastw wzrosa o 2500 procent. Podcasting to wersja audio kanaw RSS. By moe zauwaye ikon odpowiadajc za RSS na ulubionej stronie z newsami. Za pomoc aplikacji zwanej czytnikiem kanaw mona subskrybowa (zapisa si do) dany kana. Program bdzie na bieco automatycznie pobiera najnowsze wiadomoci na Twj komputer do pniejszego przeczytania. RSS to umowne oznaczenie dla grupy formatw opartych na jzyku XML, ktre zawieraj informacje o subskrypcj i.

Podcasty wykorzystuj praktycznie identyczne pliki RSS, co upodabnia czytniki podcastw do czytnikw kanaw. Najnowsze pliki audio pobierane s przez czytnik podcastw (najczciej w formacie MP3 lub AAC) na dysk komputera lub urzdzenie przenone. Nastpnie moesz odsucha ich zawarto na komputerze (czciej bdzie to odtwarzacz MP3 lub iPod). Najpopularniejsz stron zawierajc podcasty jest iTunes witryna firmy Apple.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze

125

Joomla! umoliwia doczenie podcastw na stronie, tak eby dodanie nowego pliku audio powodowao jego automatyczne pojawienie si na odpowiednim kanale RSS. W ten sposb uytkownicy bd mogli pobra go automatycznie. Rozszerzenie Podcast Suit, ktre dodaje funkcje obsugi podcastw, mona pobra pod adresem: http://wwwjIleblanc.com/joomla/Articles/Podcast_Suite,_Version_l.l_Stable/ Powyszy pakiet skada si z komponentu, moduu i dodatku, ktre poczone daj pen funkcjonalno podcastw w Joomla!. Rozszerzenie umoliwia take integracj z serwisem iTunes. Modu z pakietu Podcast Suit, zilustrowany na rysunku 4.19, wywietla odnonik do dynamicznie tworzonego kanau RSS.
sunek 4.19.
Your Details Submit an At tide Submit ,i W#b Link Logout

odu Podcast lite zawiera Inonik noliwiajcy >danie ibskrypcji 'dcastw

We are Volunteers & & ^ M-

Stick to the Code!

# si _

Login Form Witaj Administrater, ( Wyloguj J Podcast

The Joornla! Core Team consists of volunteer developers, designers, administrators and managers who, together with a large range of work Groups of dedicated community members have taken Joomla! to new heights In its relatively short life This well-oiled machine s often copied but never surpassed. Joomla! has some wonderfully talented people taking Open Source concepts to the forefront of industry standards. Joomla! 1.5 is a major leap forward and represents the most exciting Joomla! release in the history of the project.

To ensure this code release, Wilco Jansen resorted to sending rum to joint lead-developer Johan Janssens. Johan, who's had a penchant for rum ever since the first "Pirate's of the Caribbean" movie screened, took the bait, mixed it with Cola, arid here we are with our latest 1.5 release It looks like pirate talk will figure quite a lot in future Joomla1 development!

Wicej...

? m J.

Only one edit window! How do ! , A ' create "Read more. "?

What is the FTP layer for ?

The FTP Layer allows file operations (such as installing Extensions ot updating the main configuration file) without having to make all the folders and tiles writable. This has been an

This is now implemented by Inserting a Re.id mo e... tag (the button is located below the editor area) a dotted line appears in the edited text showing the split location for the Read more... A new Plugm takes care of the rest. It is worth mentioning that this does not have a negative effect on migrated

Kana tworzony jest na podstawie ustawie okrelanych w interfejsie administracyjnym, na ekranie konfiguracji komponentu, co przedstawiono na rysunku 4.20. Rozszerzenie automatycznie wyszukuje nowe pliki w okrelonym folderze i tworzy kana na podstawie jego zawartoci. Niestety, to rozszerzenie nie ma funkcji obsugi wideo, czyli vodcastingu (yideo-on-demangcasting). Biorc pod uwag znaczcy wzrost vodcastingu, to niedocignicie powinno zosta wkrtce poprawione.

ileria zdj na stronie Joomla!


Galerie zdj (pryede wszystkim zawierajce zdjcia z rodzinnych albumw) zaczynaj dominowa w sieci. Wiele krcych w sieci dowcipw dotyczy liczby przesyanych zdj maych dzieci z powodu skali zjawiska dojdzie do przecienia czy. Potrzeba dzielenia si cyfrowymi zdjciami i wydarzeniami ze swojego ycia midzy rozdzielonymi o setki czy tysice kilometrw czonkami rodzin sprawia, e galerie zdj staj si bardzo atrakcyjnym narzdziem.

126

Joomla!. Profesjonalne tworzenie stron WN 1W


K o n t kjtii i i c j a Pami p o d r c z n a - . Nie i v Tak

Rysunek 4.20.

Konfiguracja pakietu przebiega za pomoc komponentu doczonego do Podcast Suit

Path f o i u p l o a d e d m e d i a components/com_podcast/media

Link titles. R a s h playei, c o d e , or Q u i c k T i m e Player W i d t h Player Hekjht Enclosure Link Titles

Links O

Flash Player O

HTML Code

Quicktime Player

Listen Now!

EK-losi.ii e C o d e

z, i ; p r z e c h o w y w a n i a 3600 MIME t y p e audio/mpeg

Items 5 Tytu My Podcast H y regular podcast Opis

Niezalenie od tego, czy chcesz przedstawi profesjonalne portfolio, czy tylko umieci ujcia pierwszych krokw Twojej creczki, Joomla! moe by odpowiednim rozwizaniem. Funkcj galerii zdj moe spenia kilka rnych rozszerze. Wedug ostatnich wylicze wyszukiwanie Google prowadzio do 50 rnych rozszerze dodajcych galerie na stronach Joomla!, zarwno komercyjnych, jak i darmowych. Rozszerzenie RSGallery2 jest najwyej ocenianym wrd aplikacji przeznaczonych dla Joomla! i cechuje si bogactwem funkcji. Umoliwia profesjonalne zarzdzanie galeriami i obrazkami. System kontroli dostpu, zintegrowany z systemem rejestracji uytkownikw Joomla!, wystpuje w kilkudziesiciu jzykach. Jeli masz zamiar zarzdza du iezb zdj cyfrowych, sprawd system Gallery2. Jest to jedna z najpopularniejszy aplikacji do tworzenia galerii, zawiera wiele profesjonalnych funkcji. Automatycznie tworzy kanay RSS, zawiera obsug komentarzy, wielu typw multimediw (nie tylko zdj), a take dziaa nawet na popularnych (duych) stronach internetowych. Chocia jest to oddzielna aplikacja PHP, moe zosta poczona ze stron Joomla! za pomoc specjalnej wtyczki Gallery 2 Bridge.

Rozszerzenie RSGallery2 (zobacz rysunek 4.21) napisano z myl o Joomla!. Tworzone pliki HTML i CSS s zgodne ze standardami. Posiada take kompletn obsug Joomfish, przez co moe dziaa w wybranym jzyku. Dodatkow funkcj stanowi zarzdzanie animacjami Flash!. Zanim zainstalujesz to rozszerzenie, upewnij si, e przynajmniej jedna z popularnych bibliotek graficznych (GD2, ImageMagick lub Netpbm) dostpna jest na Twoim serwerze PHP.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze


unek 4.21.

127

Home

O.iHf. i y Ocmo

Maci flower_5_bg_040404

ifesjonalny erfejs \Gallery2 raszcza 'zdzanie ciami

flower_5_bg_040404
Home Gallery Demo Display Demo Download Forum Tutorial Documentation wiki FAQ j Development ACL explained Known issues Nightly Builds API Documentation Module Tutorials Flash Slide show Login Form

RSGallery2 zawiera panel sterowania, z ktrego mona zarzdza kadym aspektem rozszerzenia: od konfiguracji systemu, przez dodawanie zdj (pojedynczo lub w pakietach), zarzdzanie galeriami, zmian opcji wywietlania, po zarzdzanie baz danych zdj. Dodatkowo opcja wprowadzania zmian w CSS umoliwia dopasowanie galerii do wygldu aktualnego szablonu. Warto odwiedzi stron domow RSGallery2 (http://rsgallery2.net/). Moesz tam znale przykadow implementacj galerii, pobra najnowsz wersj rozszerzenia, czyta i wysya wiadomoci na forum powiconym rozszerzeniu lub uczy si na podstawie zamieszczonych przewodnikw. Dostpne s przewodniki opisujce wszystkie aspekty od instalacji, przez wasne szablony dla galerii, po tworzenie moduw. Strona zawiera take kompletn dokumentacj API, opis wszystkich klas, z ktrych skada si platforma RSGallery2.

omunikacja na stronie
Istniej rozszerzenia Joomla!, ktre pozwalaj doda rne funkcje komunikacji midzy uytkownikami, np. czat, kalendarz imprez lub nawet wsplnie redagowane przepisy. Komunikacja jest kluczowym elementem stron, ktre pretenduj do tytuu Web 2.0. Kilka rozszerze, ktre poszerzaj Joomla! o funkcje budowania wirtualnych spoecznoci, przedstawiono w rozdziale 10. Rozszerzenia dla tego obszaru pogrupowano w JED w nastpujce kategorie: Komunikacja (ang. Communications) Zawiera podkategorie: Zakadki i polecane (Bookmarks & Recommended), Czat (Chat), Komentarze (Comments), Kontakty (Contacts), E-mail, Formularze (Forms), Fora (Forums), Integracja z forami (Forum Bridges), Dodatki do forw (Forum extras), Ksigi goci (Guest Book),

128

Joomla!. Profesjonalne tworzenie stron WN 1W

Listy mailingowe (Mailing & Distribution Lists), Newsletter, Sondy (Polls), Quizy i badania (Quiz & Surveys), Shoutbox, SMS & PMS, Komunikacja z uytkownikami (User interaction). Kalendarze i wydarzenia (Calendars & Events) Zawiera podkategorie: Urodziny i wydarzenia historyczne (Birthdays & Historie Events), Rezerwacja (Booking & Reservations), Kalendarze (Calendars), Zegarki (Clocks), Odliczanie (Countdown), Data i czas (Date & Time), Wydarzenia (Events), Uroczystoci (Festivities).

Dodawanie komentarzy do artykuw

Jedn z najpopularniejszy metod budowania wirtualnych spoecznoci jest umoliwienie uytkownikom nadsyania wasnych komentarzy zwizanych z danym artykuem lub wpisem na blogu. Fora internetowe s czsto puste, poniewa brakuje na nich prowokatorw piszcych nowe wiadomoci, ktre skaniaj innych do odpowiedzi. Funkcja dodawania komentarzy do istniejcej treci moe by solidn motywacj dla uytkownikw. Prawie kady lubi od czasu do czasu dorzuci swoje trzy grosze. Posiadanie sekcji komentarzy wymusza konieczno moderacji. Ludzie czsto nadsyaj treci zabronione, atakuj innych, zdradzaj informacje osobiste, dodaj reklamy, materiay obraliwe i obsceniczne, a take (co jest najgorsze) krytyk pod adresem autora strony. Zgoda na komentarze wymaga od administratora wikszej uwagi odnonie do tego, co dzieje si na stronie ni w przypadku braku komentarzy. Musisz zdawa sobie spraw, e powicenie dodatkowego czasu jest niezbdne, o ile nie chcesz, eby Twoja strona przerodzia si w Dziki Zachd rzdzony mentalnoci wszystko wolno".

Dodatek Akocomment umoliwia uytkownikom Joomla! dodawanie komentarzy pod kadym artykuem. Rozszerzenie Akocomment (omwione dokadniej w rozdziale 10) jest jednym z najczstszych rozszerze dodajcych komentarze w systemie Joomla!. Poprawnie obsuguje komentarze w rnych jzykach, np. angielskim, chiskim czy norweskim. Najczciej stosowana wersja rozszerzenia to Akocomment Tweaked Special Edition.

Interfejs administracyjny umoliwia dokadn konfiguracj rozszerzenia, wczajc w to zakadki, dodawanie, powiadomienia, zgaszanie, ulubione i szablony.

Ksiga goci

Jedn z funkcji najczciej pojawiajcych si na hobbystycznych stronach WWW jest ksiga goci. Ksigi goci zaliczane s do pierwszy funkcji komunikacyjnych, ktre sigaj pocztku samych stron internetowych. Umoliwiay odwiedzajcym zamieszczanie komentarzy (najlepiej komplementw) lub sugestii zwizanych z zawartoci strony.

Ksiga goci jest nadal bardzo popularna. Jedn z najlepszych funkcji dynamicznego systemi takiego jak Joomla! jest fakt, e zmienia si automatycznie. Dziki temu wyglda na ciglt aktualizowan nawet jeli nie bya odwieana od jakiego czasu. Wyszukiwarka Google wykorzystuje okolicznociowe bannery, aby zmienia wygld strony gwnej. A gdyby Twoje

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze

129

witryna wywietlaa losowy wpis z ksigi goci na stronie gwnej? Oczywicie musiaby wprowadzi moderacj ksigi goci, aby zapobiec pojawianiu si reklam, spamu i treci obscenicznych na stronie. Moderacja wymagaaby co prawda dodatkowej pracy, ale za to mielibymy stron WWW, ktra za kadym razem wita odwiedzajcego zacht, wyraon sowami poprzednich uytkownikw. Zanim napiszesz modu, ktry pobiera losowy cytat z ksigi goci, musisz zainstalowa dodatek odpowiedzialny za zbieranie opinii uytkownikw. W rozdziale 10. znajdziesz wicej informacji na ten temat.

:at na stronie Joomla!


Czat moe by doskonaym dodatkiem na stronie WWW, ale moe take okaza si trudny w promocji i jeszcze trudniejszy w zarzdzaniu. Wikszo stron WWW ogranicza dostp do czatu, jest on uruchamiany tylko na specjalne okazje, np. obecno gocia, co moe by najrozsdniejszym wyborem. Biorc pod uwag ilo drapienikw i ludzi z niejasnymi intencjami w sieci, czat pozbawiony monitoringu i ogranicze jest prost recept na katastrof dla webmastera. Joomla Live Chat, przedstawiony na rysunku 4.22, jest czatem administrator-uytkownik, ktry pozwala na komunikacj jeden-do-jednego z odwiedzajcymi Twoj stron. Rozszerzenie to doskonale nadaje si do pomocy technicznej zwizanej ze stron. Wykorzystuje technologi Ajax do dynamicznego uaktualniania okna rozmowy, pozwala na alerty dwikowe i dania sesji.
sunek 4.22.
Live Chat L st Chat R o o m s Message

terfejs Joomla ve Chat :zypomina ogldem asyczny czat

Panel Refresh Chat Name Message Reset Chat Finish Chat

Send

130

Joomla!. Profesjonalne tworzenie stron W1NW

Uruchamianie systemu wiki w Joomla!


Ward Cunningham wynalaz w latach osiemdziesitych now metod wsppracy zwan wiki, co odpowiada stronie internetowej, na ktrej odwiedzajcy mog dodawa, zmienia, rozszerza i usuwa artykuy. Najbardziej znanym przykadem tego systemu jest internetowa encyklopedia o nazwie Wikipedia (www.wikipedia.org). Uytkownicy samej tylko angielskiej wersji stworzyli dotychczas ponad 2,5 miliona artykuw. W cigu ostatniego dziesiciolecia fenomen wiki zanotowa ogromny wzrost. Spoeczno open source szczeglnie skorzystaa na istnieniu stron wiki, poniewa wielu programistw aplikacji open source nie ma czasu, aby tworzy dokumentacj dla swojej pracy. Strona wiki stworzona dla danej aplikacji (np. narzdzie do tworzenia mapy myli FreeMind) pozwala pasjonatom programu dodawa uyteczne informacje, wskazwki, a take opisywa te czci, ktrych wykorzystanie nie jest oczywiste. Joomla! umoliwia stworzenie systemu wiki dziki komponentowi o nazwie OpenWiki. OpenWikijest adaptacj projektu DokuWiki (stworzonego przez Adreasa Ghra) na potrzeby Joomla!. Jest to aplikacja PHP zawierajca funkcje wiki, zaprojektowana z myl o szybkoci i prostocie. Chocia inne aplikacje wiki posiadaj wikszy zasb opcji (np. projekt open source MediaWiki wykorzystywany przez Wikipedi), OpenWiki zajmuje mniej zasobw i dziaa duo szybciej. OpenWiki mona pobra na poniszej stronie: http://www.joomla.sk/rozsirenia/startdown/294/ Po zainstalowaniu OpenWiki zostanie wywietlony ekran pocztkowy. Uprawnienia edycji poczone s z kontrol dostpu Joomla!, take moliwe jest ustawienie praw odczytu (Read), edycji (Edit), tworzenia (Create) i usuwania (Delete) dla kadej grupy uytkownikw. Po klikniciu przycisku Edit This Page na grze ekranu zostanie wywietlone okno edytora zawierajce tre artykuu (zobacz rysunek 4.23) w standardowej notacji wiki. Odnoniki kierujce do innych czci strony zapisane s w postaci podwjnych nawiasw kwadratowych ( / / ] ] ), a odnoniki zewntrzne umieszcza si w pojedynczych nawiasach kwadratowych ( [ J ) Przyciski znajdujce si nad oknem edytora pozwalaj wstawia kod dla obrazkw lub nagwkw. Poszczeglne strony wiki przechowywane s w postaci plikw tekstowych w katalogu \pages komponentu: \com_openwiki\data\pages Ze wzgldu na format plikw edycja stron moliwa jest za pomoc kadego zwykego edytora tekstu. Rozszerzenie OpenWiki wykorzystuje format DocBook. Jest to jzyk znacznikw podobny do HTML. Ma on uatwi tworzenie dokumentacji dla systemw open source, takich jak FreeBSD, KDE, GTK+, Gnom i Linux. Format zosta zaprojektowany z myl przechowywania danych, a nie o ich prezentacji, dlatego jest zgodny z wzorcem Model-WidokKontroler (MVC). Temat wzorca MVC zosta szerzej opisany w rozdziale 8.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze

131

sunek 4.23.

3 ekranie iycji wywietla = tekst 'korzystujcy andardowe rmatowanie ki

[J[
Trace:

]]

Of
LEff^J

j Show p a g e J j Qldrevisions | [ Recent changes j j

Edit the page and hit Save. S e e for Wiki s y n t a x . Please edit the page only if you c a n i m p r o v e it. If you want to test some things, learn to make your first steps on the

Projects of JoomProsolutiQn.coro DokuWiki for Joomla! [[wiki:DokuWiki]] is a standards compliant, simple to use [[wp>Wiki]], mainly aimed at creating documentation of any kind. It is targeted at developer teams, workgroups and small companies. It has a simple but powerful [[wiki: syntax]] which makes sure the datafiles remain readable outside the Wiki and eases the creation of structured texts. All data is stored in plain text files no database is required. JOOMLA! ===== Joomla! is a Content Management System (CMS) created by the same award-winning team that brought the Matrbo CMS to its current state of stardom.Joomla! is the ideal tool for
Hoirolnninn amal I t-n lariw rlmismi^ cnwmtinitTr i.icVi ^ i t c ^ i nti-n

j S a v e j j Preview j j Cancel j

Poczwszy od wersji 4, sposb przechowywania danych oparty jest na formacie X M L . Przykadowy fragment kodu DocBook:
<book id="pro_joomla"> Joomla!</ti tle> < t i t l e > P r o f e s s i onal <chapter

id="rozdzial_1"> 1. Wprowadzenie<title> t ksik..,</para> Joomla!..,</para<

<title>Rozdzia <para>Jeli <para>Sposb </chapter> <chapter

czytasz na

opanowanie

id="rozdzial_2"> 2. Szczegy si na 4 instalacji</title> rnych technologiach serwerowych..,</para>

<title>Rozdzia <para>Joomla! </chapter> </book>

opiera

Dziki przechowywaniu informacji w takim formacie dane mog by modyfikowane przez oprogramowanie niezwizane z systemem wiki. Oznacza to, e artykuy stworzone w OpenWiki mog zosta przetworzone na dowolny typ treci statycznych 6 . Przy wprowadzaniu zmian na stronie zostaj zapisane take rnice, dziki czemu moliwe jest odtworzenie poprzednich wersji. Na rysunku 4.24 przedstawiono przykadowy ekran porwnania wersji. Wstawiony tekst oznaczony jest znakiem plusa (+) po lewej stronie nowej wersji, wywietlanej w prawej kolumnie. Dodatkowo zmiany s podwietlane, co uatwia ich lokalizacj.

kich jak pliki HTML w przypadku Joomla! przyp. tum.

132

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 4.24. W rozszerzeniu OpenWiki jest funkcja porwnywania wersji pliku

[[sta it]]
Show page J f O l d revisions I | Recent changes !

OPENWIKI
| Search

Differences
T h i s s h o w s y o u the differences b e t w e e n the selected revision and the current version of the page.

Jviit ',''<f iv/'ii./:'/ in. s."


Line 2: ===== Dokutfliki for Joomla! =====

-v.iit
Line 2:

current

===== DokuTtfiki for Joomla! ===== + T h i s i s great 1 [[wiki:Dokuiki]] is a standards [ [wiki:DokuWiki] ] is a standards compliant, simple to use [[wp>Wiki]], compliant, simple to use [[wp>Wiki]], mainly aimed at creating documentation mainly aimed at creating documentation of any kind. It is targeted at developer of any kind. It is targeted at teams, workgroups and small companies, developer team3, workgroups and small It has a simple but powerful companies. It has a simple but powerful [ [wiki: syntax] ] which makes sure the [ [wiki: syntax] ] which makes sure the datafiles remain readable outside the datafiles remain readable out3ide the Wiki and eases the creation of iki and eases the creation of structured texts. Ail data is stored in structured texts. All data is stored in plain text files no database is plain text files no database is required. required.
s t a r t . H 6 9 8 7 4 8 2 3 . t x t (13312207 views) Last m o d i f i e d : 2008/10/30 01:32

j Show page j [ Old r e v i s i o n s j

| Index [ [ Back to top j

OpenWiki ma jednak kilka cech, ktre mog sprawia problemy operatorom adaptujcym to rozszerzenie. Dla wielu uytkownikw mylcy moe by brak przycisku New Page (Nowa strona). Poniewa wszystkie strony musz by ze sob poczone, aby doda now, musisz najpierw stworzy odnonik na istniejcej stronie. Przykadowo nowe odwoanie, ktre naley wstawi w tre istniejcego artykuu, moe wyglda tak:
[[joomlajumpstart]]

Po klikniciu odnonika zostanie wywietlony ekran tworzenia nowej strony, co zilustrowano na rysunku 4.25. Rysunek 4.25. Kliknicie odnonika prowadzcego do nieistniejcej strony spowoduje wywietlenie ekranu tworzenia nowej strony

[[joomlajumpstart]] __
| Create this page | | Old revisions j [ Recent changes j Trace: <

OPEN WIKI
| Search J

This topic does not exist yet


Y o u ' v e f o l l o w e d a link t o a t o p i c t h a t d o e s n ' t e x i s t y e t . I f p e r m i s s i o n s allow, y o u m a y c r e a t e It b y u s i n g t h e c r e a t e t h i s page b u t t o n

Create this page

Old revisions | Powered by

| Index

Back to top

OpenWiki with Slimbox by

Kilka ogranicze OpenWiki: Wszystkie pliki kodowane sjako UTF-8 Dokumenty dostpne s tylko w formie zakodowanej w UTF-8, niezalenie od zestawu znakw ustawionego w Joomla!. Dlatego, niektre artykuy napisane w innych jzykach ni angielski (np. inne pliki DocBook) mog sprawia problemy w systemie.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze

133

Brak czci administracyjnej Z tego powodu systemem wiki nie mona zarzdza jak zwyczajnym rozszerzeniem Joomla!, caa konfiguracja musi przebiega z poziomu strony gwnej. Oddzielna wyszukiwarka Artykuy OpenWiki nie s dostpne dla reszty systemu Joomla!, z tego powodu wymagaj oddzielnej wyszukiwarki. Dlatego artykuy Joomla! s niewidoczne dla wyszukiwarki wiki, a artykuy wiki dla wyszukiwarki Joomla!.

Nriting
Przedstawione na rysunku 4.26 rozszerzenie eWriting umoliwia dodawanie artykuw przez odwiedzajcych stron. Rozszerzenie stworzono z myl o stronach powiconych fan fiction (na ktrych umieszczane s autorskie romanse lub historie zwizane ze Star Trekiem). W interfejsie przewidziano moliwo dodawania obrazkw i automatycznego przydzielania do kategorii.
rsunek 4.26. trona
i n I h i i s e c t i o n vve h a v e J'! S t o n e s

i.zszerzenia Iniide The Taidis Stones Nriting, Categories a ktrej tytkownicy mog Mtntl O o c t i w Stfine* odawa wasne oowiadania toth Doctor Storic,
.".iwii:;^

{3)

(7 2)
(3>

Powered by eWriting 1.2.1

Zanim umoliwisz dodawanie opowiada, najpierw musisz okreli kilka kategorii, do ktrych mog by przydzielane. Kategorie rozszerzenia eWriting przypominaj kategorie Joomla!, mona im przypisa obrazek i nada opis. Po utworzeniu kategorii opowiadania mona dodawa w interfejsie administracyjnym mb z poziomu strony gwnej. Opowiadania zapisywane s w postaci rozdziaw i mog by wprowadzane z klawiatury lub wysyane w postaci plikw tekstowych (.ixt) lub plikw HTML (.htm albo .html) istnieje jednak moliwo okrelenia dodatkowych typw plikw w interfejsie administracyjnym. Na stronie gwnej mona te wstawi modu, ktry wywietla statystyki. W interfejsie administracyjnym mona zarzdza dodanymi opowiadaniami, docza nowe i tworzy rozdziay. Istnieje take moliwo dodawania obrazw do galerii uytkownika, integracji z rozszerzeniem Community Builder, Joomlaboard Forum lub systemami prywatnych wiadomoci (PMS), takimi jak Missus lub MyPMSII.

134

Joomla!. Profesjonalne tworzenie stron WN 1W

Twrcy e Writing s jednoczenie autorami rozszerzenia Missus, ktre dodaje moliwo wysyania prywatnych wiadomoci na stronie Joomla!. Wiadomoci wysyane midzy uytkownikami mog zawiera zaczniki. Rozszerzenie Missus moesz pobra ze strony internetowej e Writing.

Implementacja ogosze
Wprowadzenie na stronie moliwoci umieszczania ogosze moe by dobrodziejstwem dla Twoich uytkownikw. Wielu ludzi myli o eBayu jako gwnym miejscu sprzeday uywanych przedmiotw, ale istniej te strony, takie jak www.photo.net, ktre robi wietny interes, trafiajc w nisz rynkow, ktrej grupa odbiorcw skada si ze specjalistw. W przypadku rynkw niszowych osoby odwiedzajce stron nale do konkretnej, okrelonej grupy, co moe zwikszy dochody z wymiany. Oczywicie ogoszenia nie musz by ograniczone wycznie do sprzeday produktw. Oferty usug, informacje o wydarzeniach, anonse towarzyskie itp. wszystko to mona umieci jako ogoszenie. Biura ogosze nabray nowego znaczenia w dobie internetu dziki takim stronom jak cragslist1. Rozszerzenie Noah's Classifieds, przedstawione na rysunku 4.27, umoliwia tworzenie hierarchicznych kategorii bez ograniczenia liczby zagniede, doczanie zdj do ogosze, , okrelanie dodatkowych pl dla wybranych kategorii, a take powiadomienia e-mailem.
Rysunek 4.27.

Strona gwna rozszerzenia Classifieds

Najwiksza na wiecie strona internetowa powicona publikacji ogosze p r z y p . tum.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze

135

Jeli klikniesz odnonik Home w menu Noah Classifieds, pojawi si opcja Create New Categon> (Utwr: now kategori). Nastpnie moesz ustawi parametry kategorii, aby umoliwi zwykym uytkownikom dodawanie ogosze. Wtedy, po wybraniu danej kategorii, zostanie wywietlona opcja Submit Ad (Dodaj ogoszenie). Za pomoc interfejsu administracyjnego, pokazanego na rysunku 4.28, mona w peni kontrolowa rozszerzenie, np. zablokowa dan kategori (eby nie mona byo dodawa do niej nowych ogosze) lub przypisa dodatkowe pola dla danej kategorii. sunek 4.28. z iministracyjna ikietu 'assifieds

Expirt on properties N u m b e r of days the user must be informed about the e x p i r a t i o n before N u m b e r of times: the user is allow ed to pro ong h i s / h e r e x p i r e d ads image up Maximum picture size in bytes Maximum picture w i d t h in pixels M a x i m u m picture height in pixels 0 0 0 Layout -ustomization 0 Loger,. Menu points 0 Register a m 0 Recent ads 01 0Sh Bsu 0P 0i 13 Help 'Help" ink destination Additional H E A D content
O

. ; ar ads

ngtt befon

Upewnij si, czy w sekcji ogosze umiecie informacj, e nie ponosisz odpowiedzialnoci za adne transakcje zawarte za jej porednictwem. Dodatkowo umie owiadczenie, e zastrzegasz sobie prawo do usunicia dowolnego ogoszenia z dowolnego powodu, jeli w Twoim mniemaniu godzi ono w dobro strony. Doskonaym przykadem s Terms of Use" (Warunki uycia") na stronie www.craigslist.org.

idawanie ledzenia wynikw sportowych


Dziki rozszerzeniu JoomLeague, ktre zilustrowano na rysunku 4.29, moesz umieci na stronie ledzenie wynikw sportowych z rnych dyscyplin, np. piki nonej, baseballu, futbolu amerykaskiego itd. Moliwe jest ledzenie statystyk wybranych druyn lub caej ligi. System punktw jest elastyczny, co pozwala na prowadzenie tabeli wynikw prawie dla kadej dyscypliny. Istnieje te funkcja dodawania obrazkw danej druyny, np. zdj, logotypw, herbw itp.

136

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 4.29.

Rozszerzenie JoomLeague pozwala ledzi wyniki z wikszoci dyscyplin sportowych

S K l E I l i
Quail-WM 2010 E r g e b n i s s e 4. Spieltag ( 1 5 . 1 0 . 2 0 0 8 19.11.2008) Spieltag auswhlen: 04 Home * Fussball-Forum Gruppe 1 Mittwoch, 15. Oktober 2008 Malta Portugal Platz Ungarn H l Albanien Mannschaft Dnemark Ungarn Albanien j^jft Portugal Schweden Malta 1 2 0 0 4 2:1 ' Anmeldung 0:11 -11 Punkte 7 Spiele i G
0 : 1 (0:1)

* Credits * Impressum Quali WM 2010 Gruppe 1 Gruppe 2 U V Tore Diff. Gruppe 3 Gruppe 4 Gruppe 5 Gruppe 6 Gruppe 7 Gruppe 8 Gruppe 9

0: 0 1 0 1 1

1 '

ledzenie wynikw podzielone jest na projekty, co w praktyce opowiada danym ligom. Nastpnie okrelane s druyny i gracze. Oprcz gwnego komponentu odpowiedzialnego za ledzenie wynikw pakiet zawiera take kilka moduw: Events Statistic Module (Statystyki wydarze) Wywietla list eventtype dla wybranego projektu. Next Match Module (Nastpny mecz) Wywietla nastpny mecz dla wybranej lub ulubionej druyny. Random Player Module (Losowy gracz) Wywietla losowego gracza dla wybranego projektu i wybranej druyny. Ranking Module projektu. (Ranking) Przedstawia aktualne zestawienie dla wybranego

Results Module (Wyniki) Przedstawia ostatnie wyniki dla wybranego projektu. Results Tab Module (Zakadki wynikw) Przedstawia ostatnie wyniki pogrupowane za pomoc JavaScriptu w trzy pojedyncze zakadki. Team Players Module (Gracze z druyny) Wywietla list graczy Twojej ulubionej druyny wedug pozycji graczy. Navigation Menu Module (Nawigacja) Dostarcza dodatkowego menu nawigacyjnego, ktre umoliwia szybki dostp do zapisanych informacji.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze W czci administracyjnej mona skonfigurowa miejsca docelowe dla poszczeglnych pozycji menu.

137

Z poziomu interfejsu administratora mona w peni skonfigurowa system ledzenia wynikw. ledzi mona wedug projektw, klubw, druyn, graczy, pozycji graczy, wydarze i sdziw wydarze. Odwied stron domow rozszerzenia, aby pobra najnowsz wersj wraz kilkoma przykadowymi konfiguracjami. Cz strony jest w jzyku niemieckim, dlatego znajomo tego jzyka uatwi Ci pene wykorzystanie moliwoci rozszerzenia. Stron domow moesz odwiedzi pod adresem: www.joomleague. de

idawanie gier hazardowych


Jedn z propozycji poprawy atrakcyjnoci strony Joomla! s gry dla odwiedzajcy. Korzystajc z pakietu rozszerze Joomla Casino, mona doda na stronie jedn z nastpujcych gier: bakarat, jednorki bandyta, video poker, ruletka i blackjack (zobacz rysunek 4.30). Joomla Casino to platforma stale poszerzana o nowe gry, dlatego do czasu, kiedy bdziesz czyta t ksik, moga wzbogaci si o dodatkowe pozycje.
sunek 4.30.

a Joomla isino blackjack a pikny terfejs ytkownika

Aby zainstalowa gr, musisz najpierw doda komponent bazowy o nazwie com_casinobase, ktry zawiera gwn bibliotek. Nastpnie moesz zainstalowa jedn lub wicej gier. Gry dostpne s take w wersji Flash, co przekada si na atrakcyjniejszy wygld i ywsz rozgrywk. Gr, ktra dostarcza najwicej emocji, jest prawdopodobnie ruletka. atwo popa w uzalenienie, dlatego moe si okaza, e odwiedzajcy bd cigle wraca na Twoj stron.

138

Joomla!. Profesjonalne tworzenie stron WN 1W

Obsuga quizow
Quiz moe przybra wiele form od prostej zagadki, po prbne podejcie do SAT-u s . Dodatki typu quiz wykazuj spory potencja na polu edukacji zarwno formalnej, jak i samodzielnej. Wyobra sobie, e jeste nauczycielem angielskiego, ktry umieci na stronie internetowej prosty test z gramatyki, aby uczniowie mogli powiczy przed gwnym sprawdzianem. Inny przykad prowadzisz stron internetow promujc zalety Peru, a na niej umieszczasz prosty quiz dotyczcy pooenia gwnych prowincji. Dziki komponentowi Quiz 2.0, przedstawionemu na rysunku 4.31, moesz tworzy quizy rnego rodzaju: od najprostszych, zawierajcych odpowiedzi tak lub nie albo prawda lub fasz, po test wyboru (take wielokrotnego). Po ukoczeniu quizu zostanie wywietlony jego wynik wraz z informacj o powodzeniu lub niepowodzeniu, w zalenoci od ustawie w interfejsie administracyjnym.
Rysunek 4.31.

Frage 1
Question 3 of 4 Frage 3 i 2. 3.

Cz uytkownika rozszerzenia Quiz 2.0 przedstawia aktualnie wybrany quiz

m
Antwort 1 0 Antwutl 2 tJ Antwort 3

4. S3 Antwort A Submit answer

Interfejs administracyjny Quiz 2.0 skada si z dwch opcji: edycji quizow i edycji kategorii quizow. Edycja quizow umoliwia stworzenie nowego lub modyfikacj istniejcego. Statystyki zawierajce informacje o liczbie udanych lub nieudanych prb, cznej liczbie quizow i punktacji dostpne s po wpisaniu adresu podobnego do: www.przyklad.com/index.php? option=com_quiz&task=stats

Rozszerzenie umoliwia wywietlanie quizow w rnych jzykach: angielskim, woskim, francuskim, duskim, norweskim i szwedzkim.

Podsumowanie
Rozszerzenia to jeden z kluczowych powodw szerokiego wykorzystania Joomla!. Wrd prawie 4000 mona znale niemale dowoln funkcj wzbogacajc system. W tym rozdziale przedstawiono rnorodne rozszerzenia, ktre wzbogacaj Joomla!, a w szczeglnoci:

SAT ustandaryzowany test dla uczniw szk rednich w USA, odpowiada polskiej maturze p r z y p . tum.

Rozdzia 4. Dodawanie i modyfikacja dostpnych rozszerze Udoskonalanie kluczowych funkcji strony WWW i rozbudowywanie interfejsu administracyjnego o bogatsze opcje wyszukiwania, specjalistyczne edytory WYSIWYG, zarzdzanie plikami, automatyczne tworzenie mapy strony i wiele innych. Wzbogacanie funkcjonalnoci zwizanych z prowadzeniem organizacji i e-commerce przez implementacj sklepu internetowego, patnych subskrypcji, zarzdzania projektami, ledzenia kart pracy, prezentacji aukcji. Poszerzanie zawartoci strony Joomla! o dodatkowe media, np. podcasty i galerie zdj. Ulepszanie komunikacji na stronie przez wprowadzenie systemu komentarzy, czata, ksigi goci lub funkcjonalnoci wiki. Dodawanie ledzenia wynikw sportowych i gier, co zwiksza atrakcyjno.

139

Spord setek dostpnych rozszerze masz spor szans znale takie, ktre speni wikszo Twoich potrzeb. Jeli jednak szukasz czego specjalnego, dotychczas niedostpnego, moesz napisa wasne rozszerzenie. Pierwszy krok w tworzeniu rozszerze, poczwszy od najprostszego typu moduu, opisano w rozdziale 5.

140

Joomla!. Profesjonalne tworzenie stron WN 1W

5
Tworzenie prostych rozszerze: moduy
Chocia z szerokiej palety dostpnych rozszerze Joomla! mona czsto dobra takie, ktre spenia wikszo potrzeb, wiele stron wymaga stworzenia specjalnego kodu. Czsto oznacza to zaprogramowanie rozszerzenia, ktre wywietla informacje w okrelony sposb. Tak rol graj wanie moduy, najprostsza forma rozszerze. Ich zadaniem jest gwnie wywietlanie informacji przy minimalnej interakcji z uytkownikiem. W systemie Joomla! moduy wykorzystywane s przede wszystkim do wywietlania podstawowych elementw strony gwnej, takich jak menu, bannery, pola wyszukiwania i sondy. Czsto wywietlaj te informacje zwizane z konkretnym komponentem. Przykadowo modu search wywietla pole, ktrego warto przekazywana jest do komponentu search, a ten wykonuje zapytanie do bazy danych. Poniewa funkcj moduw jest niemal wycznie wywietlanie informacji, zarwno programowanie, jak i instalacja s bardzo proste. W tym rozdziale opisano proces tworzenia trzech moduw: Pierwszy wywietla proste powitanie Hello World!", stanowi solidn podstaw dalszego tworzenia moduw dowolnego typu. Drugi modu wykorzystuje specjaln tabel w bazie danych do przechowywania ycze witecznych. Jeli dany dzie odpowiada jednemu spord wit zapisanych w bazie, zwizane z nim yczenia zostan wywietlone na stronie. Trzeci modu pobiera i wywietla informacje o kontaktach, ktre zostay wprowadzone do systemu za porednictwem komponentu Kontakty.

Podczas tworzenia powyszych moduw dowiesz si, w jaki sposb wykorzystywa interfejs administratora Joomla!, aby konfigurowa moduy. Poznasz take zasad dziaania moduw w ramach platformy Joomla!. Poniewa programowanie moduw jest proste i nie wymaga duych nakadw czasowych, wiele spord specyficznych problemw daje si rozwiza wanie podczas tworzenia rozszerzenia tego typu, posiadajcego okrelon funkcjonalno.

142

Joomla!. Profesjonalne tworzenie stron WN 1W

Tworzenie moduhi Hello World


Konstruujc nawet najprymitywniejszy modu, bdziesz mia szans zrozumie podstawy systemu moduw. Z tego powodu programowanie warto rozpocz od prostego rozszerzenia wywietlajcego powitanie Hello World!", a nastpnie zainstalowa je w systemie. Modu ten mona wykorzysta jako podstaw pniejszych prac. Na pocztek musisz utworzy folder, w ktrym bd przechowywane pliki moduu. Nazwa folderu powinna zawsze odpowiada nazwie moduu. Czst praktyk jest wykorzystywanie w nazwie przedrostka mod_, co stanowi jasny komunikat odnonie do zawartoci folderu. Utwrz folder o nazwie modhelloworld w gwnym katalogu dysku twardego. Ostatni etap sprowadza si do utworzenia archiwum moduu, co umoliwia instalacj w interfejsie administracyjnym. W folderze modhelloworld wprowad poniszy kod:
<?php

stwrz plik modhelloworld.php

i za pomoc edytora tekstu

* * * * *
*/

@version $Id: mod hellojoomla.php 5203 2007-03-27 0l:42:10Z Danr $ @package Joomla @copyright (C) 2007 Dan Rahmel, Wszystkie prawa zastrzeone. @license GNU/GPL Prosty modu wywietlajcy powitanie Hello World

/ / Zablokuj bezporednie uruchamianie


definedi '_JEXEC' ) or dieC 'Brak dostpu' ): 'Hello World!' ):

echo JText::_(

Powyszy modu skada si z dwch linii wykonywalnego kodu. Pierwsza powinna by umieszczana we wszystkich tworzonych rozszerzeniach, poniewa stanowi gwarancj, e rozszerzenie uruchamiane jest przez system Joomla!, a nie z zewntrz. Takie dziaanie zabezpiecza przed hakerami, ktrzy mogliby naduy rozszerzenia do celw, ktrych nie planowae. W drugiej linii umieszczono komend echo, ktra spowoduje wywietlenie powitania. Zwr uwag, e komenda echo nie zostaa uyta do wywietlenia zwykego tekstu. Powitanie jest najpierw przekazywane do metody _ (znak podkrelenia) klasy JText, a dopiero jej wynik zostaje wywietlony. Klasa JText odpowiada za wywietlanie tekstu w rnych jzykach, w zalenoci od zainstalowanych pakietw jzykowych. Jeli tekst przekazany do metody _ dostpny jest w wersji, ktra odpowiada jzykowi ustawionemu na stronie, zostanie zwrcona przetumaczona wersja. Zamy, e metoda zostaa wywoana z parametrem o wartoci Hello". Zamy take, e hiszpaski pakiet jzykowy zawiera tumaczenie tego sowa, a na stronie zostao ustawione wywietlanie komunikatw w jzyku hiszpaskim. W takiej sytuacji zwrcony tekst brzmiaby Hola". Dlatego, jeli aktualnie ustawiony pakiet jzykowy zawiera tumaczenie powitania Hello World!", zostanie ono wywietlone wanie w wybranym jzyku.

Rozdzia 5. Tworzenie prostych rozszerze: moduy

143

Jeli nie uda si znale odpowiedniego tumaczenia, metoda zwrci po prostu przekazany tekst. Zwr uwag, e nie jest brana pod uwag wielko liter ani nie jest dostosowywana interpunkcja. Dobrym pomysem jest wykorzystywanie klasy JText podczas wywietlania komunikatw, poniewa jeli Twj modu stanie si popularny, twrcy pakietw jzykowych bd w stanie przetumaczy go bez koniecznoci wprowadzania zmian w Twoim rozszerzeniu. Kolejnym krokiem jest utworzenie pliku deskryptora w formacie XML, w ktrym znajduj si informacje dla systemu Joomla! dotyczce instalacji moduu. Utwrz nowy plik pod nazw modhelloworld.xml, a nastpnie w edytorze tekstu wprowad poniszy kod:
<?xml version="1.0" encoding="utf-8"?> <install type="module" version="1.5.0"> <name>Hello World</name> <author>Dan Rahmel</author> <creationDate>Marzec 2007</creationDate> <copyright>(C) 2007 Dan Rahmel, Wszystkie prawa zastrzeone.</copyright> <1icense>GNU/GPL</l icense> <authorEmai1>admi n@joomlajumpstart.org</authorEmai1> <authorrl>www.joomlajumpstart.org</authorUrl> <versi on>l.0.0</versi on> <description>Modu Hello World</description> <files> <fi 1ename modue="mod_hel 1 oworld">mod_hel1oworld.php</f11ename> </files> </i nstal>

Plik deskryptora zawiera informacje co" i dokd", niezbdne przy instalacji rozszerzenia Joomla!. Atrybut type znacznika <i nstal 1> wskazuje, e instalowane rozszerzenie jest moduem. Atrybut version informuje, e modu przeznaczono do instalacji w Joomla! w wersji 1.5 i nowszych. Element <name> okrela nazw moduu. Element <description> przechowuje opis, ktry pojawi si na ekranie po zakoczeniu instalacji. Element <filename> zawiera list moduw plikw przypisanych do moduu wskazywanego przez atrybut module. To ju wszystko, co niezbdne jest do dziaania moduu Hello World. W odrnieniu od szablonw moduw nie mona po prostu skopiowa do odpowiedniego folderu, trzeba je najpierw zarejestrowa w systemie Joomla!. W tym celu musisz stworzy archiwum ZIP zawierajce folder z plikami moduu, ktre nastpnie zainstalujesz za pomoc opcji Rozszerzenia/Instaluj. Sposb tworzenia archiwum bdzie rni si w zalenoci od systemu operacyjnego. W przypadku Windowsa i MacOS-a wystarczy klikn prawym przyciskiem na danym folderze i wybra opcj utworzenia archiwum 1 . Jeli korzystasz z Linuksa, sprawd w dokumentacji, ktry program lub narzdzie najlepiej wykorzysta do tego celu. Podczas rejestracji nowego moduu informacje o nim zapisywane s w tabeli josjnodu les w bazie danych. Przechowywane s: nazwa moduu, informacje na temat rejestracji, ustawienia parametrw, pozycja i kolejno moduu, a take czy modu jest aktywny.
W systemie Windows XP opcja tworzenia archiwum ZIP dostpna jest jako Wylij do/Folder Skompresowany z menu kontekstowego p r z y p . tum.

144

Joomla!. Profesjonalne tworzenie stron WN 1W

Zmiany w pliku XML przeprowadzone po instalacji nie wpyn na informacje o module wywietlane w interfejsie administratora (wyjtek stanowi definicja parametrw pobierana z pliku XML). Zmiana tych informacji wymaga bezporedniej manipulacji w bazie danych MySQL lub ponownej instalacji moduu. Otwrz zaplecze Joomla! w oknie przegldarki, a nastpnie uruchom opcj Rozszerzania/ Instalator. Wybierz archiwum ZIP zawierajce modu, kliknij przycisk Wczytaj plik & Instaluj, aby doda nowy modu w systemie. Po ukoczeniu procesu instalacji kliknij opcj Rozszerzenia/Moduy, a na licie powinien pojawi si modu zainstalowany przed chwil, jak to przedstawiono na rysunku 5.1.
Rysunek 5.1.

Modu Hello World pojawi si na licie moduw

Na licie Moduy pojawiaj si egzemplarze moduw dostpnych w systemie. Rozszerzenie stworzone przed chwiljest waciwie typem moduu, to w pewnym sensie szablon, na podstawie ktrego mona dodawa jeden lub wicej egzemplarzy. W prawej kolumnie pojawiaj si informacje na temat typu moduu, nowy egzemplarz jest typu mod hel loworld. Moesz tworzy dodatkowe egzemplarze tego moduu i innych, klikajc przycisk Nowy, a nastpnie wybierajc modu konkretnego typu. Zastosowanie kilku egzemplarzy jednego moduu moe mie sens szczeglnie wtedy, kiedy zmiana parametrw przekada si na zmian wygldu lub funkcji. Przykadowo modu modjnainmenu (Menu) wywietla list pozycji danego menu, ustawianego za porednictwem parametrw. W folderze /modules strony Joomla! znajdziesz katalog zawierajcy zainstalowany modu. Podczas tworzenia nowego moduu zmiany naley wprowadza w plikach rdowych w tym katalogu. W systemie Windows cieka dostpu do nowego moduu przypomina ponisz: C:\Program Files\Apache mod heoword Software Foimdation\Apache2.2\htdocs\modules\

Rozdzia 5. Tworzenie prostych rozszerze: moduy

145

Domylnie nowe moduy s wyczone. Kliknij czerwony X w kolumnie Wczony, aby wczy modu. Nastpnie powiniene sprawdzi ustawienia moduu, aby upewni si, czy pojawia si w odpowiednim miejscu. Domylnie modu pojawi si na pozycji left. W tym przypadku takie byo nasze zaoenie, jednak naley sprawdzi, czy ustawienia s poprawne. Kliknij nazw moduu na ekranie Moduy, aby otworzy okno ustawie moduu. Sprawd, czy modu wywietlany jest w odpowiednim miejscu (zobacz rysunek 5.2). Ustawienie parametru Kolejno wskazuje, e modu zostanie wywietlony jako ostatni element w lewym panelu. Ta informacja uatwi zlokalizowanie rozszerzenia na stronie gwnej.
unek 5.2.

ewnij si, modu pojawi na pozycji left

mdJiellowoi I o d
Hello World

ii<imeuy moilttu Dla tego moduu nie okrela si f

i ?yi>is<niiie m e n u Wszystkie \ Brak Zaznaczone

ill

B'fflj

Otwrz stron gwn Joomla! w przegldarce. Panel zawierajcy Main Menu powinien wywietla take powitanie Hello World! (zobacz rysunek 5.3). Modu Helto World jest kompletnym przykadem tworzenia i instalacji moduw. Moesz go wykorzysta jako podstaw dla bardziej zaawansowanych moduw. Powiniene go teraz wyczy, aby nie zamieca strony, poniewa nie zawiera uytecznych funkcji.

worzenie moduu witeczne yczenia


Niewiele spord prawdziwych moduw jest tak prostych, jak przykadowe rozszerzenie Hello World!. Czsto wymagany jest dostp do bazy danych w celu pobrania informacji do wywietlenia. Jednym z prostych (ale jednoczenie uytecznych) moduw jest rozszerzenie witeczne yczenia. Zadaniem tego moduu jest sprawdzenie, czy w bazie danych zapisano jakie wito, ktre odpowiada aktualnej dacie. Jeli tak, automatycznie zostan wywietlone odpowiednie yczenia. W przeciwnym wypadku zostanie wywietlony aktualny dzie i data.

146

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 5.3. Powitanie Hello World! powinno pojawi si pod innymi moduami w lewym panelu

Haso

Pamitaj mnie 1 i Zaloguj i

administrators and managers who, together with a large range of Work Groups of dedicated community members have taken Joomla! tc^iew heights in its relatively s h o j ^ f T T h i s well-oiled machine is oftpfuopied but never surpassed. Jodimla! has some wonderfully taleaKra peopie taking Open Source corrupts to the forefront of industrydfandards. Joomla! 1.5 is a p forward and represents the t exciting Joomla! release in the ' history of the project.

joint lead-developer Johan Janssens. Johan, who's had a penchant for rum ever since the first "Pirate's of the Caribbean" movie screened, took the bait, mixed it with Cola, and here we are with our latest 1.5 release. It looks like pirate talk will figure quite a lot in future Joomla' development!

Hello World
Hello World! Wicej..

Only one edit window! How do create "Read more..."?


t

What is the FTP layer

..,, .,
This is now implemented by inserting a Read more... tag (the button is located below the editor area) a dotted line appears in the edited text showing the split location for the Read more. .. A new Plugin takes care ofthe rest. It is worth mentioning that this does not have a negative effect on migrated data from older sites. The new implementation is fully backward compatible

The FTP Layer allows file operations (such as installing Extensions or updating the main configuration file) without having to make all the folders arid files writable. This has been an issue on Linux and other Unix based platforms in respect of file permissions. This makes the site admin's life a lot easier and increases security of the site. You can check the write status of relevent folders by going to "HeIp->System Info" and then in the sub-menu to "Directory Permissions"

Podobnie jak dziao si to przy tworzeniu moduu Hello World, zaczniemy od stworzenia folderu w gwnym katalogu dysku twardego. Nazwij folder /modjiolidaygreetings. Tak samo bdzie te nazywa si folder wewntrz katalogu /modules, po zainstalowaniu moduu w systemie Joomla!.

Tworzenie pliku deskryptora


Wprowad w edytorze tekstu poniszy kod, a nastpnie zapisz go pod nazw mod greetings.xml w folderze /modjiolidaygreetings:
<?xml version="1.0" encoding="utf-8"?> <1nstal1 type="module" version="1.5.0"> <name>Modu witeczne yczenia</name> <author>Dan Rahmel</author> <creationDate>Marzec 2007</creationDate> <copyright>(C) 2007 Dan Rahmel. Wszystkie prawa zastrzeone.</copyright> <1icense>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license> <authorEmail>admin@joomlajumpstart.org</authorEmai1> <authorUrl>www.joomlajumpstart.org</authorUrl> <versi on>l.0.0</versi on> <description>Modu witeczne yczenia wywietla yczenia w zalenoci od aktualnej daty. yczenia przechowywane s w tabeli jos_holidays, wpisy mona dodawa za porednictwem interfejsu MySQL.</description> <files> <fi1ename modue="mod_holidaygreeti ngs">mod_hoI idaygreetings.php</fi 1 ename> </files>

holiday

Rozdzia 5. Tworzenie prostych rozszerze: moduy


<params> <param name="greeting" type="text" default="Wesoego label="Dopisek" description=

147

witowania!"

"Tekst, ktry pojawi si pod yczeniami witecznymi." /> <param name="boldgreeting" type="radio" default="0" label="Pogrubienie" description= "Okrela, czy yczenia powinny by wywietlane pismem pogrubionym." > <option value="0">Nie</option> <opt i on value="l">Tak</option> </param> </params> </install>

Porwnujc powyszy kod z utworzonym wczeniej, zauwaysz pewnie, e w pliku pojawiy si definicje dwch parametrw w sekcji <params>. Te parametry (greeting i boldgreeting) stanowi przykad wasnych ustawie moduw, dostpnych w wikszoci przykadw. Po instalacji w systemie Joomla! warto tych parametrw mona zmienia za pomoc opcji Moduy. Obecno moduw pozwala administratorowi zmieni wygld moduu lub jego funkcje bez koniecznoci modyfikacji kodu rdowego. Powyszym parametrom przypisano dwa typy: text i radio. Parametr typu text przyjmuje jako warto cig znakw o maksymalnej dugoci 255. Warto radio odpowiada wyborowi jednej spord listy moliwoci. W tym przypadku jest to wybr midzy nie (warto 0) a tak (warto 1). Warto parametrw ustawia si za pomoc opcji Moduy, po klikniciu moduu ich wartoci s automatycznie zapisywane w bazie danych Joomla!. Parametry zdefiniowane w pliku deskryptora mog przyjmowa jeden z 21 dostpnych typw. System Joomla! ma wbudowane funkcje niezbdne do wywietlania i zmiany ustawie tych parametrw. Lista typw zawiera m.in.: category, editors, filelist, folderlist, helpsites,
imagelist, languages, list, menu,menuitem, password, radio, section, spacer, text i textarea.

vorzenie kodu moduu


W edytorze tekstu wprowad poniszy kod, a nastpnie zapisz go w pliku o nazwie mod_ holidaygreetings.php w folderze /mod holiday,greetings:
<? php

* * * * *
*/

@version $Id: mod holidaygreetings.php 5203 2007-03-27 01:42:107, Daw $ ((package Joomla @copyright (C) 2007 Dan Rahmel, Wszystkie prawa zastrzeone. @license GNU/GPL Modul wywietlajcy yczenia witeczne w odpowiednie dni.

/ / Zablokuj bezporednie uruchamianie


defined( '_JEXEC' ) or die( 'Brak dostpu' ):

?>
<div><small> <?php echo JText::_( '<p>Dzi si aj jest ' ); echot dateC'l, j F Y") . 'r. </p>' ); </small></dnv>

148

Joomla!. Profesjonalne tworzenie stron WN 1W <div>


<?php $myGreeting = $params->get('greeting 1 , 0); SboldSetting = $params->get('boldgreeting'. if (iboldSetting == 1) { $bb = "<b>": $be = "</b>"; } else { $bb = ""; $be = ""; 0);

}
$curDay = date("d"); icurMonth = date("m"): $db =& JFactory::getDB0(): $query = "SELECT *" . "\n FROM jos_greetings" . "\n WHERE holidayMonth = " . intval(icurMonth) . " and " . "holidayDay = " . intval(icurDay): $db->setQuery($query): iholidays = $db->loadObjectList(); if (count(iholidays)) { foreach (Iholidays as $holiday) { echo JText::_( '<p>' . $bb . $holiday->greeting . $be . '</p>' ):

echo JText::_( } else { echo JText::_(

'<p>' . SmyGreeting '<p>Witaj!</p>' );

. '</p>' );

}
?>

</div>

Powyszy kod jest bardziej skomplikowany ni skadajcy si z jednej linii modu Hello World. Pierwsza instrukcja wywietla aktualn dat jako ograniczon znacznikiem <smal 1 > W nastpnej sekcji pobierane s wartoci dwch parametrw, ktre mona ustawi w interfejsie administratora. Jeli parametrowi boldgreeting przypisano warto Tak, to zmiennym $bb i $be przypisywane s odpowiednie znaczniki HTML powodujce wywietlenie tekstu pismem pogrubionym. W kolejnym kroku obecny dzie i obecny miesic zostaj przypisywane do odpowiednich zmiennych wykorzystywanych w pniejszym etapie.

Pniej, po zakoczeniu przygotowa, nastpuje gwna cz skryptu pobranie z bazy danych listy wit. Najpierw zmiennej Sdb przypisywana jest referencja do aktualnego obiektu bazy danych. Nastpnie tworzona jest zmienna, ktra przechowuje zapytanie pobierajce yczenia dla obecnego dnia i miesica. Zwr uwag na fakt, e wartoci pobrane z funkcji date() przesyane s najpierw do funkcji intval (), zanim zostan umieszczone w zapytaniu. Dzieje si tak, poniewa funkcja date() zwraca numer miesica w postaci dwch cyfr, uzupeniajc go zerem (stycze = 01). A poniewa numery miesicy przechowywane s w postaci liczb cakowitych w bazie danych (stycze = 1), zastosowanie funkcji intval () usunie zbdny przedrostek, co zapobiegnie niejasnociom 2 .

Alternatywnym rozwizaniem byoby pobranie aktualnego dnia poprzez wywoanie date(" j") oraz aktualnego miesica poprzez wywoanie date( "n") obie funkcje nie dodaj zer wiodcych, PHP: date - Manua [online] http://piphp.net/date [dostp 02.11.2008] p r : y p . tum.

Rozdzia 5. Tworzenie prostych rozszerze: moduy

149

Zapytanie jest zapisywane w obiekcie bazy danych, a metoda 1 oadOb jectLi st () uruchamia zapytanie i zwraca list wartoci. Funkcj countO zastosowano celem sprawdzenia, czy znaleziono jakie wita odpowiadajce obecnej dacie. W przeciwnym wypadku wywietlane jest proste powitanie Witaj!". Jeli udao znale si pasujce yczenia, zostaj wywietlone w postaci kolejnych paragrafw (o ile kilka wit przypisano do jednej daty), a cao zwieczana jest dopiskiem ustawianym jako parametr moduu. Po zakoczeniu wprowadzania kodu stwrz archiwum ZIP lub TAR, zawierajce folder z plikami moduu. Nastpnie zainstaluj stworzone przed chwil archiwum za pomoc opcji Rozszerzenia/Instalator w interfejsie administratora. Jeli instalacja zostanie zakoczona powodzeniem, pojawi si stosowny komunikat z instrukcjami dotyczcymi korzystania z moduu co przedstawiono na rysunku 5.4. ;unek 5.4. udanej talacji wietlana jest varto pola scription Iliku skryptora

Witivii-i

r.l-i.u

Altykuy

Komponenty

Rozszei zeni.i

il.izdzi,i

Pomoc

vJ Rozszerzenia
Instaluj Komponenty Moduy Dodatki Jzyki Szablony

Instaluj Modni: Powodzenie

Modu witeczne yczenia w y wietla yczenia w zalenoci od aktualnej daty. yczenia przechowywane s w tal poiednictwein interfejsu MySQL.

Wczytaj paczk Plik pakietu: FYsegldaj... Wcsytaj plik & Instaluj

Instaluj z katalogu Katalog instalacyjny: Instaluj

Instaluj z Sieci Podaj adres VWWVi http:// Instaluj

Zanim jednak bdzie mona wstawi modu na stron, naley wprowadzi do bazy danych daty wit wraz z odpowiednimi yczeniami, do ktrych rozszerzenie moe si odwoywa.

rorzenie tabeli i zapisywanie przykadowych danych


Do stworzenia tabeli przechowujcej yczenia moesz wykorzysta graficzny interfejs aplikacji MySQL Administrator. Jest to proste i szybkie rozwizanie. Tabela powinna nosi nazw jos_greetings i zawiera trzy kolumny id (klucz gwny primay key, pole typu integer z ustawionym atrybutem auto_increment), greeting (pole typu varchar), holidayMonth (pole typu integer) i holidayDay (pole typu integer).

150

Joomla!.

Profesjonalne tworzenie stron WN 1W

Alternatywnym rozwizaniem jest uruchomienie poniszego kodu SQL z wiersza polece:


CREATE TABLE jos_greetings ( id int(10) unsigned NOT NULL auto_increment. greeting varchar(45) NOT NULL, holidayMonth int(10) unsigned NOT NULL, holidayDay int(lO) unsigned NOT NULL, PRIMARY KEY ('id')

):

Po utworzeniu tabeli wprowad kilka przykadowych ycze. W programie MySQL Administrator moesz to zrobi, klikajc prawym przyciskiem tabel i wybierajc opcj Edit Table Data z menu kontekstowego. Nie zapomnij doda take przykadowego wpisu dla obecnej daty, aby sprawdzi, czy modu dziaa poprawnie.

Jeli chciaby doda przykadowe dane z poziomu wiersza polece, moesz uy poniszego kodu, ktry dodaje wpisy dla najpopularniejszych wit:
INSERT INTO 'jos_greetings' ('id','greeting','holidayDay'.'holidayMonth') (1, 'Wesoych wit Boego Narodzenia!'.25.12). (2. 'Szczliwego Nowego Roku'.1.1). (3, 'Wszystkim paniom, najlepsze yczenia',8.3): VALUES

Korzystajc z opcji Rozszerzenia/Instalator, zainstaluj archiwum zawierajce modu. Jeli instalacja zakoczy si powodzeniem, pojawi si stosowny komunikat.

Konfiguracja moduhl

W interfejsie administratora przejd do opcji Moduy i kliknij pozycj witeczne yczenia. W dolnej czci strony znajduj si parametry moduu, ktre zdefiniowae w pliku XML. jak przedstawiono to na rysunku 5.5. Wprowad wasny dopisek i wcz opcj pogrubiania tekstu.

Warto rozway wywietlanie moduu na pierwszej pozycji lewej kolumny przed innymi moduami przypisanymi do pozycji left. Moduy wywietlane na ekranie Moduy mona filtrowa za pomoc list rozwijalnych znajdujcych si w grnej czci strony. Wybierz pozycj left z drugiej listy, a spis moduw powinien zosta ograniczony tylko do tej pozycji. Nastpnie klikaj strzak w gr w kolumnie Kolejno, odpowiadajc moduowi witeczne yczenia, dopki nie pojawi si na samej grze (kolejno = 1), jak zilustrowano to na rysunku 5.6 Drug moliwocijest wprowadzenie liczby 0 w pole w kolumnie Kolejno i kliknicie maej ikony dyskietki w nagwku kolumny, co odpowiada funkcji Zapisz kolejno.

Po poprawnym wprowadzeniu zmian w konfiguracji moduu otwrz stron gwn Joomla! w przegldarce. W lewej czci strony powinny pojawi si yczenia, podobnie jak na rysunku 5.7.

W obecnej implementacji styl fontw okrelany jest w kodzie moduu. Dobr praktyk jesl wywietlanie elementw moduu z wykorzystaniem stylw zdefiniowanych w Joomla! (np. klasy modu etable). Dziki wykorzystaniu standardowych stylw wygld moduu bdzi komponowa si z reszt strony.

Rozdzia 5. Tworzenie prostych rozszerze: moduy unek 5.5. irowad wasny pisek i wcz cj pogrubiania (stu

151

sunek 5.6. 7ie kolejno Dduw, y modu Ziteczne czenia by wietlany <o pierwszy

Jeli masz zamiar wykorzysta ten modu na Twojej stronie, powiniene doda yczenia zarwno dla danego dnia wit, jak i dla dnia przed witami. Moesz take odpowiednio dostosowa wpis do ycze poprzedzajcych wita (np. dla Wigilii wit Boego Narodzenia).

152

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 5.7.

Na stronie gwnej pojawi si yczenia

4 J o o m l a !

Joomla! 1.5 - 'Experience the Freedom! It has nevei easierto create your own dynamic Web site Manag content from the best CMS admin interface and in vii language you speak.

Szukej... Popular Wszystkim paniom, najlepsze yczenia Wesoego witowania! Content Layouts The Joomla! Commui i Welcome to Joomla! 1 Newsflash 4 New ish '
1 1

Home Joomla! Joomla! License Mo ahout sloomia* FAO The NewsWeb Links News Feeds

W e l c o m e to t h e F r o n t p a g e

Welcome to Joomla!

Joomla! is a free open source fiamewoik and content piii>iisliin<i system designed foi quickly creating highly intei active multi-lamjuatie Welt sites, online communities, media poitals. Ploys and eCommerce applications.

Pwrd ty t ee r 4 J o o m l a r

; Joomlai provides an easy-to-use graphical user interface thai simplifies the management arid publishing of large volumes of c ontent including HTML, documents, and rich media. Joomla! is used by organisations of all sizes for Public Web sites,

Tworzenie moduu Kontakt z Nami


Wiele narzdzi doczonych do systemu Joomla! mona rozszerzy, aby speniay zaoenia danej strony. Poniewa wszystkie dane przechowywane s w centralnej bazie danych MySQL, bardzo atwo jest napisa rozszerzenia, ktre pobieraj i modyfikuj dane Joomla!. Dodatkowo platforma Joomla! zawiera wbudowane funkcje niezbdne do komunikacji z baz danych, ktre upraszczaj i zabezpieczaj cay proces. Dostp do danych w bazie wymaga, w przypadku moduu i korzystania z funkcji platformy Joomla!, zaledwie kilku linii kodu. Przykadowo Joomla! zawiera komponent do zarzdzania kontaktami, ktry pozwala na przyporzdkowanie wpisw bezporednio zarejestrowanym uytkownikom. Moliwe jest take utworzenie kategorii grupujcej informacje o kontaktach dostpnych publicznie. Te informacje mog by automatycznie pobierane i wywietlanie na stronie Kontakt z Nami. Za pomoc specjalnego moduu moliwe byoby wywietlenie tych informacji w dowolnym miejscu na stronie Joomla!. Zmiany wprowadzane w bazie danych s automatycznie odzwierciedlane na karcie Kontakt z Nami, poniewa informacje przechowywane s w jednym miejscu. Pierwszym krokiem w tworzeniu takiego moduu jest okrelenie publicznej kategorii zawierajcej kontakty. Wybierz pozycj Kategorie z menu Komponenty/Kontakty w interfejsie administratora. Domylna instalacja Joomla! zawiera tylko jedn kategori o nazwie Contacts. Kliknij przycisk Utwrz, aby doda now kategori. Wprowad parametry podobnie jak na rysunku 5.8. Upewnij si, e opcja Publikacja ustawiona jest na Tak, co pozwoli dodawa kontakty do tej kategorii. Kliknij przycisk Zapisz, aby zapisa now kategori w bazie danych Joomla!.

Rozdzia 5. Tworzenie prostych rozszerze: moduy

153

unek 5.8.

Nrz now bliczn tegori, ktrej stan dodane ormacje kontaktach

Kategoria:

[ Zmie ]

Szczegy
Tytu: Tehst zastpczy: Publik acja: Sekcja: brak Upoi z,idNov*<nie: P o z i o m dostpu: 0 (Contacts) Publiczne kontakty Kontakty przypisane do tej kategorii bd pubi Nie * Tak

IsSRSSH
Zastrzeony Specjalny - Wybierz grafik Lewa Podgld

Gi afika: Pooenie yiafiki:

Dostp do bazy danych w rozszerzeniu Kontakt z Nami przypomina kod moduu witeczne yczenia. Jednak w tym przypadku tabela, z ktrej bd pobierane dane, istnieje ju w systemie Joomla!. Wszystkie informacje o kontaktach przechowywane s w tabeli jos_contact_detai 1 s. Zwr uwag na fakt, e przechowywane s tutaj wszystkie kontakty nie tylko publiczne, ktre powinien wywietla modu. W kodzie rozszerzenia powinno wystpi zapytanie do bazy danych, ktra pobiera wycznie kontakty przypisane do kategorii publicznej. Odpowiednie zapytanie wymaga znajomoci pola category id kategorii publicznej. Na szczcie warto pola nd mona odczyta z listy kategorii. Po zapisaniu nowej kategorii pojawi si ona na licie. W prawej kolumnie widniej wartoci pola category id dla poszczeglnych wpisw. Zanotuj numer odpowiadajcy kategorii, ktra ma by publiczna, jak pokazano na rysunku 5.9.
sunek 5.9.

notuj warto la ID dla vorzonej tegorli

Aby wywietli list publicznych kontaktw, musisz najpierw wprowadzi dane uytkownikw. Otwrz opcj Komponenty/Kontakty/Zarzdzaj kontaktami, aby wywietli aktualn list wpisw. Moesz utworzy nowy wpis (zobacz rysunek 5.10) lub wybra istniejcy i przypisa go do publicznej kategorii. Po zakoczeniu wprowadzania zmian kliknij przycisk Zapisz, aby zapisa w bazie danych informacje o kontakcie.

154

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 5.10.

Utwrz nowy kontakt i przypisz go do kategorii publicznej

ff Kontakt: [Zmie]

Szczeyfy
N azw* Tekt zsipzy Publik acf<i K.Hegona Polecz 7. ( i z y t N o w n i k i v m - Brak uytkownikw 1 (Name) Poziom dostpu * Nie Tak _ Henryk Sienkiewicz

25SH3w Zastrzeony
Specjalny

Wszystkie niezbdne ustawienia zostay wprowadzone, dlatego mona przej do fazy implementacji moduu, aby wykorzysta przygotowane wczeniej informacje. Utwrz folder o nazwie mod contactus, w ktrym znajdzie si plik z kodem i plik deskryptora. W edytorze tekstu wprowad poniszy kod i zapisz go pod nazw w folderze mod contactus:
<?php * @version $ld: mod contactus.php * @package Joomla * @copyright * @license */ / / Zablokuj definedi ?> bezporednie uruchamianie (C) 2007 Dan Rahmet, GNU/GPL informacje o publicznych kontaktach. 5203 2007-03-27 Wszystkie prawa 01. 42:1OZ Danr $ zastrzeone.

modcontactus.php

* Modul wywietlajcy

'_JEXEC' ) or die( 'Brak dostpu' );

<div style="border: lpx solid black: padding: 5px;"> <h3>Kontakt z Nami</h3> <?php $publiccat = $params->get('publiccat'. 0); $db =& JFactory::getDB0(); $query = "SELECT *" . "\n FROM jos_contact_details" . "\n WHERE catid = " . intval(ipubliccat); $db->setQuery($query): icontacts = $db->loadObjectLi st(): if(count($contacts)) { foreach (icontacts as Scontact) { echo JText::_( '<p><strong>' . $contact->name . '. </strong>'): echo JText::_( '<smal1>' . $contact->con_position . ', </small>'): echo JText::_( '<small>' . $contact->telephone . '. </small>'); echo JText::_( '<small>' '</small></p>'): . $contact->email_to .

Rozdzia 5. Tworzenie prostych rozszerze: moduy


} else { echo JText::_(

155

'<p>Emai1

pomoc@przyklad.com</p>'):

</div>

Struktura kodu w duym stopniu przypomina modu witeczne yczenia. Dla tego rozszerzenia pierwszy znacznik <div> posiada przypisany atrybut stylu, ktry powoduje wywietlenie obramowania wok moduu. Po uruchomieniu moduu pobierana jest najpierw warto parametru publiccat, ktra odpowiada wartoci category id dla kategorii publicznej. Nastpnie pobierane s z bazy danych wszystkie kontakty zapisane w tabeli jos_contact_detai 1 s, z uwzgldnieniem odpowiedniej wartoci catid. Wynik zapisywany jest w postaci zmiennej $contacts. Jest to lista pozycji, ktre zostaj kolejno wypisane, najpierw pojawi si imi i nazwisko, nastpnie peniona funkcja, numer telefonu i adres e-mailowy. Jeli nie znaleziono adnych rekordw, na stronie pojawi si e-mailowy adres pomocy technicznej. Aby ukoczy modu, naley skonstruowa jeszcze plik deskryptora. Zapisz w folderze moduu pod nazw mod_contactus.xml poniszy kod:
<?xml version="l.0" encoding="utf-8"?> <install type="module" version="1.5.0"> <name>Modul Kontakt z Nami</name> <author>Dan Rahmel</author> <creationDate>March 2007</creationDate> <copyright>(C) 2007 Dan Rahmel. Wszystkie prawa zastrzeone.</copyright> <1 i cense>http://www.gnu.org/copy1eft/gpl.html GNU/GPL</1i cense> <authorEmai 1 >admi n{ajooml a jumpstart ,org</authorEmail> <authorUrl>www. jooml a jumpstart. org</authorllrl > <versi on>l.0.0</versi on> <descnption>Modul Kontakt z Nami wywietla informacje kontaktowe wpisw przyporzdkowanych do publicznej kategorii. Id odpowiedniej kategorii mona wprowadzi po wybraniu tego moduu w czci Moduy. </description> <files> <fi 1ename modue="mod_contactus">mod_contactus.php</fi1ename> </files> <params> <param name="publiccat" type="text" label="ID publicznej kategorii kontaktw" description="Kontakty przypisane do tej kategorii bd wywietlane na stronie." /> </params> </i nstal 1>

Prawdopodobnie zauwaye, e pole <description> zawiera wskazwki dotyczce konfiguracji. Warto tego pola wywietlana jest po poprawnym zakoczeniu instalacji, dlatego dobrym rozwizaniem jest umieszczanie w tym miejscu wskazwek dotyczcych niezbdnej konfiguracji moduu. Dla moduu Kontakt z Nami zosta zdefiniowany pojedynczy parametr: publ i ccat. Jego warto wykorzystywana jest w zapytaniu do bazy danych, ktra zwraca list kontaktw przypisanych do kategorii publicznej. Jeli wybr dotyczyby zwykych kategorii Joomla! (kategorii artykuw), typ parametru mgby zosta ustawiony na category. W rezultacie system Joomla! automatycznie stworzyby list rozwijaln zawierajc list dostpnych kategorii.

156

Joomla!. Profesjonalne tworzenie stron WN 1W

Utwrz archiwum podobnie jak przy poprzednich moduach, a nastpnie zainstaluj je w systemie za pomoc opcji Rozszerzenia/Instalator. Jeli modu zostanie poprawnie zainstalowany, wybierz go na licie Moduy i ustaw parametr, aby jego warto odpowiadaa ID kategorii publicznej, ktre bdzie wykorzystywane w zapytaniach do bazy danych.

Wybierz pozycj Kontakt z Nami na licie Moduy, aby otworzy ekran edycji parametrw. Kliknij pole oznaczone ID publicznej kategorii kontaktw, a nastpnie wprowad ID, ktre zapisae wczeniej, jak pokazano na rysunku 5.11.
Rysunek 5.11.
Prefei neje l))0<l_C0ltt.)CtUS Modu Kontakt z Nami Nie Tak P a anteny moduu i ID ubiieznej kiiteyofti kontakt^J

Ustaw ID kategorii w parametrach moduu

Nie * Tak left 2::Main Menu Zastrzeony Specjalny 59 Modu Kontakt z Nami wywietla informacje kontaktowe wpisw przypisanych do publicznej kategorii. Id odpowiedniej kategorii mona wprowadzi po wybraniu tego moduu w czci Moduy. ^ ^ ^

Uruchom teraz stron gwn w przegldarce. Powiniene zobaczy list kontaktw przypisanych do kategorii publicznej, podobnie jak to jest na rysunku 5.12. Stworzony modu stanowi doskona demonstracj dostpu do danych zapisanych w systemie Joomla!. Powi troch czasu na przejrzenie tabel w bazie danych Joomla!, co pozwoli Ci okreli miejsce przechowywania danych, ktre bd niezbdne przy implementacji danego moduu.
Rysunek 5.12.
E>ziiia,i jest Saturday, 8 March 2008r. Wszystkim paniom, najlepsze yczenia Wesoego witowania! Latest N e w s . J',M !.. v A jrii-v to .Joornla! . Newsflash 4 ^ ^ . Popular

Informacje o kontaktach pojawi si w panelu na stronie gwnej

^ ^
^

Welcome lo Joomla' What's New In 1 5'>

'i

Kontakt z Nami Hewyk Sienkiewicz. 123 45 67, srriki ewi cz fg;p o lsovpisarze.pl

W e l c o m e to the F r o n t p a g e W e l c o m e to J o o m l a ! ^ S1

Joomla! is afiee open source ft amewotk and content publishiug system designed foi quickly ci eating highly interactive multi-language Welt sites, online communities, media poitals. Nogs and eCoinmeice applications. 1 i Joomla! provides an easy-to-use graphical user Mnterface thai simplifies the management arid 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 Ertranets and is supported bv a community of thousands of users F w e a i by . . . JOOmlQ! version l.s

Home * Joomla" * Joomla! License Moi e about Joomla' FAO The News Wel> Links News Feeds

Wiscej.. >.> W e are Volunteers & # ss S t i c k to the C o d e ! # -J

ISfMiBISIIllll I 1

The Joomla' Core Team consists of volunteer developers, designers.

To ensure this code release, Wilco Jansen resorted to sending rum to

Rozdzia 5. Tworzenie prostych rozszerze: moduy

157

Zsumowanie
Spord programowalnych rozszerze Joomla! moduy stanowi najprostsze i najatwiejsze w implementacji rozwizanie. Stworzenie moduu nie jest trywialne, jednak jego dystrybucja i instalacja, ze wzgldu na zapisywanie w postaci archiwum ZIP, nie nastrczaj trudnoci. Na stronie moe pojawia si dowolna liczba moduw, dlatego stosujc moduy, mona uzupeni system Joomla! praktycznie o kad pomniejsz funkcj. Jeli jednak dane zastosowanie wymaga bardziej rozbudowanej interakcji z uytkownikiem, najlepszym rozwizaniem jest stworzenie takiego komponentu, jak te, ktre opisano w rozdziale 6. W tym rozdziale przedstawiono proces tworzenia moduw, wyszczeglniajc ponisze etapy: Tworzenie moduu Hello World, stanowicego podstaw bardziej zoonych rozszerze. Implementacja moduu, ktry pobiera z bazy danych yczenia odpowiadajce aktualnej dacie, a nastpnie wywietla je na stronie. Programowanie moduu, ktry wywietla publiczne informacje o kontaktach, opartego na komponencie Joomla! do zarzdzania kontaktami.

Moduy s najprostsz form rozszerze Joomla!. W rozdziale 6. znajdziesz informacje na temat tworzenia wasnych komponentw. Programowanie komponentw stanowi bdzie prawdopodobnie gwn cz pracy w zakresie profesjonalnego programowania Joomla!.

158

Joomla!. Profesjonalne tworzenie stron WN 1W

6
Zaawansowane rozszerzenia: komponenty
Dziki wskazwkom umieszczonym w rozdziale 5 stworzye kilka prostych rozszerze, poznajc przy okazji podstawowe aspekty rozszerzalnoci systemu Joomla!. Programowanie tych kilku moduw ograniczao si do wykorzystania prostego edytora tekstu, poniewa wprowadzany kod by nieskomplikowany i wczeniej sprawdzony. Profesjonalne programowanie wymaga jednak duo wikszej kontroli nad projektem. Przykadowo stworzenie komponentu sklepu internetowego z kilkoma doczonymi moduami wymaga koordynacji wielu plikw, co czsto oznacza wspprac z innymi programistami. W tym rozdziale nawietlono proces tworzenia zaawansowanego rozszerzenia Joomla!. Do tego celu wykorzystasz profesjonalne rodowisko programistyczne (Eclipse), system kontroli wersji (Subversion), a take automatyczn generacj dokumentacji projektu (phpDocumentor). Bdziesz mia okazj pozna wszystkie kolejne etapy programowania, co pozwoli Ci lepiej poj, jak wyglda tworzenie profesjonalnych, komercyjnych aplikacji Joomla!.

wygotowanie rodowiska programistycznego


Wskazwki w rozdziale 5. sugeroway wykorzystanie edytora tekstu do tworzenia i zapisywania plikw rdowych. Ta szybka i prowizoryczna metoda jest jednoczenie jedn z zalet tworzenia programw PHP, poniewa nie jeste zmuszony do korzystania ze zoonych, skomplikowanych zintegrowanych rodowisk programistycznych (IDE Integrated Development Environment). To spontaniczne podejcie do procesu programowania sprawdza si w sytuacjach, kiedy musisz napisa prosty modu lub wprowadzi niewielk zmian. Jednake dowolny, przynajmniej redniej wielkoci (dotyczy to praktycznie kadego komponentu) projekt to zadanie, ktre mona znaczco uproci, stosujc potniejsze narzdzia programistyczne. Dodatkowo

160

Joomla!. Profesjonalne tworzenie stron WN 1W

jeli nad projektem pracuje grupa lub choby dwie osoby, wykorzystanie profesjonalnycl" narzdzi moe zadecydowa o zakoczeniu projektu o czasie i nieodkadaniu go w nieskoczono.

Majc to na uwadze, przykady opisane w tym rozdziale zostan stworzone z uyciem dwc profesjonalnych narzdzi programistycznych. IDE o nazwie Eclipse posiada funkcjonalno daleko wykraczajc poza zwyky edytor tekstu. Organizacja pracy zorientowana jest m projekty, a architektura oparta na wtyczkach dodatkowo usprawnia konstrukcj oprogramowania Joomla!, poniewa dostpne s rozszerzenia np. dla Subversion (SVN), kodu PHP XML i HTML. System kontroli wersji SVN usprawnia zespoow prac nad kodem, a takt umoliwia zarzdzanie archiwum kodu rdowego, nawet kiedy nad projektem pracuje tylkc jedna osoba. Systemy kontroli wersji to kluczowy element prawie wszystkich projektw wyjtkiem s tylko te najmniejsze. Moliwe, e korzystasz ju ze rodowiska programistycznego, ktre spenia Twoje potrzeby, i nie masz zamiaru zmienia go. Jeli tak jest, to wspaniale. Znalezienie rodowiska programistycznego speniajcego oczekiwania przypomina wyszukiwanie samochodu, ktiy Ci odpowiadajest to kwestia indywidualnego wyboru. Mimo wszystko warto przynajmniej pobienie zapozna si z podrozdziaami, w ktrych opisano Eclipse. By moe dziki temu odkryjesz nowe sposoby wykorzystania obecnego IDE, o ktrych wczeniej nie pomylae.

Stosowanie systemu kontroli wersji SVN

System kontroli wersji to jedna z technologii, z ktrych powinna korzysta jak najszersz; grupa programistw. Niestety, wielu ludzi nie dostrzega zalet pyncych z zastosowania jej a firmy programistyczne czsto nie traktuj tego jako obowizku. Tym sposobem system} kontroli wersji pozostaj niedoceniane. Gwnym zadaniem takiego systemu jest prowadzenif archiwum kodu rdowego i notowanie wszystkich zmian wprowadzonych w plikach. Zmiam wprowadzone w kodzie mog by konsultowane, a w razie potrzeby istnieje moliwo przy wrcenia starszej wersji.

Jednym z najczciej wykorzystywanych systemw kontroli wersji jest program Subversioi (SVN). SVN to zaawansowany program skadajcy si z czci serwerowej i czci klienta co umoliwia zarzdzanie projektem przez sie podczas konstrukcji oprogramowania. Na< jednym projektem moe pracowa kilku programistw jednoczenie. System obsugujt wprowadzanie zmian, ma narzdzia do rozwizywania konfliktw, jeli pojawi si dwie istotnie rnice si wersje tego samego pliku. Istnieje popularniejszy od SVN system kontroli wersji nazywa si Concurrent Versions System (CVS). SVN stworzono z myl o zastpieniu CVS, poniewa wiele decyzji projektowych poprzednika narzucao permanentne ograniczenia. Pomimo wielu podstawowych wad CVS zosta w znaczcym stopniu rozwinity, a jego popularno nie sabnie. Ja w codziennym uyciu preferuj CVS, gwnie ze wzgldu na archiwum starszych projektw stworzone w tym systemie. W przypadku Joomla! wiodcym rozwizaniem jest jednak SVN, dlatego programici Joomla! powinni rozway korzyci pynce z adaptacji akurat tego systemu kontroli wersji.

Rozdzia 6. Zaawansowane rozszerzenia: komponenty

161

Poniej wymieniono kilka czstych problemw, ktre napotkasz w czasie tworzenia aplikacji, oraz sposoby rozwizania ich dziki SVN: W kodzie rdowym nowej wersji programu wprowadzono wiele zmian, po czym nagle okazuje si, e jedna z podstawowych funkcji przestaa dziaa a Ty nie masz pojcia dlaczego. Za pomoc SVN moesz zbada wczeniejsze wersje kodu, zobaczy, jakie zmiany wprowadzono w danej czci. W razie koniecznoci moesz przywrci projekt do stanu, kiedy dana funkcja pracowaa poprawnie, a nastpnie zdiagnozowa problem lub okreli rnice w dziaaniu nowej wersji. Twj komputer zepsu si, a Ty nie zrobie kopii zapasowej. Poniewa SVN jest systemem dziaajcym na serwerze, czsto gra take rol aplikacji archiwizujcej, uruchamianej na innej maszynie. Wprowadzenie zmian jest bardzo proste, poniewa polega to do klikniciu prawym przyciskiem pliku lub folderu i wybraniu opcji check in", aby zapisa zmiany. Jest to wygodny sposb tworzenia kopii zapasowych nawet dla leniwych programistw. Wielu ludzi pracuje jednoczenie nad danym projektem, z tego powodu niezbdna jest koordynacja wysikw i wprowadzanych zmian. Aplikacje podobne do SVN powstay, poniewa programici open source, pracujcy o rnych porach, w rnych miejscach potrzebowali skutecznego sposobu wprowadzania zmian bez ryzyka uszkodzenia projektu. Funkcja, ktra zostaa usunita kilka miesicy temu, jest znw potrzebna. Nie musisz szuka wrd kopii zapasowych, aby odnale waciwy plik, poniewa zmiany wersji oznaczane s w SVN. Dziki przegldaniu wersji programu wedug dat lub nazw mona atwo i szybko przywrci najnowsz wersj kodu, ktra zawieraa wymagan funkcj. Minimalna wersja danej procedury uruchamiaa si duo sprawniej przed wprowadzeniem zmian, wic programista chce podda jrefaktoryzacji, biorc za podstaw pierwsz implementacj. Pobranie starej wersji pliku z systemu kontroli wersji jest trywialne. Firma zamierza stworzy now wersj aplikacji, ktra wymaga znaczcych zmian, jednoczenie starsza wersja musi nadal by wspierana, musz pojawia si uaktualnienia i poprawki bdw. SVN pozwala na eleganckie rozwizanie tego problemu dziki opcji fork" 1 . Moliwe jest stworzenie nowej wersji niezalenie od starej i kontynuowanie prac jednoczenie nad obiema.

Kilka przykadw wymienionych wyej wiadczy o tym, jak zastosowanie systemu kontroli wersji moe uratowa sytuacj. W powyszym opisie cakowicie pominito bardziej znaczce aspekty, takie jak moliwo wgldu w histori ukoczonych projektw lub rola materiau dowodowego w przypadku oskarenia o kradzie kodu, jak odgrywa solidna dokumentacja konstrukcji oprogramowania.

Rozwidlenie przyp. tum.

162

Joomla!. Profesjonalne tworzenie stron WN 1W

Instalacja SVN
System SVN mona zainstalowa na kilka sposobw. Jeli preferujesz wiersz polecenia, moesz pobra baz systemu SVN z poniszej strony: http -.//subversion, tigris.org/ Jeli wolisz interfejs graficzny, moesz skorzysta z jednej z poniszych implementacji: TortoiseSVN Najpopularniejsza implementacja dla systemu Windows. TortoiseSVN (http://tortoisesvn.tigris.org) integruje si z Eksploratorem Windows, co pozwala na dostp do wszystkich funkcji bezporednio z menu kontekstowego. eSvn Wersja programu Subversion napisana w oparciu o bibliotek Qt, mona j znale na stronie http://esvn.umputun.com. JSVN Kod proof-of-concept, implementacja klienta SVN w Java Swingu, ktr mona znale na stronie http://jsvn.alternatecomputing.com. kdesvn Kolejny klient SVN dla rodowiska KDE, dostpny na stronie www.alwins-world.de/wiki/programs/kdesvn.

m psvn.el Interfejs SVN dla programu Emacs, dostpny na stronie www.xsteve. at/prg/emacs. QSvn Kolejny klient SVN napisany w oparciu o bibliotek Qt, dostpny na stronie www.anrichter.net/projects/qsvn/ RapidSVN Wieloplatformowa (Linux, Windows, MacOS X) nakadka graficzna napisana w C++ z wykorzystaniem platformy wxWidgets, dostpna na stronie http://rapidsvn. tigris. org. SCPlugin Wtyczk dla narzdzia Finder w systemie MacOS X mona znale na stronie http://scplugin.tigris.org.

m SmartSVN Wieloplatformowy (Linux, Windows, MacOS X) klient SVN dostpny na stronie www.syntevo.com/smartsvn. Mona na niej znale dwie wersje, darmow Foundation, i komercyjn Professional. Jest to implementacja SVN w Javie z wykorzystaniem biblioteki SVNKit. Subcommander Wieloplatformowa (Linux, Windows, MacOS X) nakadka napisana w C++ z wykorzystaniem biblioteki Qt, dostpna na stronie http://subcommander. tigris. org. svnX Nakadka graficzna narzdzi tekstowych SVN dla MacOS X, dostpna na stronie www.lachoseinteractive.net/en/community/subversion/svnx. tkSVN Klient systemw SVN i CVS napisany w Tcl/Tk, dostpny na stronie www. twobarley corns, net/tkcvs.html. WorkBench Wieloplatformowe (napisane w oparciu o wxPython i pysvn) narzdzie, obiektowa implementacja biblioteki SVN w Pythonie, mona znale j na stronie http://pysvn.tigris.org.

Rozdzia 6. Zaawansowane rozszerzenia: komponenty ZigVersion Komercyjny klient SVN dla Mac OS X, dostpny na stronie http://zigversion. com. Syncro SYN Client Wieloplatformowa nakadka, dostpna na stronie www. syncrosvnclient. com.

163

Jeli dopiero zaczynasz, zalecana jest instalacja TortoiseSVN. W doskonay sposb integruje si z systemem operacyjnym i pozwala na dostp do menu TortoiseSVN po klikniciu prawym przyciskiem dowolnego pliku lub folderu. Pliki mona uaktualnia i pobiera z repozytorium pojedynczym klikniciem. TortoiseSVN mona pobra ze strony: http://tortoisesvn. tigris. org Proces instalacji przeprowadzany jest w prostym, trjkrokowym kreatorze. Po zainstalowaniu aplikacji dostp do niej uzyskasz po klikniciu prawym przyciskiem okna Eksploratora Windows. Jeli nie zaznaczye adnych elementw, moesz nadal korzysta z funkcji programu, klikajc menu Plik, wpisy programu pojawi si jako jedne z pierwszych na licie.

orzenie repozytorium SVN


Kady system kontroli wersji wymaga repozytorium to miejsce przechowywania aktualnej kopii plikw i kopii archiwalnych, ktre zostay zarejestrowane. Dla pojedynczego programisty funkcj repozytorium moe spenia zwyky folder na dysku twardym. Po utworzeniu folderu naley zarejestrowa go w SVN jako repozytorium. System automatycznie umieci w nim pliki i foldery niezbdne do zarzdzania archiwum. Utwrz folder o nazwie Repozytorium_SVN. Moesz umieci go na dysku twardym komputera lub na przykad na dysku sieciowym, ktrych kopie bezpieczestwa tworzone s automatycznie. Jeli zamiast tego wolaby uruchomi serwer SVN, odwied stron SVN, na ktrej bez problemu znajdziesz potrzebne wskazwki. Konfiguracja serwera SVN (zwaszcza zagadnienia zwizane z bezpieczestwem) wykracza poza ramy tej ksiki. Kliknij prawym przyciskiem stworzony przed chwil folder i z menu kontekstowego wybierz TortoiseSYN/Create repositoiy here...(rysunek 6.1). Powinien pojawi si komunikat informujcy o poprawnym utworzeniu repozytorium.
linek 6.1.
g, SVN Checkout... TortoiseSVN Otwrz za pomoc.. Wylij do Wytnij Kopiuj Utwrz skrt Usu Zmie nazw Waciwoci ij? ; ? > Bii Repc-browser Export... Create repository here Import,., Settings Help About [>

orzenie lozytorium nenu ntekstowego

Poniewa SVN mona zintegrowa z wieloma rodowiskami programistycznymi (a co najwaniejsze, z Eclipse), bdziesz mg obsugiwa repozytorium bezporednio z poziomu IDE.

164

Joomla!. Profesjonalne tworzenie stron WN 1W

Korzystanie z Eclipse
Eclipse jest profesjonalnym systemem programistycznym, stworzonym przez IBM, a nastpnie przekazanym spoecznoci open source. Eclipse posiada kompletne IDE, a za pomoc wtyczki obsuguje w peni programowanie w PHP. Praca z programem sprowadza si do zarzdzania projektami, do ktrych docza si pliki. Dla systemu Eclipse opracowano wtyczk o nazwie Subclipse, ktra bezproblemowo czy system kontroli wersji SVN ze rodowiskiem programistycznym. Proste kliknicie prawym przyciskiem myszy i wybr odpowiedniej opcji z menu pozwala uaktualni repozytorium lub pobra z niego najnowsz wersj projektu.

Pobieranie i instalacja EasyEclipse


Zamiast samodzielnej instalacji Eclipse, a nastpnie wszystkich niezbdnych wtyczek warto rozway pobranie pakietu EasyEclipse for PHP. Instalator zawiera wszystkie wtyczki niezbdne w przypadku programowania w PHP, czyli take Subclipse. Na stronie internetowej EasyEclipse moesz znale instalatory dla systemw Windows, MacOS X i Linux: www. easyeclipse. org Pakiet zajmuje sporo ponad 100 MB, dlatego najlepiej pobiera go na szybkim czu. Instalacja skada si zaledwie z dwch etapw: akceptacji warunkw licencji i wybrania katalogu docelowego.

Konfiguracja Eclipse
Przy pierwszym uruchamianiu Eclipse pojawi si okno z pytaniem o pooenie folderu roboczego. Wybierz odpowiedni folder i zaznacz opcj Use this as the default, dziki czemu wybrany folder bdzie wykorzystywany przy kolejnych uruchomieniach. Uruchomienie Eclipse powoduje wywietlenie ekranu powitalnego, jak to przedstawiono na rysunku 6.2.

Podstawy workbencha
rodowisko programistyczne w systemie Eclipse nosi nazw workbench. Gwne okno workbencha przypomina to przedstawione na rysunku 6.3. Na wygld ekranu wpywa aktualnie ustawiona perspektywa. Kontroluje ona, ktre okna (lub czci w terminologii systemu Eclipse) s wywietlane i ktre zasoby dostpne. W lewym grnym rogu znajduje si pasek skrtw pozwalajcy na przeczanie midzy perspektywami, a take otwieranie kolejnych. Na pasku tytuu znajduje si informacja o aktualnie wywietlanej perspektywie. Na rysunku 6.3 ustawiona jest perspektywa Resource.

Rozdzia 6. Zaawansowane rozszerzenia: komponenty rsunek 6.2. kran powitalny wiera opcje, yre pomoc Ci ipozna si interfejsem rogramu skutecznie niego korzysta

165

File Edit Navigate Search Project Run Window

g C*php
Sj- Navigator Result View

Resource

==

Ksiga Goci

j q: Outline An outline is not available,

TODO Doda pole formularza dla adresu e-mail

Moesz utworzy nowy projekt, korzystajc z jednego z dostpnych szablonw (np. Java, Statyczna strona WWW, PHP, XML) powizanych z typem projektu, ktry zostanie utworzony. Programujc Joomla!, powiniene wybra projekt PHP. Zanim jednak utworzysz nowy projekt, warto rozway dodanie opcji automatycznego wstawiania we wszystkich plikach zabezpieczenia, ktre zapobiegnie wykonywaniu kodu spoza platformy Joomla!.

166

Joomla!. Profesjonalne tworzenie stron WN 1W

Zmiana domylnego szablonu PHP w celu dodania zabezpieczenia Joomla! pozwoli Ci lepiej zapozna si z Eclipse. Wybierz opcj Preferences z menu Window. Ustawienia wywietlane s w postaci drzewa, co wida na rysunku 6.4. Rozwi wze PHPeclipse Web Development, a nastpnie PHP, kliknij pozycj Code Templates.
Rysunek 6.4.
K Preferences type filter text $ Amateras ffl Ant ffi Coloring Editor EdipseUtilPlugins Help m HTML Tidy is Install/Update ffi Internet ffi Java 8 PHPeclipse Web Deve Browser Configur Browser Preview S PHP Code Assist Code Templat Formatter Help (WIN_3i HTTP Query Installed Inte Mark Occurre PHP Parser Spelling Task Tags Templates + PHP Fvtfirnal Tnn Code Templates Configure generated code and comments: Comments Ei Code Newly created HTML files ( j Import... Export... Export All.,. ]

Ustawienia skategoryzowane i przedstawione s w formie drzewa

Pattern:

<?plyp
i * Created on 3{date}

| * To change the template f o r t h i s g e n e r a t e d f i i * W i n d o w ~ P r e f e r e n c e s - P H P e c l i p s e - PHP - C o i f < > 0 Automatically add comments for new methods and types
s

(does not apply to comments contained in the code patterns) Restore Defaults Apply

W prawym panelu okna Preferences pojawi si lista dostpnych szablonw dla projektu tego typu. Wybierz pozycj New PHP files i kliknij przycisk Edit. Moesz teraz wprowadzi kod, ktry bdzie dodawany do kadego nowego pliku. W tym przypadku wprowad poniszy:
// zablokuj bezporednie uruchamianie

defined( '_JEXEC' ) or die( 'Brak dostpu' );

Kliknij przycisk OK, aby zapisa zmiany. Od tej chwili wszystkie pliki PHP utworzone w Eclipse bd zabezpieczone przed uruchamianiem spoza systemu Joomla!. Pakiet EasyEclipse zawiera wtyczka Subclipse. Jeli jednak zainstalowae standardow wersj Eclipse, musisz samodzielnie pobra i zainstalowa Subclipse, aby doda funkcj wsppracy z systemem SVN. Subclipse mona pobra na stronie: http://subclipse. tigris. org

Tworzenie komponentu Ksigi Goci


Tradycyjna aplikacja internetowa, ktra moe suy za przykad komponentu, to ksiga goci. Umoliwia ona zamieszczanie komentarzy przez uytkownikw, ktre widoczne s nastpnie dla wszystkich odwiedzajcych stron. Najczciej takie wpisy zawieraj komplementy pod

Rozdzia 6. Zaawansowane rozszerzenia: komponenty

167

adresem prowadzcego stron. Mog jednak zawiera take sugestie ulepsze, a take (oby jak najrzadziej) krytyk. W tym przypadku stworzysz komponent, ktry skada si z dwch czci: frontowej, umoliwiajcej wywietlanie wpisw w ksidze goci oraz dodawanie nowych za porednictwem formularza, i zaplecza, gdzie mona edytowa istniejce wpisy. Wikszo komponentw skada si z dwch czci, z czego jedna funkcjonuje jako interfejs uytkownika, a druga umoliwia zarzdzanie rozszerzeniem przez administratora. Najpierw utwrz projekt dla Ksigi Goci w Eclipse, wybierajc File/New/PHP Project. W kreatorze wprowad nazw projektu com_guestbook, jak zilustrowano to na rysunku 6.5. wrz nowy ojekt PHP Eclipse nazwie >m_guestbook
sunek 6.5.
N e w PHP project | PHP P r o j e c t Create a new PHP Project

Project name:

com_guestbook]

[jjjjj] Use default location

Finish

J [

Cancel

ihrona przed spamem


Spam w ksigach goci jest czstym problemem. Spamerzy wykorzystuj automatyczne narzdzia, ktre wyszukuj formularze ksigi goci na stronach WWW po to, by zamieszcza niepodane odnoniki. Takie dziaanie ma dwojakie skutki: po pierwsze, zwiksza liczb odwiedzin reklamowanej strony, a po drugie, wpywa na pozycj na stronach wynikw wyszukiwania, poniewa roboty internetowe zliczaj odnoniki do strony. Ochrona przed spamem w ksidze goci sprowadza si do dopuszczania dodawania wpisw tylko przez zarejestrowanych uytkownikw, a take usuwania, za pomoc wyrae regularnych, elementw HTML (czyli take odnonikw), ktre pojawiyby si na stronie. Jeli jednak zamierzasz udostpni dodawanie wpisw niezarejestrowanym uytkownikom, powiniene wprowadzi zabezpieczenie CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart). CAPTCHA to obrazek zawierajcy znieksztacone litery i cyfry, ktre uytkownik poprawnie musi wprowadzi w pole tekstowe. Programy wysyajce spam nie s w stanie odczyta znakw z obrazka, co uniemoliwia dodawanie spamu.

168

Joomla!. Profesjonalne tworzenie stron WN 1W

Biblioteki suce do generowania C A P T C H A dostpne s za darmo w internecie. Jeli wprowadzisz CAPTCHA PHP w wyszukiwarce internetowej, znajdziesz wiele przykadowych kodw. W czasie gdy powstawaa ta ksika, jedn z darmowych bibliotek mona byo znale na stronie www.cryptographp.com.

Cz frontowa komponentu
Funkcj czci frontowej jest wywietlanie informacji na stronie i interakcja z uytkownikiem. Poniewa komponenty s bardziej skomplikowane od moduw, wiele rozszerze (np. komponent Polis) wykorzystuje modu jako cz frontow interfejsu. Stanowi to jednak pewne ograniczenie szczeglnie jeli planujesz modyfikacj danych przez uytkownikw. W przypadku komponentu ksigi goci warstwa prezentacji zawiera nie tylko aktualn list wpisw, ale take formularz dodawania nowych komentarzy, ktry znajduje si poniej, co przedstawiono na rysunku 6.6. Do czci frontowej komponentu mona uzyska dostp z poziomu menu.
Rysunek 6.6.

Ksiga goci zawiera list wpisw wraz z informacj, kto je tam umieci

lESESSBB
Home Joomla" Overview Joomla" L i c e n s e More about Joomla! * FAO * The N e w s Web Links N e w s Feeds MojaK$ie*ja Goci

Na pewno h i j e s z c z e w i oce - Jan Kowalski Wspaniaa strona tak trzyma! - J a n Kowalski

Formularz dodawania wpisu do ksigi goci


Wprowad tre wiadomoci:

Lokacja (opcjonalne) ( Dodaj wpis ]

Podczas konstrukcji kodu zauwaysz pewnie, e wartoci zmiennych pobierane s (z acucha dania lub z danych wysanych formularzy) za pomoc metody getVarO, zamiast tradycyjnych instrukcji PHP. Metoda getVarO stanowi warstw zabezpiecze, w ktrej przebiega kontrola poprawnoci danych nadesanych przez uytkownika. Dane przesyane przez hakerw (takie jak prby atakw SQL Injection) s automatycznie wykrywane i usuwane. Zawsze uywaj tej metody, aby w peni wykorzysta zabezpieczenia wbudowane w platform Joomla!. Aplikacje internetowe, ktre pobieraj dane ze rde zewntrznych, powinny zawiera zabezpieczenia przed atakami przez wstrzyknicie (ang. injection). Najpopularniejszym typem takiego ataku jest SQL Injection. Polega on na wstawieniu kodu SQL do wykonywanego zapytania. Przykadowo formularz zawiera pole, w ktre uytkownik powinien wpisa swoje nazwisko. Jeli haker wprowadzi zamiast tego cig znakw podobny do "kowalski; Select * from Tabel aHasel", wyle formularz, a kod PHP wprowadzi po prostu warto pola w zapytanie, kod SQL nadesany przez hakera zostanie uruchomiony, a w rezultacie wywietli si zawarto tabeli (w tym przypadku bdzie to lista hase). Wicej informacji na ten temat i innych zagadnie zwizanych z bezpieczestwem znajdziesz w rozdziale 14.

Rozdzia 6. Zaawansowane rozszerzenia: komponenty

169

rorzenie kodu czci frontowej


Projekt rozpoczynamy od zaprogramowania frontowej czci komponentu. Ksiga goci bdzie dostpna dla zarejestrowanych uytkownikw, zadaniem komponentu jest wywietlanie obecnych wpisw i umoliwianie uytkownikom dodawania nowych. Komponent zosta podzielony na dwie czci, zawarte w funkcjach: addEntryO i display '-Guestbook (). Funkcja addEntryO zostaje uruchomiona w momencie, gdy uytkownik wyle wypeniony formularz. Funkcja di spl ayGuestbook() wykonuje zapytanie do bazy danych i wywietla list wpisw z tabeli ksigi goci. Pod list wpisw doczany jest formularz, ktry pozwala uytkownikom dodawa nowe komentarze. Zwr uwag, e w zapytaniu do bazy danych odwoanie do tabeli nosi nazw # guestbook. W wikszoci przypadkw bdzie to odpowiada tabeli jos_guestbook, o ile uytkownik nie zmieni domylnego przedrostka nazw tabeli. Jeli przedrostek zosta zmieniony, obiekt baz danych automatycznie wprowadzi go w miejsce zapisu #_. Aby utworzy nowy plik skadowy komponentu, kliknij prawym przyciskiem nazw projektu w oknie nawigacyjnym Eclipse i wybierz opcj New/PHP File. Ustaw nazw pliku na guestbook.php i wprowad poniszy kod:
<?php

* @version $Id: guestbook.php 5203 2007-06-15 02:45:14Z DanR $ * @copyright (C) 2007 Dan Rahmel, Wszystkie prawa zastrzeone. * @package Ksiga goci * Komponent ten wywietla list wpisw w ksidze goci i umoliwia dodawanie * nowych komentarzy przez zarejestrowanych uytkownikw */ // Zablokuj bezporedni dostp
defined! '_JEXEC' ) or die ( Brak dostpu' );

// Sprawd warto parametru task i wywoaj odpowiedni funkcj


switch( JRequest::getVar( case 'add': addEntryi): break: default: displayGuestbookO; break; 'task' )) {

// Przetwrz dane z nadesanego formularza


function a d d E n t r y O {

// Pobierz referencj obiektu bazy danych


$db =& JFactory::getDB0():

// Pobierz id uytkownika dodajcego wpis


$user =& JFactory::getUser(); $uid = $user->get('id');

// Pobierz tre wiadomoci i lokacj z formularza


ifldMessage = JRequest::getVar{'message');

// Usu wszystkie znaki, ktre mog tworzy kod HTML, znaki powrotu karetki itp.

170

Joomla!. Profesjonalne tworzenie stron WN 1W


SfldMessage = preg_replace("/[ A a-zA-Z0-9 $fldMessage); // Dodaj znaki unikowe SfldMessage = do treci wiadomoci i lokacji, aby mona byo j umieci . ""'; 'location' )) . : w instrukcji insert . $db->getEscaped($fldMessage) ,?!$()\'\"]/", "",

SfldLocation = . $db->getEscaped(JRequest::getVar( // Pobierz adres IP i przechowaj go z powodw bezpieczestwa iuserlp = . $_SERVER['REMOTE_ADDR'] . " . :

iinsertFields = "INSERT INTO # _ g u e s t b o o k

"(message. created_by, location, userip) " . "VALUES (" . itldMessage . ". " . intval($uid) ifldLocation $db->query(); echo "<hl>Dzikujemy za dodanie wpisu!</hl>"; echo "<a href=index.php?option=com_guestbook>" . "Powrt do ksigi goci </a>": . "." . iuserlp . ");"; $db->setQuery( iinsertFields. 0): . "." .

// Wywietl

list wpisw

w ksidze

goci

function displayGuestbookO { $db =& JFactory::getDB0(); // Wykonaj zapytanie " FROM # do bazy danych i pobierz list wpisw $query = "SELECT a.message. u.name" . guestbook AS a" . users AS u ON u.id=a.created_by" . " LEFT JOIN #

" ORDER BY a.created DESC": $db->setQuery( $query. 0); // Upewnij si przed wywietlaniem, foreach ($rows as $row) { // Sformatuj tekst do wywietlania na stronie . "</b>": HTML ENT_QUOTES): SrowMessage = htmlspecialchars($row->message, echo "<b>" . irowMessage echo " - " . $row->name; // Oddziel wpisy poziomymi liniami echo "<hr />";

e Usta wpisw nie jest

pusta

if($rows = $db->loadObjectList()) {

}
dla nowych wpisw

// Wywietl formularz

<hl class="contentheading">Formularz dodawania wpisu do ksigi goci</hl> <form id="torml" name="torml" method="post" acti on="i ndex.php?opti on=com_guestbook&task=add"> <p>Wprowad tre wiadomoci:<br /> <textarea name="message" cols="60" rows="4" </p> <p> <label>Lokacja (opcjonalne) </p> : </label> id="message"></textarea>

<input name="location" type="text" id="location" />

Rozdzia 6. Zaawansowane rozszerzenia: komponenty


<P> < =input type="submit" name="Submit" value="Dodaj wpis" /> </p>

171

</form> <?php } ?>

Od razu po zapisaniu pliku kod zostaje automatycznie zanalizowany, a rodowisko zaktualizowane. Przykadowo w oknie Outline, po prawej stronie workbencha wywietlana jest lista wszystkich funkcji i metod zdefiniowanych w pliku, co przedstawiono na rysunku 6.7. Wpisy na tej licie maj posta odnonikw, wic jeli klikniesz ktry z nich, zostaniesz przeniesiony do odpowiedniego miejsca w oknie z kodem rdowym. Kliknij funkcj displayGuestbook(), a w oknie edytora zostanie podwietlona odpowiednia funkcja. Zwr uwag, e po prawej stronie nagwka funkcji znajduje si mae kko ze znakiem minusa ( - ) . Jeli klikniesz je, kod funkcji zostanie ukryty, a w miejsce minusa pojawi si plus (+). Moliwo ukrywania czci kodu uatwia zarzdzanie duymi plikami w Eclipse.
usiinek 6.7.

P P - guestbook.php - EasyEclipie for P P H H


File Edit Navigate Search Project PHP/Apache Run Window Help - JJ i i S~J i SB* PHP I t(b Resource

unkcje i metody awarie w pliku 'ywietlane s ' oknie Outline o prawej stronie

MIL

& J P Ksiga goci X .project IS* admin.guestbook.php jSj guestbook. php x guestbook. xml 0 install.sql Cl i inin^tflll.snl !. Outline :

'Brak dostpu' ) ;

adz

1% xs
addEntry() displayGuestbook()

itch( Request case ' a d d ' : addEntry(); break; default : displayGuestbook() break;

paramet getVar(

o dp o

Problems Console Bookmarks Tasks !: 1 items 5 Description TODO Doda do formularza pole do wprowadzania adr...

Resource

z administracyjna komponentu
Czci administracyjnej przypisano trzy scenariusze. Funkcja dl spl ayEntri es() wywietli tabel zawierajc list wszystkich wpisw z tabeli ksigi goci. Obok kadego wpisu pojawia si odnonik, ktry umoliwia jego edycj. Kliknicie odnonika powoduje ponowne wywoanie komponentu, tym razem jednak z parametrem task w cigu dania ustawionym na edit. Spowoduje to uruchomienie funkcji editEntryO prezentujcej formularz, ktrego pola odpowiadaj wartoci wybranemu wpisowi. Po wprowadzeniu zmian administrator klika przycisk Zapisz, aby zapisa zmiany, co skutkuje wywoaniem funkcji updateEntry(), ktra wprowadza zmiany w tabeli.

172

Joomla!. Profesjonalne tworzenie stron WN 1W Utwrz nowy plik PHP w rodowisku Eclipse i nazwij go admin.guestbook.php. zawiera cz administracyjn komponentu, wprowad poniszy kod:
<?php /** * @version $Id: guestbook.php 5203 2007-06-15 02:45:14Z DanR $ * @copyright (C) 2007 Dan Rahmel, Wszystkie prawa zastrzeone. * @package Ksiga goci * Komponent ten wywietla list wpisw w ksidze goci i umoliwia * nowych komentarzy przez zarejestrowanych uytkownikw */ // Zablokuj defined( bezporedni dostp

Plik ten

dodawanie

'_JEXEC' ) or die ( 'Brak dostpu' ); funkcj

// Sprawd warto parametru task i wywoaj odpowiedni switch( JRequest::getVar( 'task' )) { case 'edit': editEntryi); break: case 'update': updateEntry(): break; default: displayEntriesO; break;

}
// Zapisz dane pobrane z formularza function updateEntry() { // Ustaw tytu w interfejsie administratora JToolBarHelper::title( JText::_( 'Uaktualnianie wpisu w ksidze goci' ). 'addedit.png' ); // Pobierz referencj do obiektu bazy danych

$db =& JFactory::getDB0(): // Pobierz dane z formularza . $db->getEscaped(JRequest::getVar( 'location' )) . : ;

SfldMessage = '"' . $db->getEscaped(JRequest: :getVar( 'message' )) . ""'; ifldLocation SfldID = // Zapisz zmiany . $db->getEscaped(JRequest::getVar( w tabeli jos_guestbook 'id' )) .

iinsertFields = "UPDATE # _ g u e s t b o o k " . " SET message= " . SfldMessage . ". " . " location" .ifldLocation . " WHERE id = " . ifldlD ; $db->setQuery( iinsertFields. 0): $db->'query(); echo "<h3>Uaktualniono wpis!</h3>"; echo "<a href='index.php?option=com_guestbook'>Powrt do listy wpisw</a>":

// Wywietl list wpisw z ksigi goci function displayEntriesO { // Ustaw tytu w interfejsie administratora JToolBarHelper::title( JText::_( 'Wpisy w ksidze goci' ). 'addedit.png' ):

Rozdzia 6. Zaawansowane rozszerzenia: komponenty


// Wykonaj zapytanie i pobierz list wpisw
$db =& JFactory::getDB0(); iquery = "SELECT a.id, a.message, a.created. a.created_by, u.name" . " FROM # guestbook AS a" . users AS u ON u.id=a.created_by" . " LEFT JOIN #

173

" ORDER BY created DESC"; $db->setQuery( iquery. 0. 10 ): Srows = Sdb->loadObjectList(); ?> <table class="adminlist"> <tr> <td class="title" width=10X> <strong><?php echo JText::_( </td> <td class="title" width=50t> <strong><?php echo JText::_( </td> <td class="title" width=10X> <strong><?php echo JText::_( </td> <td class="title" width=10S> <sttrong><?php echo JText::_( </td> </tr> <?php foreach ($rows as $row) { Slink = 'index.php?option=com_guestbook&task=edit&id=' . $row->id: 'Utworzono' ): ?></strong> 'Wpis' ): ?></strong> 'ID wpisu 1 ); ?></strong>

'Przez' ); ?></strong>

// Przytnij tre wywietlanych wiadomoci


$rowMessage = $row->message: if(strlen($rowMessage) > 100) { IrowMessage = substr($rowMessage. 0, 100) . "...";

echo "<tr>" . "<td>" . $row->id ."</td>" . "<td><a href=" . $link . ">" . IrowMessage . "</a></td>" . "<td>" . $row->created . "</td>" . "<td>" . $row->name . "</td>" . "</tr>":

echo "</table>": echo "<h3>Kliknij tre wpisu w tabeli, aby przej do ekranu edycji,</h3>":

function e d i t E n t r y O { JToolBarHelper::title( JText::_( 'Edycja wpisu ksigi goci' ), 'addedit.png' ):

$db =& JFactory::getDB0(): iquery = "SELECT a.id. a.message, a.created, a.created_by, a.location" . " FROM # guestbook AS a" . " WHERE a.id = " . JRequest::getVar( $db->setQuery( iquery. 0, 10 ); if (irows = $db->loadObjectList()) { 'id' ):

<form id="forml" name="forml" method="post" action="index.php?option=comjj;uestbook&task=update"> <p>Wprowad tre wiadomoci:<br />

174

Joomla!. Profesjonalne tworzenie stron WN 1W


<textarea name="message" cols="60" rows="4" echo $rows[0]->message: ?></textarea> </p> <p> <label>Lokacja (opcjonalnie) : </label> id="location" id="message"><?php

<input name="location" type="text"

value='<?php echo $rows[0]->location: ?>' /> <input name="id" type="hidden" id="id" value='<?php echo $rows[0]->id; ?>' /> </p> <p> <input type="submit" name="Submit" value="Zapisz zmiany" /> </p> </form> <?php } } ?>

Zapisz plik, kod zostanie automatycznie przeanalizowany, a w oknie Outline pojawi si rezultat, lista metod i funkcji.

Plik deskryptora
Plik deskryptora tego komponentu jest zdecydowanie bardziej skomplikowany ni ten dla moduu Hello World. Definicje umieszczone w pliku powoduj instalacj plikw zarwno czci frontowej, jak i zaplecza. Poniewa interfejs Eclipse nie zawiera opcji do tworzenia pliku XML, wybierz File/New/File selection. W oknie New File wprowad guestbook.xml jako nazw pliku. Nastpnie wprowad poniszy kod:
<?xml version="1.0" encoding="utf-8"?> <install version="1.5.0" type="component"> <name>Guestbook</name> <author>Dan Rahmel</author> <versi on>l.0.0</versi on> <description>Wywietla list wpisw z ksigi goci wraz z formularzem dodawania nowych komentarzy przez zarejestrowanych <fi1es> <fi 1ename </files> <install> <sql> <file driver="mysql" </sql> </i nstal1> <uni nstal1> <sql> <file driver="mysql" charset="utf8">uninstall ,sql</file> </sql> </uninstall> <administration> <menu>Guestbook</menu> charset="utf8">install,sql</file> component="com_guestbook">guestbook.php</fi1ename> uytkownikw.</description>

Rozdzia 6. Zaawansowane rozszerzenia: komponenty


<fi les> <fi 1ename component="admi n.guestbook">admi n.guestbook.php</fi 1ename> <fi 1ename>i nstal1.sql</fi1ename> <fi 1ename>uni nstal1.sql </fi 1 ename> </files> </admini stration> </i nstal1>

175

Po zapisaniu pliku w oknie Outline pojawi si schemat XML, jak zilustrowano to na rysunku 6.8. Kliknicie ktrego z elementw spowoduje jego podwietlenie w oknie edytora. Eclipse obsuguje format XML, wic jeli klikniesz prawym przyciskiem okno edytora, w menu kontekstowym pojawi si opcja Validate. Wybranie tej opcji spowoduje walidacj pliku XML i zaznaczenie bdw w pliku maymi czerwonymi ikonami na lewym marginesie.
sunek 6.8.
r t File
1

Resource Edit ' Source .,

Search %

Project

Run

XML . -

,,u

"''- E B B Help

g u e s t b o o k . x m l - Easy Eclipse f o r P H P Navigate Window 5

chemat XML anego pliku ywietlany jest ' oknie Outline

(M

ij

<8PHP

; _ Resource

Navigator ' < 1 3

Result View % :

&

- i tf? Ksiga Goci K .project admin.guestbook.php 3*1 guestbook. php * guestbook.xml install.sql uninstall.sql

'E): x *guestbook.xml Z i " G stall u. ^ *1 - - ' i n<name> vGeur es si ot bno. "o"k -1/ . a

S
* *

c > u chor a

D a n Rahree

<version;-1.0.0-:/\ nowych komntai coraj

[ej Hi [ej [ej - i [ej

name author version description files

-.filename

[ej filename component=com_guestbook ie] install iSi jej uninstall % ( f j administration [ej filename component=admin.guestbook |ej filename

ri i l e

dr iv

B<
Design ! Source 1 Tasks 1 items v ! Description PHP Browser

>

i j filename

,/| X Resource Path

TODO Doda pole formularza dla adresu e-mail

Jjjg "> *

>

Plik deskryptora XML rni si od poprzednich przykadw, poniewa zawiera odwoania do dwch plikw SQL, ktre tworz tabel # guestbook podczas instalacji i oraz usuwaj podczas deinstalacji komponentu. Musisz stworzy te dwa pliki i doczy je do archiwum. Utwrz nowy plik o nazwie install.sql i wprowad do niego poniszy kod:
CREATE TABLE IF NOT EXISTS '#_guestbook' C i d ' INTEGER UNSIGNED NOT NULL A U T O J N C R E M E N T . "message' text NOT NULL. 'created_by' INTEGER UNSIGNED NOT NULL, 'location' VARCHAR(45), 'created' TIMESTAMP NOT NULL, 'userip' V A R C H A R 6 ) , PRIMARY KEY('id'))

Wprowad nastpujcy kod w nowym pliku o nazwie uninstall.sqh


DROP TABLE IF EXISTS '#_guestbook'

176

Joomla!. Profesjonalne tworzenie stron WN 1W

Tworzenie archiwum
Twj projekt jest teraz gotowy, moesz stworzy archiwum, ktre posuy do instalacji w systemie Joomla!. Eclipse posiada nawet tak funkcj! W oknie nawigacyjnym kliknij prawym przyciskiem projekt com_guestbook i wybierz opcj Export... Zostanie wywietlone okno eksportu projektu, co zilustrowano na rysunku 6.9. Rozwi kategori General, wybierz opcj Archive File i kliknij przycisk Next.
Rysunek 6.9.

Okno eksportu zawiera opcj tworzenia archiwum ZIP z plikami projektu

Select
Export resources to an archive file on the local file system.

Select an export destination; type filter text & General Ant Buildfiles , Breakpoints 4 - File System I J Preferences

Okno tworzenia archiwum ma kilka parametrw. Na licie wyboru powinien by zaznaczony Twj projekt, a w prawym panelu wszystkie pliki do niego nalece. O ile nie chcesz wykluczy ktrego z plikw (nikomu nie zaszkodzi jego obecno), domylne ustawienia s odpowiednie. Pozostaw niezmienione domylne ustawienia Save in zip format i Create directory structure for files. W pole tekstowe To archive file wprowad ciek, za pomoc ktrej zostanie utworzone archiwum, moesz si take posuy przyciskiem Browse. Wprowad nazw archiwum com_guestbook.zip i kliknij przycisk Finish. Eclipse utworzy archiwum i zapisze je w wybranym miejscu.

Instalacja komponentu
Otwrz opcj Rozszerzenia w interfejsie administratora Joomla! i zainstaluj komponenty. Archiwum utworzone w programie Eclipse jest poprawnie odczytywane przez platform Joomla!, a pliki kopiowane s w odpowiednie miejsce. Jeden plik zostanie umieszczony w folderze components, a plik deskryptora i cz administracyjna zostan zapisane w folderze administrator\components. W przyszoci moesz wprowadza zmiany bezporednio w plikach umieszczonych w tych folderach, o ile testowanie wymaga wycznie odwieenia okna przegldarki.

Rozdzia 6. Zaawansowane rozszerzenia: komponenty

177

Jeli zostanie wywietlony komunikat o poprawnej instalacji, w menu Komponenty powinien pojawi si wpis Guestbook1, jak przedstawiono to na rysunku 6.10. Na razie nie ma potrzeby korzystania z tej opcji, poniewa ksiga goci nie zawiera jeszcze adnych wpisw. sunek 6.10. menu mponenty jawi si wpis lestbook, iry czy :.zci 'ministracyjn igi goci

Wttiyn.i

Me mi

Aityfcirty

Komponenty Reklama Kontakty

Rozszerzenia

<'* Podgld narzdzia

0 Pomoc

wylot

j/Velconie to JoontU! orjtjed tn llseis azyta i.Hipa


listrator Poprzednia

Mieni

Wytoyiif

Po|>lll.ll Recent .Killed Anicie Menu Stats

Utwrz now pozycj w Main Menu, ktra czy z komponentem Guestbook. Po wywietleniu listy dostpnych komponentw wybierz pozycj Guestbook. Nastpnie na ekranie parametrw wprowad nazw Moja ksiga goci. Ze wzgldw bezpieczestwa upewnij si, czy pozycja bdzie dostpna wycznie dla zarejestrowanych uytkownikw pomoe Ci w tym rysunek 6.11. sunek 6.11. <ranicz dostp < ksigi goci ko dla rejestrowanych ytkownikw, iy zapobiec iduyciom igi goci zez spamerw t

1 1

Pozycja menu:

[utwrz]

yp pozycji menu

P.ir<tHieti Parametr

Guestbook

I Zmie typ 1

Wywietla list wpisw z ksigi goci, wraz z formularzem dodawania nowych komentarzy przez zarejestrowanych uytkownikw. Szczegy pozycji menu Tytifc Moja Ksiga Goci Tekst zastpczy: cze: index ,php?oplion=com_guestbook Wywietlaj w: Main Menu lladi zedna poayeja: v

a.
Joomla! Overview ! $ - What's New in 1.5? More about Joomla! The News Web Links News Feeds ^ ^ ** fr

Publikacja: O Nie

<3 Tak

Kolejno: Nowa pozycja znajdzie si^*nTocu. Po zapisaniu mona zmieni kolejno. Poziom dostpu: Powszechny Specjalny

'odczas tumaczenia tej ksiki przyjto konwencj tumaczenia nazw rozszerze, ale zachowywania iryginalnych nazw plikw. W przypadku komponentw Joomla! te dwa zaoenia wykluczaj si, oniewa przy instalacji pliki komponentu (dla moduw nie ma tego problemu) kopiowane s do katalogu ;om_nazwakomponentu, dlatego komponent Ksiga Goci bdzie w czci administracyjnej nosi oryginaln lazw Guestbook przyp. tum.

178

Joomla!. Profesjonalne tworzenie stron WN 1W

Aby przetestowa ksig goci, otwrz stron Joomla! w przegldarce i kliknij odnonik Moja ksiga goci. Na ekranie nie pojawi si adne wpisy, tylko formularz dodawania nowego. Wprowad wiadomo, podobnie jak zilustrowano to na rysunku 6.12, a nastpnie kliknij przycisk Dodaj wpis, aby zachowa j w systemie. Rysunek 6.12. Wprowad wiadomo w formularzu ksigi goci
N.i p e w n o tu j e s z c z e w i c e I - J a n Kowalski W s p a n i a a stroii.it.ik t i z y n t a ! - J a n Kowalski

Formularz dodawania wpisu do ksigi goci


Wprowad tre wiadomoci.

Lokacla (opcjonalne) D o d a j wpis

Na ekranie pojawi si potwierdzenie wraz z linkiem kierujcym z powrotem do ksigi goci. Kliknij go, aby wywietli list wpisw. Teraz, kiedy w tabeli # guestbook znajduj si ju jakie wpisy, moesz przej do czci administracyjnej. Wybierz pozycj Ksiga Goci z menu Komponenty. Kady wiersz tabeli odpowiada jednemu wpisowi w ksidze goci, co pokazano na rysunku 6.13. Rysunek 6.13. W czci administracyjnej zostanie wywietlona lista wszystkich wpisw w ksidze goci

Wpisy w ksidze goci


!t> W|>i&u 2 1 Wpis Na pewno tu jeszcze wrc ) Wspaniaja strona tak trzyma!

Kliknij tie wpisu w tabeli. aby przej do eki,11111 edycji.

Okoo 200 znakw kadego wpisu wywietlanych jest w postaci odnonika. Jego kliknicie spowoduje wywietlenie formularza edycji wpisu co zilustrowano na rysunku 6.14. Rysunek 6.14. Kliknicie odnonika w tabeli spowoduje wywietlenie formularza edycji danego wpisu

Edycja wpisu ksigi goci


W p r o w a d tre wiadomoci: Ma pewno t u jeszcze wrc :-)

Lokacja (opcjonalnie): Zapisz smiany

Zmiany mona wprowadzi do bazy danych, klikajc przycisk Zapisz zmiany. Ze wzgldw bezpieczestwa, a take dla wygody praktycznie wszystkie znaki, oprcz liter, cyfr i podstawowej interpunkcji, s usuwane z wiadomoci dodawanych przez uytkownikw czci

Rozdzia 6. Zaawansowane rozszerzenia: komponenty

179

frontowej. Cz administracyjna nie ma takich zabezpiecze. Pozwala to wstawia dodatkowe elementy uytkownikom posiadajcym prawa administratora. Komponent Ksiga goci skada si z czci frontowej i administracyjnej, tworzy wasn tabel do przechowywania danych, a take przeprowadza na niej rne operacje (pobieranie, wstawianie, uaktualnianie). Te cechy sprawiaj, e przykadowy komponent stanowi doskona podstaw dla kolejnych rozszerze zorientowanych na komunikacj z baz danych.

orzystanie z phpDocumentor
Jednym z aspektw konstrukcji oprogramowania, ktrym programici powicaj najmniej czasu, jest tworzenie dokumentacji. Proces tworzenia i uaktualniania dokumentacji wraz z rozwojem aplikacji moe by nudny i mczcy. Brak dokumentacji przekada si jednak na trudnoci w zarzdzaniu kodem i jego dalszym rozwijaniu. Program phpDocumentor zosta stworzony, aby ograniczy ten problem. Jest to aplikacja open source, ktra umoliwia programistom umieszczanie podstawowej dokumentacji, a take informacji na temat struktury aplikacji bezporednio w plikach rdowych. Program analizuje wszystkie pliki rdowe i zbiera informacje, z ktrych nastpnie tworzy dokumentacj. Moliwe jest utworzenie dokumentacji w takich formatach, jak HTML, PDF, CHM (skompilowany HTML) i XML. Poniewa generowanie dokumentacji jest zautomatyzowane, aplikacj phpDocumentor mona uruchomi w dowolnym momencie, aby utworzy najbardziej aktualn dokumentacj danego projektu. Oznacza to, e dokumentacja moe odwoywa si zawsze do stanu biecego, a sabo udokumentowane fragmenty kodu mona atwo zidentyfikowa na podstawie przegldu (dziki czemu wiadomo, gdzie uzupeni brakujce informacje).

stalacja
Instalacja programu phpDocumentor na serwerze WWW jest wyjtkowo prosta. Program nie wymaga dostpu do bazy danych ani adnych technologii renderowania, dlatego mona go uywa na dowolnym serwerze z obsug PHP. Pierwszym krokiem jest pobranie archiwum zawierajcego najnowsz wersj z serwisu SourceForge. Odpowiedni odnonik znajduje si na stronie phpDocumentor, ktr znajdziesz pod adresem: http: //www.phpdoc. org Nastpnie naley umieci zawarto archiwum na serwerze WWW. Zwr uwag, aby byo to miejsce publicznie niedostpne, poniewa phpDocumentor nie jest bezpieczn aplikacj. Na moim serwerze testowym umieciem program w folderze phpdoc w gwnym katalogu serwera WWW. Dostp do aplikacji odbywa si wtedy po wprowadzeniu poniszego adresu: http://localhost/phpdoc

180

Joomla!. Profesjonalne tworzenie stron WN 1W Zostanie wywietlony ekran powitalny zawierajcy kilka menu (Introduction, Config, Files, Outpu itd.). Pojawia si take aktualnie wybrany katalog i stan aplikacji. Zazwyczaj bdzie on brzmia Awaiting your command" (Czekam na rozkaz"). W tym rozdziale obsuga phpDocumentor zostaa ograniczona do interfejsu strony WWW. Istnieje jednak moliwo uruchamiania aplikacji z wiersza polece. Jeli zdecydujesz si na t drug opcj, warto rozway zastosowanie instalatora Pear, ktry uatwia proces przygotowania aplikacji.

Wstawianie sekcji DocBlock w kodzie rdowym


Prawdopodobnie zauwaye, e kody rdowe w tej ksice rozpoczynaj si komentarzami w stylu C++, ktre przypominaj ponisze:
*

*/

Powysza sekcja komentarza nosi nazw DocBlock, jest odczytywana i wykorzystywana przez program phpDocumentor przy tworzeniu dokumentacji kodu. Aby bya ona kompletna, podobne sekcje powinny by wstawiane przed wszystkimi funkcjami, klasami, metodami i procedurami. Organizacja dokumentacji opiera si na podziale na pakiet (ang. package). Pakiet jest pojciem zbiorczym dla grupy klas, metod i funkcji. Za pomoc znacznika @package moesz oznaczy miejsce wystpienia pakietu nadrzdnego. Pakiety podrzdne z kolei mona opisywa znacznikiem @subpackage. Poniej umieszczono fragment kodu rdowego systemu Joomla!, ktry naley do pakietu Joomla i podrzdnego pakietu Content:
* @package Joomla * @subpackage Content */
class T00LBAR_content { function _EDIT() {

Aby wyprbowa dziaanie aplikacji phpDocumentor, moesz uruchomi proces generowania dokumentacji z kodu rdowego Joomla!, poniewa zawiera on niezbdne sekcje DocBlock. Utwrz na serwerze WWW katalog, w ktrym bdzie przechowywana dokumentacja. Skada si ona z wielu plikw HTML, dlatego najlepiej przechowywa je w jednym miejscu. Za pomoc phpDocumentor regularnie tworzona jest dokumentacja dla platformy Joomla!. Najnowsz wersj znajdziesz na stronie internetowej http://api.joomla.org. Uruchom w przegldarce program phpDocumentor, a nastpnie kliknij zakadk Output na grze strony. W pierwsze pole, oznaczone Target, naley wpisa katalog, w ktrym zostanie umieszczona dokumentacja. Wprowad ciek dostpu do katalogu, ktry utworzye przed chwil.
1

Odpowiednio: wprowadzenie,

konfiguracja,

pliki, wynik przyp.

tum.

Rozdzia 6. Zaawansowane rozszerzenia: komponenty

181

Kliknij zakadk Files, aby wybra pliki, ktre zostan przetworzone w programie. Katalog includes systemu Joomla! zawiera wiele klas opisanych znacznikami DocBlock. Wprowad ciek dostpu do tego katalogu, ktra w przypadku systemu Windows moe przypomina: C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\includes

Aby rozpocz proces, kliknij przycisk Create (new window). Generowanie moe potrwa kilka minut, poniewa Joomla! zawiera duo kodu, ktry naley przetworzy. Po ukoczeniu pojawi si okno zawierajce informacje o wyniku generowania dokumentacji. Znajduj si w nim take informacje o bdach i problemach, ktre wystpiy w trakcie tworzenia dokumentacji, co moe by szczeglnie pomocne, jeli dopiero zaczynasz prac z programem phpDocumentor. Przejd do katalogu, w ktrym zostaa zapisana dokumentacja i otwrz w przegldarce plik index.html. W oknie zostanie wywietlona lista plikw zapisanych w katalogu includes. W lewej kolumnie znajduje si lista pakietw, ktre zostay zdefiniowane, nastpnie lista przypisanych do nich plikw i klas. W sekcji klas kliknij odnonik JSite. Zostanie wywietlony przegld informacji o klasie wraz z list nalecych do niej metod. Oprcz szczegw klasy (np. komentarzy programistw) na stronie znajduje si opis zmiennych, metod i staych nalecych do klasy. Solidna dokumentacja dla programistw jest korzystna dla kadego projektu. Kilka chwil, ktre trzeba powici, aby doda niezbdne informacje do plikw, przeoy si na znaczce uatwienia w przypadku dalszego rozwijania programu. Zapoznaj si z instrukcjami programu phpDocumentor, poniewa zawiera on wiele dodatkowych funkcji, m.in. moliwo tworzenia kilku wersji dokumentacji (np. jedna wersja dla programistw, a draga dla uytkownikw), a take pobierania informacji z plikw zewntrznych, dziki czemu kod rdowy pozostaje wolny od obszernych komentarzy.

Zsumowanie
System komentarzy zawiera z pewnoci najwicej cech wsplnych dla komponentw Joomla!, poniewa oprcz bogatej funkcjonalnoci zwizanej z wywietlaniem ma take funkcje dostpne z poziomu interfejsu administratora. Wykorzystujc zaawansowane rodowisko programistyczne, takie jak Eclipse, wzbogacone dodatkowo o moliwoci systemu SVN, moesz tworzy komponenty, stosujc nastpujce techniki: dopasowywanie domylnych szablonw Eclipse w celu wstawienia niezbdnego podstawowego kodu; programowanie czci frontowej i administracyjnej, zawierajcych podan funkcjonalno; tworzenie archiwum poprzednich wersji kodu rdowego za pomoc interfejsu SVN dostpnego w Eclipse; udoskonalanie interfejsu ksigi goci, doczanie dodatkowych elementw formularza;

182

Joomla!. Profesjonalne tworzenie stron WN 1W uaktualnianie interfejsu administracyjnego w celu poprawienia integracji z platform Joomla!; generowanie dokumentacji w oparciu o komentarze zawarte w kodzie rdowym przetwarzanym przez program phpDocumentor.

Komponenty stworzone w tym rozdziale s klasycznym przykadem tradycyjnej interakcji ze stron WWW. Sercem nowego sposobu interakcji ze stronami WWW, nazywanym powszechnie Web 2.0, jest poczenie kilku technologii pod nazw Ajax. W rozdziale 7. opisano tworzenie aplikacji Joomla!, ktrej gwn czcijest dynamiczna interakcja z uytkownikiem bez ponownego przeadowywania strony.

7
Joomla! i Ajax
Ajax (ang. Asynchronous JavaScript and XML Asynchroniczny JavaScript i XML) to poczenie potnych technologii, ktre le u podstaw Web 2.0. Dziki technologii Ajax interakcja ze stron WWW jest duo atrakcyjniejsza dla uytkownikw ni wczeniejsze rozwizania. W przeszoci kada zmiana parametrw lub kliknicie przyciskw wizay si z przesaniem danych do serwera WWW, a nastpnie pobraniem w caoci nowej strony, ktra odzwierciedlaa wykonane akcje. Praca z aplikacjami internetowymi funkcjonujcymi w tym modelu bya niewygodna i nieatrakcyjna. W przypadku aplikacji zaprojektowanych z myl o Ajaksie moliwe jest osignicie prawie natychmiastowej reakcji na dziaania uytkownika. Wykonywanie takich czynnoci jak zmiana porzdku sortowania danych w tabeli poprzez kliknicie nagwka cechuje si minimalnym opnieniem. Jeli dana akcja wymaga pobrania dodatkowych informacji (np. wyjanienia dla danego terminu), to zamiast pobiera w caoci now stron, mona, korzystajc z technologii Ajax, przesa tylko wymagane minimum danych z serwera. Uaktualnianie informacji na stronie jest dynamiczne i nie wymaga przeadowania caego dokumentu. W systemie Joomla! wprowadzono funkcjonalno, ktra sprzyja implementacji rozwiza ajaksowych. Stosowanie wymiany informacji w tle prowadzi do dynamicznej i bogatej interakcji ze stron.

truktura technologii Ajax


Wbrew informacjom prasowym na temat narodzin technologii Ajax nie jest to wcale nowo. Jest to raczej sposb cznego wykorzystania istniejcych technologii, ktry zapewnia bogatsz interakcj z uytkownikiem ni poprzednie rozwizania. Technologia Ajax to kombinacja technologii zwizanych ze stronami WWW HTML-a, kaskadowych arkuszy stylw (CSS), JavaScriptu, obiektowego modelu dokumentu (DOM), XML-a i XSLT 1 . Kod JavaScript,

azujcy na XML-u jzyk przeksztace dokumentw XML przyp. tum.

184

Joomla!. Profesjonalne tworzenie stron WN 1W

uruchamiany w przegldarce uytkownika, czy si w tle z serwerem WWW. Informacje mog by przesyane w obu kierunkach, a nastpnie dynamicznie formatowane i wywietlane w oknie przegldarki. Bardzo prostym, a jednoczenie coraz popularniejszym zastosowaniem Ajaksa jest chmurka" pojawiajca si po najechaniu kursorem myszy na dan pozycj. Rozwizanie tego typu stosowane jest na stronie Netflix (rysunek 7.1). Jeli uytkownik najedzie kursorem myszy na tytu lub zdjcie produktu, zostanie wywietlona chmurka" zawierajca powizane informacje i obrazki. W przypadku strony Netflix jest to czsto zdjcie pudeka z filmem, krtkie podsumowanie fabuy, ocena, wystpujcy aktorzy itp.
Rysunek 7.1.

Informacje o filmach na stronie Netflix pobierane s dynamicznie, a nastpnie wywietlane w postaci chmurki"

| Spjdf r-Man J J (2004)1- ; % The heroic arachnid iSk directed by Sam R a i m i \ Chabon. Peter Parker ( 1 through a major identity cn Spider-Man, he decides td ego, which leaves the city carnage left by the evil Dot meantime, Peter still cant Mary-Jane (Kirsten Dunst) Available Formats: DVD .an

The heroic arachnid is back in this live-action sequel directed by Sam Raimi and written by Michael Chabon Peter Parker (Tobey Maguire) is going through a major identity crisis. Burned outfrom being Spider-Man, he decides to shelve his superhero alter ego, which leaves the city suffering in the wake of carnage left by the evil Doc Ock (Alfred Molina). In the meantime, Peter still cant act on his feelings for Mary-Jane (Kirsten Dunst). SMllintj: Tobey Maguire, Kirsten Dunst Director: Sam Raimi Gerne: Action ^Adventure Rotiny: PG-1 3

The Spectacular Spi


(2008) n if it in this three-episode colle Peter Parker - fresh from roWWt surm
3.9 Member Average

Informacje wywietlane w chmurce" nie znajduj w kodzie rdowym strony. Z serwera pobierana jest strona zawierajca podstawowe informacje i kod, ktry pobiera i wywietla dodatkowe informacje, jeli to konieczne. Dziki temu czas pobierania strony zostaje skrcony, poniewa nie s przesyane niepotrzebne informacje. Jeli uytkownik najedzie kursorem myszy na ktr z pozycji, zostanie uruchomiony kod JavaScript, ktry pobierze z serwera nowe informacje, a nastpnie wywietli je w postaci chmurki". Ta magia" wymaga sprzenia kilku technologii. Przegldarka, reagujc na dane wydarzenie, musi by w stanie uruchamia kod JavaScript, ktry wysya danie do serwera. Nastpnie serwer musi zwrci odpowiednio sformatowane informacje, ktre odpowiadaj daniu. Kolejny etap to odebranie informacji w przegldarce, przetworzenie i formatowanie, tak aby mona byoby je wywietli, korzystajc z DOM. Liczba funkcji moe wydawa si zniechcajca, jednake wikszo z tych technologii jest szeroko stosowana. Dwie gwne przegldarki Internet Explorer (IE) i Mozilla Firefox od duszego czasu (kilka poprzednich wersji) maj niezbdn funkcjonalno. W praktyce oznacza to, e wikszo istniejcych przegldarek jest w stanie skorzysta z zalet Ajaksa. Niezbdne funkcje strony serwerowej dostpne s za porednictwem klasy JDocument, skadowej platformy Joomla!. Waciwie sformatowana odpowied serwera moe by przygotowana przez wasny komponent.

Rozdzia 7. JoomlaAjax

185

rosty komponent aiaksowy


System wykorzystujcy Ajaksa mona bardzo szybko skomplikowa. Aplikacja przypomina puzzle, ktre skadaj si z bardzo wielu elementw, dlatego nietrudno pogubi si na pocztku. Z tego powodu na pocztku przydatna bdzie demonstracja podstaw technologii Ajax. Poniszy przykad to nic innego, jak program Hello World!" przeniesiony w realia technologii Ajax. Posuy do zademonstrowania, jak naley czy poszczeglne elementy ukadanki. Przykadowa aplikacja skada si z pojedynczej strony WWW, ktra wywietla obramowany paragraf zawierajcy tekst Mj produkt". Po najechaniu kursorem myszy na tre paragrafu zostanie uruchomiony kod JavaScript, ktry wykonuje danie do serwera Joomla!. Komunikatem zwrotnym jest informacja o dostpnoci danego produktu. Odebrana wiadomo wywietlana jest w postaci okna dialogowego co przedstawiono na rysunku 7.2.
sunek 7.2.

adomo wietlona oknie ilogowym ;t wynikiem namicznego dania sianego komponentu omia

H
k ' !

"

X >,J

w s t K Z

Wyszukaj

. Ulubione
v

^p' g ^ J Przejd
>

^S] Dkumenty\Professional Joomlal\kod\ch07_ajax\AjaxRequestTe5t.html

[MJ Produkt

f \> *

Wybrany produkt jest dostpny!

Gotowe

J Mj komputer

Ten prymitywny przykad stanowi szkielet rozwizania ajaksowego, ktry wkrtce wykorzystasz jako podstaw bardziej przydatnej aplikacji, poniewa posiada on prawie wszystkie znaczce elementy stosowane w zaawansowanych rozwizaniach.

rorzenie komponentu
Pierwszy element aplikacji stanowi komponent Joomla!. Odpowiada on bezporednio na dania, przy czym nie zawiera adnych elementw interfejsu, takich jak menu. Dlatego w naszym przypadku musi jedynie wywietla pojedyncz lini tekstu, odpowied na danie ajaksowe. Utwrz najpierw folder \comjproductinfo na dysku twardym. Umie w nim plik productinfo.php o nastpujcej treci:
<?php

//Zablokuj bezporednie uruchamianie


definecK echo '_JEXEC' ) or diet 'Brak dostpu' ); 'Wybrany produkt jest dostpny!':

186

Joomla!. Profesjonalne tworzenie stron WN 1W

Aby zainstalowa komponent, niezbdny jest take plik deskryptora XML. Wprowad nastpujcy kod i zapisz go w pliku o nazwieproductinfo.xml:
<?xml version="1.0" <install encoding="utf-8"?> type="component"> version="1.5.0"

<name>Informacje o produkcie</narne> <versi on>l.5.0</versi on> <description>Kornponent wywietlajcy informacje o produkcie w odpowiedzi na dania ajaksowe</descripti on> <files> <filename </files> <administration> <menu>Lipny Product <files> <filename </files> </administration> </instal1> component="com_productinfo">productinfo.php</filename> Info</menu> component="com_productinfo">productinfo.php</filename>

Utwrz archiwum o nazwie com_productinfo.zip, zawierajce oba te pliki, a nastpnie zainstaluj je w czci administracyjnej Joomla!. Moesz przetestowa dziaanie komponentu poprzez rczne wpisanie adresu URL dania w oknie przegldarki: http://localhost/index.php?option=com _productinfo&format=raw

Jeli komponent dziaa poprawnie, w oknie przegldarki zostanie wywietlona pojedyncza linia tekstu, co przedstawiono na rysunku 7.3. Jeli zagldniesz do rda dokumentu, zauwaysz, e nie ma tam adnego kodu HTML, tylko zwyky tekst. Ustawienie parametru format na raw (drugi parametr acucha dania) powoduje uruchomienie danego komponentu i zwrcenie wycznie jego wydruku. Wanie taka metoda jest stosowana na stronach korzystajcych z rozwiza ajaksowych do wywietlania informacji.
Rysunek 7.3.
' 3 hitp://loealhost/joomla/index. php?option Plik Edycja Widok
:

com

Wydruk komponentu stanowi informacja o dostpnoci danego produktu w postaci zwykego tekstu

Ulubione L^J

Narzdzia [Ml :. i .

Pomoc /
wVszukai

%J

Ulubione
v

: i jj|]J Przejd

http://localhost/joomla/index.php?option=com_productinfo&forrnat=r

Wybrany produkt jest dostpny!

| y Gotowe

Lokalny intranet

Rozdzia 7. Joomla! i Ajax

187

orzenie strony WWW


Zadaniem strony WWW bdzie wywoanie komponentu w celu pobrania informacji, a nastpnie wywietlenie ich w oknie dialogowym. Kod strony jest zdecydowanie bardziej skomplikowany, poniewa odpowiada za etapy: interakcj z uytkownikiem, danie informacji, odbieranie i wywietlanie informacji. Interakcja z uytkownikiem sprowadza si do reakcji na zdarzenie onMouseOver, czyli wywoanie funkcji JavaScriptu. Funkcja utworzy obiekt komunikacyjny XMLHttpRequest (dane wymieniane s gwnie w formacie XML) i wysya danie, korzystajc z adresu URL przekazanego jako parametr. danie informacji wie si z wywoaniem funkcji di spl ayAjax() i przekazaniem jej jako parametru adresu URL, na ktry naley wysa danie. Funkcja otworzy poczenie, korzystajc z obiektu XMLHttpRequest (dane wymieniane s gwnie w formacie XML), i nastpnie przele danie pod odpowiednim adresem. Funkcja displayAjax() tworzy najpierw obiekt XMLHttpRequest. Podobnie jak w wikszoci przypadkw kodu JavaScript, trzeba najpierw wykry, ktra przegldarka wykonuje kod, a nastpnie zastosowa odpowiadajc jej logik. W przegldarce Internet Explorer, jako pierwszej, zaimplementowano interfejs obiektu komunikacyjnego XMLHttpRequest (za porednictwem obiektu ActiveX), a nastpnie naruszono standardy, nie wprowadzajc przyjtych rozwiza. Chocia zostao to poprawione w pniejszych wersjach IE (poczwszy od IE7), trzeba wzi pod uwag ogromn ilo starszych wersji IE, ktre nadal s uywane. Kolejnym krokiem jest ustawienie funkcji wywoywanej przy odbieraniu wynikw, nastpnym otwarcie poczenia i wysanie dania. Zapisanie wskanika do funkcji powoduje jej uruchomienie w przypadku zmiany stanu obiektu komunikacyjnego (czyli gwnie w przypadku odebrania danych). Pamitaj, e pierwsza litera A w skrcie Ajax oznacza asynchroniczny, dlatego pozostae elementy strony powinny dziaa niezalenie od wykonywanego dania bez oczekiwania na jego rezultat. Funkcja displayReturnO sprawdza pobrane informacje. Jeli danie zostao przerwane z powodu przekroczenia limitu czasu lub wystpi inny bd, zostanie wywietlony stosowny komunikat. W przeciwnym wypadku zostaje uruchomione okno dialogowe zawierajce otrzyman wiadomo. Aby zobaczy technologi Ajax w akcji", wprowad poniszy kod w edytorze tekstu, zapisz go pod nazwAjaxRequestTest.html i otwrz w przegldarce:
<!D0CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1 - s t n ct,dtd"> <html xmlns="http://www.w3.org/1999/xhtml "> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript" language="javascript">

// Utwr: imienn d/a obiektu XMLHttpRequest


var myRequest = false:

188

Joomla!. Profesjonalne tworzenie stron WN 1W


function displayAjax(myURL) { // Usu ewentualny poprzedni obiekt myRequest = false; // Dla przegldarek takich jak Firefox, Safari i innych, ktre wykorzystuj ponisze:

if (window.XMLHttpRequest) { myRequest = new XMLHttpRequest0; if (myRequest.overrideMimeType) { myRequest.overrideMimeType('text/xml 1 );

} else if (window.ActiveXObject) { // Przegldarka IE6 i wczeniejsze wykorzystuj

inny

model

try { myRequest = new ActiveX0bject("Msxml2.XMLHTTP"); } catch (e) { try { myRequest = new ActiveXObjectC'Microsoft.XMLHTTP"); } catch (e) {}

// Sprawd,

czy poprawnie

otworzono

obiekt

if (!myRequest) { a l e r t C B d : Nie mona utworzy obiektu XMLHttpRequest'); return false:

// Przypisz funkcj,

ktra zostanie

wywoana

po otrzymaniu

odpowiedzi

myRequest.onreadystatechange = displayReturn; // Otwrz docelowy adres URL myRequest.open('GET', myURL, true); // Wylij danie myRequest.send(nul 1);

function displayReturnO { // Sprawd, czy danie zostao ukoczone, 4ukoczone if (myRequest.readyState == 4) { // Sprawd kod statusu HTTP if (myRequest.status == 200) { // Wywietl komunikat zwrotny alert(myRequest.responseText); } else {

alert('Wystpi problem z daniem.');

</script> </head> <body> <p style="border:lpx solid black;" onmouseover= "displayAjax('http://localhost/index.php?option=com_productinfo&format=raw')"> Mj produkt </p> </body> </html>

Rozdzia 7. Joomla! i Ajax

189

Umie ten plik w gwnym katalogu serwera Joomla! i otwrz w przegldarce. Zwr uwag, e adres przekazywany funkcji displayAjaxf) odwouje si w obecnej postaci do serwera zainstalowanego na komputerze lokalnym (localhost). Zmie go, jeli uruchamiasz stron Joomla! na zdalnym serwerze. Po najechaniu kursorem na tre paragrafu zostanie wywietlona wiadomo w oknie dialogowym. To chyba nie byo a takie trudne, prawda? W przypadku programu Firefox zabezpieczenie przed atakami cross-site scripting zablokuje dziaanie skryptu, jeli zostanie uruchomiony z twardego dysku komputera. Pojawi si komunikat Bd: nieobsuony wyjtek: Dostp do metody XMLHttpRequest.open zabroniony", a przegldarka zablokuje wywietlanie strony. Rozwizaniem jest przeniesienie pliku na serwer WWW i uruchomienie go stamtd. Teraz, kiedy podstawowa implementacja zostaa ukoczona, moemy przej do bardziej skomplikowanego przykadu. Wikszo rozwiza ajaksowych stosowanych na istniejcych stronach WWW wymaga poczenia dynamicznego generowania treci z interaktywn komunikacj, waciw dla technologii Ajax. W ten sposb pobiera si wicej informacji. Nastpny przykad jest kompletnym systemem ajaksowym opartym na Joomla!.

nrorzenie komponentu Serwer-danie


Korzystajc z prostej aplikacji jako podstawy, moesz teraz stworzy praktyczny komponent, ktry w przyszoci ewentualnie posuy jako czarna skrzynka (ang. black box) do pobierania danych. Komponent Serwer-danie, ktry stworzysz w tym podrozdziale, bdzie mia funkcjonalno podobn do tej, ktr maj chmurki" na stronie Netflix. Ale zwracane bd artykuy Joomla! zamiast informacji o filmach. Kiedy uytkownik najedzie kursorem myszy na tytu artykuu wywietlony przez specjalny komponent, pojawi si chmurka" zawierajca tytu artykuu i jego pierwszych 200 znakw. Chocia ponisza aplikacja nie jest szczeglnie uyteczna, zastosowane rozwizanie mona zaadaptowa do wasnych potrzeb. Stanowi ona demonstracj dynamicznego pobierania danych za porednictwem komponentu Joomla!, a nastpnie wywietlania ich w postaci chmurki". T funkcj mona przenie na dowoln stron czy to sklepu internetowego, gdzie wywietlane s dodatkowe informacje o produkcie, czy internetowego klienta poczty, co eliminuje konieczno odwieania caego dokumentu, gdy chce si pobra nowe wiadomoci.

rorzenie komponentu
Pierwszym krokiem jest skopiowanie folderu \com_productinfo i nadanie kopii nazwy \com_articleinfo. Nastpnie zmie nazwy plikw productinfo.php i productinfo.xml odpowiednio na articleinfo.php i articleinfo.xml. Zmie kod w pliku articleinfo.php, aby odpowiada poniszemu:
<?php

* @version $Id: com articleinfo.php 5203 2007-07-27 01:45:14Z DanR $ * Komponent wykorzystuje warto parametru 'articlenum'

190

Joomla!. Profesjonalne tworzenie stron WN 1W


* w zapytaniu, aby pobra tytu i tre artykuu, * ktre s zwracane w formacie XML
*

*/

//Zablokuj bezporednie uruchamianie


defined( '_JEXEC' ) or die( 'Brak dostpu' ):

// Odczytaj ID artykuu podany jako parametr dania


SarticleNum = intval(JRequest::getVar( 'articlenum' ));

// Domylne wartoci na wypadek bdu


$articleTitle = "Bd"; SarticleBody = "Bd":

// Pobierz referencj obiektu bazy danych


$db =& JFactory;:getDB0();

// Utwrz zapytanie, aby pobra warto pl id. title i text artykuu


$query = "SELECT a.id. " FROM # content " WHERE a.id =" . $db->setQuery( Squery, a.title.a.introtext AS a \n" . SarticleNum . "\n"; 0): \n" .

// Wykonaj zapytanie
if "(Srows = $db->loadObjectList()) {

// Odczytaj pierwszy zwrcony rekord


$row = Srows[0];

// Przypisz tytu i tre artykuu do odpowiednich zmiennych


SarticleTitle = Srow->title; SarticleBody = $row->introtext;

// Usu wszystkie znaczniki z treci artykuu


SarticleBody = strip_tags($articleBody):

// Usu wszystkie znaki niebdce literami, cyframi lub znakami interpunkcji


SarticleBody = preg_replace( "/[-zA-ZO-9 .?!S()\'\"]/", "". SarticleBody);

// Jeli artyku jest duszy ni 200, skr go


if(strlen(SarticleBody) > 200) { SarticleBody = J S t n n g : :substr(SarticleBody. 0. 200):

// Zwr tytu i tre artykuu w formacie XML


echo "<article><title>" SarticleBody . SarticleTitle . "</title><body>" . . "</body></article>":

?>

Po wprowadzeniu powyszego kodu zmie odpowiednio plik deskryptora, aby wskazywa nowy plik i nazw komponentu. Nie zapomnij zmieni atrybutu component znacznika <fi 1 ename>. Jeli tego nie zrobisz, to przy prbie instalacji zostanie wywietlony komunikat e rozszerzenie zostao ju zarejestrowane w systemie! Utwrz archiwum o nazwie com_articleinfo.zip, zawierajce te dwa pliki, a nastpnie zainstaluj je w systemie Joomla!, korzystajc z opcji Rozszerzenia/Instalator. Bdc w interfejsie administratora, przejd do listy artykuw i zanotuj ID istniejcego artykuu. Wartoci pola ID poszczeglnych artykuw wywietlane s w kolumnie ID. Otwrz w przegldarce poniszy adres: http://localhost/index.php?opon=com_articleinfo&format=raw&articlemm

Rozdzia 7. Joomla! i Ajax

191

Oczywicie powiniene zmieni warto parametru articlenum, aby odpowiada ID artykuu znajdujcego si w bazie danych. W przegldarce powinno zosta wywietlonych pierwszych 200 znakw artykuu. Cakiem fajne, nieprawda? Teraz, kiedy sprawdzilimy poprawno kodu, moemy dokadniej przeanalizowa jego dziaanie.

iowied na danie
W pierwszej czci kodu umieszczono instrukcje, ktre przygotowuj dziaanie komponentu, a take pobieraj warto ID artykuu odczytan z odebranego dania. Do tego celu posuono si metod JRequest::getVar(), ktra odczytuje warto parametru z acucha dania. Pobrana warto zostaa zapisana w postaci zmiennej iarticlenum. Pod wywoaniem getVar() kryje si tak na prawd kilka funkcji. Gwnym zadaniem tej metody jest jednak pobieranie wartoci parametrw z rnych rde (GET, POST itd.). Jeli wic w kodzie komponentu potrzebujesz pobra informacje z acucha dania, formularza lub innego rda, moesz to zrobi za pomoc tej jednej metody. Warto zwrci uwag na fakt, e metoda ta usuwa z przesanych informacji fragmenty, ktre mogyby posuy do ataku SQL Injection (zobacz podrozdzia Zagroenia bezpieczestwa") lub innych prb wamania. Stanowi ona bardzo wan warstw zabezpiecze, dlatego najlepiej wykorzystywa t metod zamiast rcznego pobierania danych za pomoc instrukcji PHP. Nawet jeli niepodane informacje zostan przepuszczone przez metod getVar(), zostan usunite przez funkcj intval (), ktra zmienia podany cig znakw na bezpieczn i nieszkodliw liczb. Po ustawieniu zmiennej iarticlenum zmiennym SarticleTitle i SarticleBody przypisywane s wartoci domylne.

ikonywanie zapytania do bazy MySQL


Zapytanie wykonywane jest za porednictwem standardowego obiektu bazy danych, ktrego referencja pobierana jest metod getDB0(). Konstrukcja zapytania zakada zwrcenie z bazy danych wycznie pl ID, title (tytu) i introtext (ktre zawiera skrcon tre artykuu). Zwr uwag, e instrukcja FROM wykorzystuje zapis # content zamiast odwoania si do konkretnej tabeli, jak choby jos_content. Podczas uruchamiania zapytania system Joomla! zastpi ten zapis (#_) waciwym prefiksem dla tabel Joomla!. Dziki temu programista nie musi samodzielnie odczytywa konfiguracji Joomla!, aby okreli, jaki przedrostek wykorzystywany jest dla tabel w bazie danych. Kolejnym krokiem jest przypisanie i uruchomienie zapytania. Jeli wynikiem zapytania jest przynajmniej jeden wiersz, zostanie on przetworzony. Zmiennej $row przypisywany jest najpierwszy obiekt w tabeli $rows. Jeli zwrcono wicej pasujcych rekordw, zostan one po prostu zignorowane. Tre artykuu powinna zosta zwrcona w postaci zwykego tekstu, dlatego uruchamiana jest funkcja usuwajca znaczniki HTML, a nastpnie kasowane s wszystkie znaki, ktre nie s literami, cyframi lub znakami interpunkcji (mogyby one negatywnie wpyn na dziaanie chmurki"). Po oczyszczeniu treci artykuu przycinana jest ona maksimum do 200 znakw. Poniewa zaoeniem technologii Ajax jest szybko reakcji, liczb danych zwracanych do klienta najlepiej utrzymywa na moliwie niskim poziomie.

192

Joomla!. Profesjonalne tworzenie stron WN 1W

Zwracanie danych w formacie XML

Poniewa klient potrzebuje wycznie dwch informacji (tytuu i skrconej treci artykuu), skomplikowany model XML jest zbdny. Za pomoc instrukcji echo tworzone jest proste drzewo XML, ktrego gwnym elementem jest <article>, a elementami potomnymi s <title> i <body>. Jeli wynikiem zapytania miaoby by kilka rekordw, mona by je zapisa w postaci kolejnych elementw <article>.

To by byo na tyle! Komponent odczytuje ID artykuu z acuchu dania, przeglda baz danych w poszukiwaniu odpowiedniego wpisu, przetwarza informacje do postaci zwykego tekstu i przesya z powrotem w postaci prostego drzewa XML. Modu bdzie w tym wypadku bardziej skomplikowany, obsuguje trzy etapy: interakcj z uytkownikiem, wysyanie dania i wywietlanie informacji zwrotnych.

Tworzenie moduu ajaksowego

Modu wywietlajcy informacje zwrcone za porednictwem Ajaksa bdzie skada si w moliwie jak najwikszym stopniu z napisanego wczeniej kodu. Platforma Joomla! jesi pena procedur i obiektw, ktre moesz wykorzysta, piszc wasny kod. W tym przypadku, zamiast pisa wasny kod odpowiedzialny za wywietlanie chmurek", posuymy si ju tym istniejcym w Joomla!.

System Joomla! zawiera wietn funkcj wywietlajc chmurki", ktre w znacznym stopnii mona dopasowa do wasnych potrzeb. Pochodzi ona z biblioteki overLIB, stworzonej prze Erika Bosrupa (www.bosrup.com/web/overlib), ktry askawie pozwoli na doczenie jej do instalacji Joomla!. Na jego stronie internetowej znajdziesz najnowsz wersj biblioteki ktr moesz wykorzysta, jeli planujesz implementacj poza systemem Joomla!. W przypadku platformy Joomla! wystarczy wstawi w kodzie strony jedn lini:
<script type="text/javascript" src="includes/js/overl ibjrini. js"></script>

Powysza instrukcja wskazuje, e kod biblioteki przechowywany jest w katalogu /includes/js Jeli dysponujesz wolnym czasem, warto przeanalizowa jej kod, aby pozna moliwe parametry i dostpn funkcjonalno.

Tworzenie pliku XML i folderu z moduem

Utwrz folder mod_artic1eajax, w ktrym bdzie przechowywany modu. Nastpnie otwr; go, wprowad poniszy kod i zapisz go pod nazwmod_articl eajax. xml:
<?xml version="1.0" encoding="utf-8"?> <install type="module" version="1.5.0"> <name>Ajax i artykuy</name> <versi on>l.5.0</versi on> <description>Ten modu wywietla odnoniki do 5 aktualnych artykuw. Odnonik do kadego posiada zdefiniowane zdarzenie onMouseOver, ktre uruchamia procedur ajaksow pobierajc informacje o artykule za pomc komponentu com_articleinfo. </description>

Rozdzia 7. Joomla! i Ajax


<files>
filename </files> </i nstal1> module="mod_articleajax">mod_articleajax.php</filename>

193

Powyszy kod to najprostszy plik deskryptora. Moesz go rozszerzy, jeli planujesz wstawi dodatkowe pliki i parametry, ktre rozszerz tworzon aplikacj.

orzenie mod_articleajax
Utwrz w folderze plik o nazwie mod_articleajax.php i wprowad poniszy kod:
<?php /**

* @version $ld: mod articleajax.php 5203 2007-07-27 01:45:14Z DanR $ * Ten modu wywietla odnoniki do 5 aktualnych artykuw. * Odnonik do kadego posiada zdefiniowane zdarzenie onMouseOver, ktre uruchamia * procedur ajaksow pobierajc informacje o artykule za pomoc komponentu com articleinfo. */
<script type="text/javascript" <script type="text/javascript"> src="inc1udes/js/overlib_mim.js"></script>

// Utwrz zmienn dla obiektu XMLHttpRequest


var myRequest = false; function displayAjax(tempArticlelD) {

// Wprowad adres, na ktry zostanie wysane danie


var myURL = 'http://localhost/index.php?option=com_articleinfo&format=raw&articlenum=' + tempArticlelD;

// Usu ewentualny poprzedni obiekt


myRequest = false;

// Dla przegldarek takich jak Firefox, Safari i innych, ktre wykorzystuj ponisze:
if (window.XMLHttpRequest) { myRequest = new XMLHttpRequest(): if (myRequest.overrideMimeType) { myRequest.overrideMimeType('text/xml'): } else if (window.ActiveXObject) {

// Przegldarka IE6 i wczeniejsze wykorzystuj inny model


try { myRequest = new ActiveX0bject("Msxml2.XMLHTTP"): } catch (e) { try { myRequest = new ActiveXObjectC'Microsoft.XMLHTTP"); } catch (e) {}

//Sprawd, czy poprawnie otworzono obiekt


if (!myRequest) { overlibt'Bd: Nie udao si utworzy obiektu XMLHttpRequest'):

return false:

194

Joomla!. Profesjonalne tworzenie stron WN 1W


// Sprawd, czy poprawnie otworzono obiekt

function displayReturnO { // Sprawd, czy danie zostao ukoczone, 4=ukoczone if (myRequest.readyState == 4) { // Sprawd kod statusu HTTP if (myRequest.status == 200) { // Pobierz gwny element XML var article = myRequest.responseXML.getElementsByTagNamei'article'): // Pobierz elementy title i body // IE6 wymaga typu mime ustawionego na text/xml", w przeciwnym razie nie odczyta //poprawnie odpowiedzi. // Dlatego, jeli niedostpny jest element o indeksie [0], mamy do czynienia z IE6 i musimy // rcznie zaadowa model obiektu. if (!article[0]) { myRequest.responseXML.1oadXML(myRequest.responseText): var article = myRequest.responseXML.getElementsByTagName('article'):

myRequest.onreadystatechange = displayReturn; // Otwrz docelowy adres URL myRequest.open('GET', myURL. true): // Wylij danie myRequest.send(null);

myTitle = article[0].getElementsByTagNamei'title')[0].fi rstChiId.nodeValue: myBody = // Wywietl article[0].getElementsByTagNamei'body')[0].firstChiId.nodeValue: chmurki"

w postaci

overlib(myBody.CAPTION.myTitle,BELOW,RIGHT): } else { // Wystpi bd, wywietl chmurk " z komunikatem overlib('Wystpi problem podczas wykonywania pobierania'.BELOW,RIGHT):

dania.'.CAPTION.'Bd

</script> <small>Modu ajaksowy</small><br /> <?php //Zablokuj bezporednie uruchamianie defined( '_JEXEC' ) or die( 'Brak dostpu' ): //Zdefiniuj lokalne zmienne $db =& JFactory::getDB0(): $user =& JFactory::getUser(): Suserld = (int) $user->get('id'): //Zdefiniuj odpowiednie daty, aby zagwarantowa, e artykuy Snuli Date = $db->getNullDatei): Snow = date('Y-m-d H:i:s'. timet)): // Wyszukuj wycznie opublikowanych artykuw Swhere = 'a.state = 1 ' . " AND (a.publish_up = "' . Snuli Date . "' OR a.publish_up <= "' . Snow . "')" . " AND ( a.publish_down = "' . Snuli Date . "' OR a.publishjjown >= "' . Snow . "')"; s dostpne

Rozdzia 7. Joomla! i Ajax

195

// Utwrz zapytanie
$query = "SELECT a.id. a.title " FROM # content AS a \n" . " WHERE " . iwhere . "\n" . " AND a.access <= " . iuserld; \n" .

// Uruchom zapytanie i pobierz 5 pierwszych rekordw


$db->setQuery( $query, 0,5); if (irows = $db->loadObjectList()) {

// Wykonaj dla kadego rekordu


foreach ( irows as $row ) {

// Wywietl tytu artykuu


iartTitle = JText::_($row->title);

// Dodaj zdarzenie onmouseover, ktre uruchomi funkcj displayAjax()


echo "<span onmouseover=displayAjax(" . $row->id . "); onmouseout=nd(); >";

// Utwrz odnonik do waciwego artykuu


echo "< a href=index.php?optnon=com_content&view=article&id=" . $row->id . "&Itemid=44>" . iartTitle . "</a><br /></span>\n";

}
// Wywietl komunikat o bdzie, jei pobieranie danych nie powiodo si
echo Sdb->getErrorMsg(); ?>

Podobnie jak we wczeniejszym przykadzie, jeli uruchamiasz stron na zdalnym serwerze, musisz zmieni adres wykorzystywany przez funkcj di spl ayAjax(). Po ukoczeniu tworzenia moduu utwrz archiwum o nazwie mod_artic1eajax.ZTp i zainstaluj je, korzystajc z opcji Rozszerzenia. Jeli pozostawisz modu na pozycji left, zostanie on wywietlony na stronie gwnej. Otwrz przegldark internetow i otwrz stron gwn. Po najechaniu kursorem na kady z wywietlonych odnonikw zostanie wywietlona chmurka" zawierajca tytu i pierwszych 200 znakw artykuu, co przedstawiono na rysunku 7.4. Jak moesz zauway, dziki Ajaksowi sporo dodatkowych informacji jest byskawicznie przedstawianych uytkownikowi. Rysunek 7.4.
Tytu i pierwszych 200 znakw kadego artykuu zostan wywietlone w postaci chmurki"
Ajax i artykuy Latest N e w s
Content Layouts MM-' DOI I to Joomlal ..framework and content publishing system designed for quickly eating highly interactiue lultllanguage W e b sites online edia portals blogs and eCommerce appl

Popular

o the Frontpage

i II"! n' liximl.i Overview i l'."Int. cense i M u t .lii'.in Jiinitila: I FAO i Tire News i W e l l Links News Feeds

Joomlal

Joomia! is .1 flee open source i t a m e w o i k and content publishing system designed tot quickly Cio.itiri'j tii.jtitv iiiteiactive multi-language Well sites, online communities. media poitais. tilo'is .mil eC oinmei ce applications. pmered "v -Joomlal provides an easy-to-use graphical user Interface that simplifies the management and publishing of large volumes of content including HTML, documents, arid rich media. Joomlal is used by organisations of all sizes for Public Web sites, Intranets, and Extrais and is supported by a community of thousands of

J, J o o m l a !

196

Joomla!. Profesjonalne tworzenie stron WN 1W Korzystajc z potgi tego prostego przykadu, bdziesz prawdopodobnie chcia tworzy wasne rozwizania ajaksowe. Kod moduu jest bardziej skomplikowany ni ten komponentu, dlatego trzeba dokadnie go przeanalizowa, aby w peni rozumie jego dziaanie.

..Chmurki"
Jedn z pierwszych instrukcji w kodzie moduu jest znacznik script, ktry niezbdny jest do skorzystania z funkcjonalnoci biblioteki overLIB. Po doczeniu biblioteki moesz wywietli chmurk", wywoujc funkcj overLIBO. Istnieje moliwo okrelenia sporej liczby parametrw, ktre wpywaj na wygld chmurki, np. wysoko, kolor, umiejscowienie czy parametry wywietlanego tekstu.

Funkcje wywoujce

Poniej znacznika <scri pt> znajduj si definicje funkcji di spl ayAjax() i di spl ayReturn(). Funkcja di spl ayAjax() jest praktycznie identyczna z t, ktra wystpuje we wczeniejszym przykadzie wywietlajcym informacje o dostpnoci. Jedyn znaczc zmian jest parametr przekazywany funkcji. Zamiast podawania kompletnego adresu URL funkcja wymaga podania ID artykuu, na podstawie ktrego tworzony jest odpowiedni adres odwoujcy si do komponentu com_articleinfo. W przeciwiestwie do displayAjaxO w kodzie funkcji di spl ayReturn() zaszo wiele zmian. Zamiast prostego odbierania tekstu wysanego przez komponent (za pomoc obiektu reponseText) nowy kod napisano z wykorzystaniem obiektu responseXML, dziki czemu mona odczytywa dane sformatowane w postaci drzewa XML. Najpierw tworzone jest odwoanie do elementu gwnego <article>, a nastpnie pobierane s wartoci elementw <title> i <body>, zapisane w polu nodeVal ue. Pobrane wartoci znajduj zastosowanie przy wywoywaniu funkcji overLIB(), okrelana jest tre i nagwek chmurki". Te dwie funkcje odpowiadaj za cz wysyania i pobierania danych. Elementy odpowiedzialne za interakcj z uytkownikiem s odrobin bardziej skomplikowane, poniewa niezbdny jest dostp do bazy danych Joomla!, dziki ktremu pobiera si odpowiednie informacje o artykuach.

Wynajdywanie artykuw w bazie danych Joomla!


Kod odpowiedzialny za wywietlanie artykuw nie moe skada si wycznie z prostej instrukcji pobierajcej tytuy aktualnych artykuw, a nastpnie wywietlajcej je w postaci listy. Z powodu bezporedniego dostpu do danych umieszczonych w tabeli artykuw takie podej cie spowodowaoby pobranie zarwno niepublikowanych artykuw, jak i tych z ograniczonym dostpem. Niezbdne jest wprowadzenie zabezpiecze uniemoliwiajcych wywietlanie niepowoanych treci.

Rozdzia 7. Joomla! i Ajax

197

Dlatego podczas odwoywania do bazy danych wykorzystywane s dane aktualnie zalogowanego uytkownika. Warto zmiennej inullDate powoduje wywietlenie artykuw, dla ktrych nie okrelono daty wyganicia. Zmienna $now usuwa z listy przeszukiwanych artykuw te, ktre zostan opublikowane w przyszoci. Instrukcja zapisana w zmiennej $where gwarantuje, e zostan pobrane wycznie obecnie opublikowane artykuy. Klauzula WHERE jest nastpnie dodawana do zmiennej $query, ktra zawiera zapytanie pobierajce pola ID i title artykuw. W przypadku moduu konieczne jest wywietlanie wycznie prostej listy wpisw, dlatego nie ma powodu, aby pobiera nadmiarowe dane. Ostatecznie zostaje uruchomiona metoda setQuery(), ktra uruchamia zapytanie i pobiera maksymalnie pi rekordw. Moliwe byoby pobranie kompletnej listy artykuw, jednak modu zajby wtedy zbyt wiele miejsca w pionie, dlatego lepiej ograniczy zakres lub rozmiar pobieranych danych. Dla kadego rekordu pobranego jako wynik zapytania tworzony jest element <span>, dla ktrego zdefiniowano zdarzenie onMouseOver. Analizujc kod rdowy, moesz zauway, e do kadej pozycji przypisane jest odpowiednie ID w postaci parametru funkcji di spl ayAjax(). Kod rdowy wygenerowanej strony zawiera dla kadego zdarzenia onMouseOver odpowiedni ID artykuu. Dodatkowo przy definicji tego zdarzenia umieszczana jest instrukcja, ktra ukrywa wczeniej wywietlone chmurki". Dla kadego elementu <span> tworzony jest take odnonik do danego artykuu. Jego kliknicie powoduje uruchomienie komponentu com_content, ktry wywietla artyku, a odpowiednie ID przekazywane jest w postaci parametru. Nazw odnonika jest jedno z pl rekordu, tytu artykuu. Jeli podczas pobierania danych z bazy wystpi bd, na stronie pojawi si stosowny komunikat. Powiniene mie ju solidne umiejtnoci zwizane z implementacj rozwiza ajaksowych z wykorzystaniem platformy CMS Joomla!. Stworzony szkielet mona rozbudowywa w dowolny sposb, aby osign wiksz interaktywno.

Wady technologii Ajax


Korzystajc z ekscytujcych moliwoci technologii Ajax, programici mog atwo zapomnie o j e j wadach. Oprcz skomplikowania projektu strony istnieje kilka realnych problemw zwizanych ze wzmoonym zastosowaniem tej technologii: niedostpno treci pobieranych za pomoc Ajaksa dla robotw internetowych; gromadzenie informacji; moliwe zagroenia bezpieczestwa.

198

Joomla!. Profesjonalne tworzenie stron WN 1W

Niedostpno dla robotw internetowych


Wzrost wykorzystania technologii Ajax mona przyrwna do szalejcego poaru, poniewa zaczy powstawa strony, na ktrych wszystkie funkcje realizowane s za pomoc technologii Ajax od wywietlania menu, po prezentacj kluczowych informacji. Chocia mona atwo ulec zachwytowi nad now technologi, naley stosowa j tylko tam, gdzie najlepiej pasuje. Jak dotd najlepszym zastosowaniem s widgety, takie jak te na stronic Nctflix lub Google Maps. Trzeba jednak pamita, e wszystkie informacje wywietlane w widgetach (pobrane z uyciem Ajaksa) s niedostpne dla robotw internetowych, poniewa nie uruchamiaj one np. kodu powizanego z odnonikiem. Mimo i wywietlanie chmurek" moe by atrakcyjne i zachcajce dla odwiedzajcych stron, roboty internetowe cakowicie je zignoruj. Upewnij si, e wszystkie informacje dostpne za porednictwem Ajaksa dostpne s gdzie indziej na stronie, w postaci zwykej strony HTML. Dziki temu robot internetowy odwiedzajcy stron nie natrafi na pust skorup. Jeeli zaley Ci na pozycjonowaniu strony w wyszukiwarkach, nie umieszczaj gwnych treci, ktre normalnie dostpne s dla uytkownikw za pomoc Ajaksa w postaci plikw HTML, gdzie w zakamarkach witryny, poniewa pogorszy to pozycj strony.

Gromadzenie informacji
Wikszo da ajaksowych prowadzi do odebrania w przegldarce sformatowanych danych. Musisz zwrci szczegln uwag na zabezpieczenie si przed niepowoanym dostpem, a take atakami hakerw. Wikszo aplikacji ajaksowych wykonuje dania, ktre powoduj zwrcenie danych z bazy. Mog to by informacje na temat ceny/dostpnoci produktu, a nawet tajne informacje firmy. Poniewa dane pobierane s w formacie XML, nie trzeba duo czasu i wysiku, aby konkurencja stworzya, naduywajc komponentu ajaksowego, program pobierajcy dane do momentu, kiedy wszystkie informacje znajd si w ich bazie. Istnieje kilka sposobw obrony przed takim podstpowaniem. Najprostszym z nich jest zapewnienie, e dania nie s tworzone wedug prostego schematu, np. sekwencji liczb. Jeli produkty s ponumerowane od 1 do 50, sprbuj zastosowa inn metod identyfikowania rekordw, tak aby niemoliwe byo stworzenie aplikacji, ktra pobiera informacje dla kolejnych ID.

Zagroenia bezpieczestwa
Kolejne niebezpieczestwo stanowi potencjalny atak SQL Injection. W tym przypadku haker prbuje przesa zapytanie SQL w postaci parametru. Jeli dobierajcy program wstawia odebrane dane bezporednio do zapytania, moliwe jest zdradzenie wielu prywatnych informacji.

Rozdzia 7. Joomla! i Ajax

199

Na szczcie Joomla! zawiera funkcje takie jak getVar(), ktre zapobiegaj przenikaniu" wikszoci szkodliwego kodu. Zawsze pomyl dwa razy, zanim zdecydujesz si na ominicie funkcji wbudowanych w Joomla!, poniewa zawieraj wiele sprawdzonych i pewnych zabezpiecze.

odsumowanie
Wykorzystanie technologii Ajax na Twojej stronie moe sprawi, e w peni zasuy ona na miano witryny Web 2.0. Poczenie i waciwa implementacja niezbdnych technologii (HTML, XML, JavaScript itd.) mog by frustrujce, jednak trud zostaje wynagrodzony w chwili uruchomieniem strony. W tym rozdziale opisano implementacj rozwiza ajaksowych w Joomla!, a w szczeglnoci: opisano powizania midzy skadowymi technologii Ajax, a take sposoby implementacji w Joomla!; opisano dziaanie komponentw, pobieranie danych w formacie raw; tworzenie prostej aplikacji ajaksowej, ktra jest przykadem zastosowania caej platformy; rozszerzanie systemu Joomla! dodanie wywietlania chmurek", co jest demonstracj funkcjonalnoci technologii Ajax; zalety konserwatywnego punktu widzenia rozsdnego decydowania o miejscach implementacji rozwiza ajaksowych, wiadomo wad nowej technologii.

Implementacja technologii Ajax moe by cakiem skomplikowana. Jeli stanowi ona cze wikszego projektu, kod programu moe sta si zupenie niejasny. Narzdzia programistyczne noszce nazw wzorcw projektowych mog uatwi planowanie aplikacji, zredukowa liczb bdw i zwikszy zysk wiedzy z poprzednich aplikacji. W rozdziale 8. opisano, jak stosowa wzorce projektowe w programowaniu Joomla!.

200

Joomla!. Profesjonalne tworzenie stron WN 1W

8
Wzorce projektowe a Joomla!
Joomla! jest aplikacj napisan technik programowania obiektowego. Caa platforma skada si z zestawu klas, ktrych poczenie tworzy funkcjonalno systemu zarzdzania treci (CMS). Efektywne programowanie Joomla! wymaga zapoznania si z kilkoma paradygmatami programowania obiektowego i stosowania ich. Przykadem takich paradygmatw s wzorce projektowe. Wzorce projektowe to w istocie zestaw modeli konceptowych, wytycznych nowego sposoby programowania zorientowanego na obiekty. Modele, odzwierciedlane w postaci wzorcw projektowych, byy udoskonalane w ramach prac nad wieloma projektami. Waciwe dopasowanie wzorcw projektowych do problemu, nad ktrym pracujesz, moe dostarczy Ci sprawdzonych metod, ktre uatwi zadanie. Adaptacja skutecznych wzorcw projektowych oznacza w praktyce, e atwiej dotrzyma terminw, zarzdzanie systemem jest tasze, rozumienie ewolucji systemu prostsze, a nowi programici szybciej dostosowuj si do projektw. Dziki zastosowaniu wzorcw projektowych znika potrzeba wynajdywania koa przy kadym nowym projekcie. Poczwszy od wczesnych lat dziewidziesitych, pionierskich prac Ericha Gamma, Richarda Heima, Ralpha Johnsona i Johna Vlissidesa (tzw. Bandy Czterech ang. Gang ofFour), napisano wiele obszernych pozycji na ten temat. Oryginalna (i prawdopodobnie najwaniejsza) ksika nosi tytu Design Patterns: Elements of Reusable Object-Oriented Software1 (Addison-Wesley, Boston 1995), opisano w niej wiele podstawowych wzorcw uywanych obecnie cznie z tymi, ktre napotkasz w Joomla!. W tym rozdziale przedstawiono podstawy wzorcw projektowych, a poniewa zostay one zastosowane przez programistw Joomla! w konstruowaniu CMS, take przykadowe uycie w kodzie Joomla!. Rozumiejc zaoenia projektowe, na ktrych opiera si Joomla!, bdziesz w stanie nie tylko tworzy skuteczniejsze rozszerzenia, ale take lepiej poznasz sam platform, jej dziaanie i potencjalne zastosowania.

Wyd. polskie Wzorce projektowe. Elementy oprogramowania Warszawa, 2005, ISBN 83-204-3041-0 przyp. tum.

obiektowego wielokrotnego

uytku, WNT,

202

Joomla!. Profesjonalne tworzenie stron WN 1W

Wzorce projektowe
Wzorce projektowe stanowi wytyczne programowania obiektowego, ktre odzwierciedlaj podstawowe cele w procesie tworzenia aplikacji. Zostay stworzone, aby rozwiza konkretne, powtarzajce si problemy programistyczne w schematyczny sposb (wzorzec). Dokumentacja poszczeglnych wzorcw zawiera w wikszoci przypadkw takie informacje, jak: Nazwa oraz klasyfikacja Nazwa wzorca wraz z ogln klasyfikacj, ktra wskazuje na typ wzorca. Zazwyczaj jest to jeden z trzech podstawowych typw: konstrukcyjny, strukturalny lub czynnociowy. Problem Opis problemu, dla ktrego stworzono dany wzorzec. Rozwizanie Szczegowy opis rozwizania problemu, zawierajcy oglne modele konceptowe, procesy i obiekty. Hipoteza Oglny opis dziaania wzorca, a take jak jego zastosowanie prowadzi do rozwizania. Konkretny przykad problemu. Sugestywny przykad zastosowania wzorca do rozwizania

Zastosowanie Obszary zastosowania danego wzorca, a take jego ograniczenia. Konsekwencje Kompromisy i zalenoci, ktre wymusza zastosowanie wzorca. Wskazwki odnonie do implementacji Oglne sugestie dotyczce stosowania danego wzorca.

Pamitaj, e wzorce projektowe nie s doskonae ani nie s dogmatem, ktry trzeba stosowa za wszelk cen. Wzorce projektowe to zbir wytycznych, a im dokadniej si je stosuje, tym wicej zamierzonych korzyci uzyskuje si. W praktyce trzeba si czsto zmierza z ograniczeniami w adaptacji wzorcw, np. ze wzgldu na wydajno. Wzorce projektowe mog by take przytaczajcym ciarem, jeli projekt jest bardzo may. Nie istnieje prosty sposb na okrelenie wielkoci projektu, dla ktrego implementacja wzorcw ma sens. Mona z grubsza przyj, e jeli nad projektem pracuje lub bdzie pracowa w przyszoci co najmniej trzech programistw, wtedy warto ponie koszty zwizane z implementacj. W przypadku pojedynczych programistw zastosowanie wzorcw nie przekada si na znaczce korzyci, moe jednak suy wyrobieniu dobrych nawykw. Dziki temu, jeli projekt zostanie rozszerzony, jego struktura nie bdzie go ogranicza. Powiniene dokadnie zna zalety zastosowania poszczeglnych wzorcw, zamiast lepo stosowa je w tworzonych programach. Zaoeniem wzorcw projektowych jest uproszczenie i usprawnienie procesu tworzenia aplikacji, a wprowadzanie ich na sil, kosztem skomplikowania projektu, jest zaprzeczeniem tego zaoenia.

Rozdzia 8. Wzorce projektowe a Joomla!

203

frzy gwne kategorie wzorcw


Twrcy wzorcw projektowych podzielili je na trzy kategorie: konstrukcyjne, strukturalne, czynnociowe.

W ramach opisu powyszych kategorii przedstawiono po jednym wzorcu, ktry mona potraktowa jako reprezentacj pozostaych rozwiza programistycznych z danej kategorii.

Mzorce konstrukcyjne
Wzorce klasyfikowane do kategorii konstrukcyjnych zwizane s z mechanizmem tworzenia obiektw. Moe Ci si wydawa, e tworzenie obiektw jest proste, a wikszo zada wykonuje system. Istniej jednak przypadki, kiedy rczne zarzdzanie tworzeniem obiektw moe przekada si na znaczce korzyci, np. usprawnienie uaktualnie lub lepsze zarzdzanie zasobami szczeglnie w wikszych systemach. W wielu aplikacjach tworzenie nowych obiektw sprowadza si do wywoania, specyficznej dla danego jzyka programowania, instrukcji tworzenia obiektu. Istnieje jednak wiele zastosowa, dla ktrych zastosowanie dodatkowej warstwy w mechanizmie tworzenia obiektw przynosi korzyci. Przykadowo technologia DAL (Database Abstraction Layer warstwa abstrakcji bazy danych, np. PEAR DAL, PDO i ADOdb) tworzy warstw poredni midzy aplikacj a rdem danych, dziki czemu programista moe pisa kod, ktry za porednictwem DAL pobiera dane z dowolnego systemu baz danych. Zamiast tworzy obiekt czcy si bezporednio z baz danych, pobierany jest obiekt DAL. Gdy korzysta si z tej metody, moliwe jest zarzdzanie pul pocze (ang. connection pooling), dziki czemu dostpne poczenia niewykorzystywane przez procesy macierzyste mog by przekazane do kolejnych, zmniejszajc konieczno tworzenia nowych. Ten wzorzec konstrukcyjny suy oszczdzaniu zasobw serwera, a take, poniewa DAL obsuguje tworzenie obiektw, moe rozwiza wiele problemw zwizanych z dostpem do konkretnych rde danych. Powyej zosta opisany realny przykad wzorca konstrukcyjnego. Do kategorii wzorcw konstrukcyjnych nale: fabryka abstrakcyjna, metoda fabrykujca, wzorzec budowniczego, leniwa inicjacja, pula obiektw, prototyp i singleton. Definicje tych wzorcw opisuj niektre z procesw wymaganych przez aplikacj. Najczciej stosowanymi w Joomla! wzorcami z tej kategorii s: fabryka abstrakcyjna (przedstawiona niej jako przykad), singleton i wzorzec budowniczego.

204

Joomla!. Profesjonalne tworzenie stron WN 1W

Wzorzec fabryki abstrakcyjnej


Jednym z wzorcw konstrukcyjnych jest fabryka abstrakcyjnaJej istot jest utworzenie klasy fabryki", ktra w odpowiedzi na dania utworzenia obiektw zwraca obiekty danej klasy. Jeli tworzenie obiektw odbywaoby si bezporednio w kadej czci systemu, to zmiana jednej z klas wymagaaby poprawienia i ponownego skompilowania caego systemu, aby mona byo z niej skorzysta. Dobrym przykadem fabryki abstrakcyjnej jest system szyfrowania. Wyobra sobie klas o nazwie EncryptionA (Szyfrowani eA), zawierajc metody, ktre szyfruj dane, zapisywane nastpnie w bazie danych. Aby zrealizowa ten wzorzec, mona by skonstruowa klas 0 nazwie EncryptionObiect, ktra grajc rol fabryki abstrakcyjnej, zwracaaby egzemplarz obiektu EncryptionA. Wyobra sobie, e po pewnym czasie zostaje odkryta wada w metodzie wykorzystywanej w EncryptionA. Z tego powodu zostaje utworzona klasa o nazwie EncryptionB, ktra zawiera bezpieczniejsz metod. Aby wprowadzi zmiany w systemie korzystajcym z wzorca fabryki abstrakcyjnej, wystarczy zmieni klas EncryptionObject, tak aby zwracaa obiekty typu EncryptionB. Jeli obiekt EncryptionA tworzony jest rcznie w kadym miejscu programu, gdzie wymagane jest szyfrowanie, uaktualnienie systemu wymaga wprowadzenia wielu zmian 1 ponownej kompilacji. W przypadku wprowadzenia klasy EncryptionC brak zastosowania wzorca fabryki abstrakcyjnej wymusza powtrzenie caej zoonej operacji.

Wzorzec singleton
Wzorzec konstrukcyjny singleton jest stosowany w Joomla! gwnie w przypadku obiektw czcych z baz danych. W aplikacjach bazodanowych otwieranie i zamykanie pocze wprowadza spory narzut. Aby zmniejszy ubytek wydajnoci, implementowany jest wzorzec singleton, tzn. w programie wykorzystywany jest pojedynczy egzemplarz obiektu, ktry odpowiada za poczenie z baz danych. Zamiast tworzy nowe poczenie przy kadym zapytaniu, komunikacja przebiega za porednictwem istniejcego poczenia. W systemie Joomla! zapytanie z wykorzystaniem obiektu bazy danych wyglda tak:
$db =& JFactory::getDB0(); $query = "SELECT *" . "\ n FROM josjnessages" . "\n WERE messageMonth = ". intval(icurMonth); $db->setQuery($query); SmyRows = $db->loadObjectList();

Operator przypisania referencji znajdujcy si przed wywoaniem metody JFactory: :getDB0() pozwala wykorzysta istniejcy ju obiekt bazy danych.

Wzorzec budowniczego
Wzorzec budowniczego stosowany jest w sytuacji, kiedy niezbdna jest konwersja danych. Budowniczy gra rol rozszerzenia dla klasy bazowej nazywanej dyrektorem. Dyrektor przetwarza plik lub strumie wejciowy i rozdziela go na poszczeglne elementy. Kady element jest kolejno przesyany do budowniczego, ktry tworzy z nich sformatowany wydruk.

Rozdzia 8. Wzorce projektowe a Joomla!

205

Przykadem dyrektora moe by klasa przetwarzajca XML. Przesya ona kady znacznik i element drzewa XML do klasy budowniczego. Dziaanie klasy budowniczego zaley od oczekiwanego formatu wydruku. Jeden budowniczy moe zwrci list elementw oddzielonych przecinkami, inny moe z kolei utworzy kod SQL, ktry zapisuje otrzymane elementy w bazie danych. Wzorzec budowniczego pozwala na tworzenie budowniczych niezalenie od dyrektora. Przykadem wykorzystania wzorca budowniczego w Joomla! jest obsuga parametrw moduu. Wartoci tych parametrw mona zmieni w interfejsie administratora za pomoc opcji Moduy. Kod odpowiedzialny za obsug parametrw poszczeglnych typw (text, textarea, radio button, fi lei i st itd.) znajduje si w katalogu element, ktry mona znale w (zakadajc, e zaczynamy w gwnym katalogu Joomla!): \libraries\joomla\html\parameter\element W folderze jest kilkadziesit plikw PHP odpowiedzialnych za poszczeglne typy parametrw (xvp.filelist.php, imagelist.php, password.php itd.). Realizacja tego zadania w platformie Joomla! wyglda nastpujco: dyrektor pobiera list parametrw moduu, a nastpnie wywouje budowniczych poszczeglnych typw, ktrzy generuj odpowiedni kod HTML wysyany do przegldarki.

tfzopce strukturalne
Wzorce strukturalne zwizane s z organizacj klas w ramach platformy, przy zaoeniu specyficznego dziedziczenia. Celem tych wzorcw jest uproszczenie (na ile to moliwe) powiza midzy elementami (lub klasami) systemu. Wzorce nalece do kategorii strukturalnych to: adapter, agregat, most, kompozyt, pojemnik, dekorator, rozszerzalno lub platforma, fasada, waga pirkowa, porednik, rurki i filtry, dane prywatne klasy oraz wrapper. Najpopularniejsze wzorce wykorzystywane w Joomla! to wzorzec adaptera i wzorzec mostu.

Ifzorzec adaptera
Wzorzec adaptera wykorzystywany jest do poczenia ze sob dwch niekompatybilnych interfejsw. Stosuje si go w kodzie komponentw czcych z takimi technologiami jak np. Simple Machines Forum. Komponent czcy stanowi dwukierunkowy adapter, pozwala na komunikacj dwch niekompatybilnych systemw.

Ifzorzec mostu
Wzorzec mostu pozwala na implementacj warstwy abstrakcji za porednictwem ustandaryzowanego interfejsu. Najczstszym przykadem wzorca mostu jest system wydruku. System wydruku przesya informacje za porednictwem standardowego interfejsu do dowolnego sterownika drukarki. Poniewa interfejs wyjciowy jest abstrakcyjny, uytkownik moe zmieni sterowniki bez koniecznoci zmian w implementacji systemu wydruku.

206

Joomla!. Profesjonalne tworzenie stron WN 1W Innym przykadem tego wzorca jest ustawianie typu wydruku komponentu Joomla!. Moliwe typy zawieraj m.in. HTML (domylnie), raw i text (tekst). Kademu typowi odpowiada klasa, ktra wywietla dane w odpowiednim formacie.

Wzorce czynnociowe
Wzorce czynnociowe zwizane s z komunikacj midzy obiektami. Celem tych wzorcw jest uproszczenie i zwikszenie elastycznoci komunikacji midzy elementami systemu. Wzorce nalece do tej kategorii to acuch odpowiedzialnoci, polecenie, interpretator, iterator, mediator, pamitka, obserwator, stan, strategia, szablon, wizytator i jego warianty. Najczciej wykorzystywane w Joomla! s wzorce obserwatora, acucha odpowiedzialnoci i strategii.

Wzorzec obserwatora
W przypadku wzorca obsei~watora obiekt nazywany obserwowanym jest punktem czcym, ktry suy do powiadamiania innych obiektw o zmianie parametrw. Kady obserwator jest rejestrowany, a zmiana w obiekcie reprezentowanym przez obserwowany powoduje jego automatyczne powiadomienie. Prostym przykadem realizacji tego wzorca jest system automatycznego odtwarzania dla urzdze USB. Wyobra sobie, e zosta utworzony obiekt (obserwowany), ktry monitoruje stan urzdze USB. Jednym z obserwatorw jest program odtwarzajcy DVD. Zmiana stanu urzdze USB (np. wsadzenie pyty DVD do napdu) powoduje poinformowanie wszystkich obserwatorw. Obserwator obsugujcy odtwarzacz DVD sprawdzi, po otrzymaniu powiadomienia, czy zosta wsadzony film, jeli tak, to automatycznie uruchomi odtwarzanie go (o ile zosta skonfigurowany w ten sposb). Wzorzec obserwatora wykorzystywany jest w Joomla! do obsugi dodatkw (wtyczek). Kady dodatek jest rejestrowany w systemie wraz z informacj o zdarzeniach, ktre moe obsuy. W przypadku wystpienia zdarzenia danego typu obserwowany (Joomla!) powiadamia obserwatora (dodatek) o tym fakcie.

Wzorzec acucha odpowiedzialnoci


Dodatki w systemie Joomla! podaj take za wzorcem acucha odpowiedzialnoci. Zaoeniem tego wzorca jest przekazywanie zdarzenia midzy kolejnymi obiektami. Jeli by porwna ten wzorzec ze wzorcem obserwatora, mona by je nazwa obserwatorami. Rnica polega na tym, e obserwatory zostaj powiadomione o zdarzeniu, a dodatkowe czynnoci nie s wymagane zarwno ze strony obserwatora, jak i obserwowanego. acuch odpowiedzialnoci polega na wysyaniu powiadomienia do kolejnych obiektw. Jeeli jeden z nich zwrci informacj, e obsuy dane zdarzenie, proces zostaje zatrzymany, a adne pozostae obiekty nie zostaj powiadomione.

Rozdzia 8. Wzorce projektowe a Joomla!

207

W Joomla! dodatek moe poinformowa system, e obsuy dane zdarzenie. W takiej sytuacji przetwarzanie zostaje przekazane dodatkowi, a system Joomla! nie wykonuje adnych dodatkowych akcji dla tego zdarzenia.

Izorzec strategii
W przypadku wzorca strategii algorytmy poddaje si hermetyzacji (zostaj zapisane w postaci obiektw). W ten sposb mona uaktualnia lub wymienia algorytmy bez wprowadzania zmian w systemie, zmianom podlega wycznie kod algorytmu wewntrz obiektu. Takie rozwizanie jest czsto stosowane podczas implementacji algorytmw uwierzytelniania i szyfrowania. Wzorzec strategii stosowany jest czsto w poczeniu z wzorcem fabryki. W sytuacji zmiany algorytmu wymieniany jest obiekt zwracany przez fabryk.

Wzorce wspbienoci
Chocia nie nale do wzorcw opisanych przez Band Czterech, wzorce wspbienoci coraz bardziej zyskuj na znaczeniu. W krgu specjalistw od baz danych wspbieno stanowi gwny problem. W przypadku typowej, duej organizacji system baz danych musi by w stanie obsuy tysice uytkownikw prbujcych w tym samym czasie uzyska dostp do tych samych danych, a take zmodyfikowa je. Typowy sprzedawca biletw na lotnisku musi sprawdzi, czy moe sprzeda bilet lub zrobi rezerwacj na dany lot w chwili, kiedy zada tego stojcy przed nim klient. System podczas przeszukiwania musi sprawdzi list lotw przylatujcych, obecne rezerwacje, moliwe poczenia (by moe take te nalece do innych linii lotniczych), a nawet przewidzie procent osb, ktre nic zrealizuj rezerwacji. Program musi na podstawie aktualnej wartoci sporej liczby zmiennych sprawdzi dostpno i moliwo rezerwacji lotu. Ten przykad jest odlegy od wikszoci zastosowa Joomla! (ktre nie wymagaj wspbienych operacji na du skal), wic wyobra sobie inn sytuacj: dwch ludzi (redaktor i dziennikarz) wprowadza zmiany w tym samym artykule dokadnie w tym samym momencie. Joomla! jest CMS-em, co w praktyce oznacza, e istnieje spora szansa, e autor artykuu bdzie dodawa kolejne informacje w tym samym momencie, kiedy redaktor poprawia artyku pod ktem poprawnoci. Dlatego warto zapozna si z kilkoma wzorcami wspbienoci, aby zrozumie, w jaki sposb rozwizuj konflikty zwizane ze wspbienoci, co moe mie zastosowanie obecnie i w przyszoci.

Wzorce architekturalne
Wzorce architekturalne nie zostay opisane przez Band Czterech, chocia maj zapewne najwiksze znaczenie dla programistw Joomla!. Wzorce tego typu nakrelaj ogln konstrukcj systemu, opisujc, jak funkcjonuje kompletny system.

208

Joomla!. Profesjonalne tworzenie stron WN 1W Najpopularniejszym wzorcem z tej grupy jest wzorzec klient-serwer. Polega on na tym, e uytkownik uruchamia wikszo skomplikowanych oblicze na wasnym komputerze (jego komputer jest w tej terminologii nazywany klientem), a z serwerem czy si, aby pobra dane z bazy. Wikszo operacji przetwarzania danych przebiega na komputerze klienta, a wikszo danych przechowywanych jest na serwerze zilustrowano to na rysunku 8.1.

Rysunek 8.1.
Implementacja wzorca klientserwer oznacza przetwarzanie zwizane z interfejsem uytkownika po stronie klienta, a koordynacja danych po stronie serwera

We wczesnych latach istnienia sieci Web powszechnie stosowany by wzorzec serwerowy, a wikszo przetwarzania miaa miejsce na serwerze. Nawet za pomoc prostej przegldarki mona byo korzysta z aplikacji internetowych. Wszystkie dane i logika programu znajdoway si na serwerze, przegldarka suya wycznie jako prosty wywietlacz. Nowe technologie tworzce Ajaksa, opisane w rozdziale 7., odpowiadaj rozwizaniu poredniemu midzy wzorcem klient-serwer a wzorcem serwerowym. Chocia aplikacja uruchamiana jest w gwnej czci na serwerze, przegldarka pobiera pewn cz logiki programu (zazwyczaj w postaci kodu JavaScript). Dlatego pewne elementy przetwarzania, np. kontrola poprawnoci danych, pobieranie dodatkowych danych, s wykonywane na komputerze klienta, chocia uruchamiany kod przesyany jest wczeniej z serwera. Cho w przeszoci konstrukcja Joomla! bazowaa na wzorcu serwerowym, to wraz ze wzrostem wykorzystania wzorca klient-serwer Joomla! wchodzi w wiat Web 2.0.

Wzorzec serwerowy
Joomla! jest esencj systemu serwerowego. Klient (przegldarka) uruchamia bardzo niewiele lub zero kodu. Serwer wykonuje wszystkie zapytania, tworzy warstw prezentacji i uruchamia wikszo kodu. Oprcz edycji treci artykuu (np. za pomoc TinyMCE) take cae przetwarzanie odbywa si na serwerze WWW (za pomoc kodu PHP), a sformatowana strona przekazywana jest do przegldarki. Wzorzec serwerowy ma prawdopodobnie najdusz histori zastosowania w informatyce. Jego korzenie sigaj stosowania kart dziurkowanych wsadzano je do centralnego komputera, ktry nastpnie wywietla wyniki. Kolejnym krokiem by system UNIX w latach 70. i 80., gdy wykorzystywano terminale do przesyania procesw na serwer, na ktrym byy wykonywane.

Rozdzia 8. Wzorce projektowe a Joomla!

209

W erze nastpujcej po Uniksach dominujc rol przyj wzorzec klient-serwer, ale ju aplikacje internetowe spowodoway wzrost ponownego zainteresowania wiata komputerw wzorcem serwerowym. W czasie boomu dot-comw w latach 90. wiele firm przewidywao, e wzorzec serwerowy z powrotem przejmie pozycj gwnego modelu tworzenia oprogramowania w wiecie komputerw. Saba wydajno, zrywanie pocze, niewystarczajco szybkie komputery klientw sprawiy, e ta teza staa si nieprawdopodobna. Z powodu rozpowszechnienia szybkich czy i wydajnych urzdze klienckich dominujcym wzorcem w przyszoci bdzie prawdopodobnie wzorzec uruchamiania po stronie klienta.

Wzorzec uruchamiania po stronie klienta


Model uruchamiania po stronie klienta implikuje, i kod pobierany z serwera odpowiada za wikszo interaktywnych funkcji po stronie klienta. Zamiast sprawdza poprawno danych po stronie serwera (np. sprawdza poprawno kodu pocztowego), pobrany kod wykona zapytanie do serwera bez koniecznoci przeadowania caego dokumentu. Jeli wprowadzony kod jest niepoprawny, zostanie wywietlona proba o usunicie bdu. Bazy danych zawierajce kody pocztowe s z reguy due, wic pobieranie ich w caoci jest niepraktyczne. Jeli zagwarantujemy, e sprawdzanie poprawnoci kodu pocztowego nie wymaga ponownego przeadowania strony, aplikacja napisana wedug modelu uruchamiania po stronie klienta bdzie porwnywalnie szybka, jak ta implementujca schemat klient-serwer, co zakada korzystanie z bazy kodw pocztowych zapisanych na dysku lokalnym. Firma Google podja prb przeamania dominacji aplikacji Microsoftu za pomoc pakietu noszcego nazw Google Apps Premier Edition. W przypadku tego rozwizania serwer wykorzystywany jest do przechowywania i rozpowszechniania danych, a moc obliczeniowa komputera pozwala na interakcj przypominajc prac ze zwyczajnym programem.

Wzorzec Model-Widok-Kontroler
Trzy najwaniejsze wzorce projektowe systemu Joomla! (Obserwator, Kompozyt i Strategia) poczono w postaci wzorca Model-Widok-Kontroler (MVC Model-View-Controller). Celem zastosowania tego wzorca jest rozdzielenie aplikacji na trzy obszary, ktre mog by rozwijane (w miar moliwoci) niezalenie od pozostaych, przy czym zmiany wprowadzane w jednej czci maj minimalny wpyw na reszt. Kady obszar odpowiada konkretnej warstwie aplikacji: Model Logika lub waciwy kod aplikacji. Widok Warstwa prezentacji, tekst i grafika. Kontroler Komunikacja z uytkownikiem, przetwarzanie zdarze.

Jeli odniesiesz te trzy pojcia do realiw zwizanych z Joomla!, model odpowiada kodowi PHP i zapytaniom do bazy danych wykonywanym na serwerze WWW. Widok odpowiada

210

Joomla!. Profesjonalne tworzenie stron WN 1W szablonowi, ktry okrela sposb wywietlania zawartoci. Kontroler z kolei odpowiada za system zdarze menu i rozszerzenia, takie jak modu wyszukiwania, ktry przekazuje dane od uytkownika do modelu Joomla! w celu dalszego przetwarzania. Szablony Joomla! stanowi oczywist demonstracj zalet rozdzielenia obszarw aplikacji. Wybr nowego szablonu w interfejsie administratora moe cakowicie zmieni wygld strony WWW. Jeli kod modelu i kod widoku byyby poczone (co w przeszoci byo popularn praktyk), zmiana wygldu wymagaaby duej iloci programowania. Podobnie rozdzielenie interfejsu uytkownika oraz waciwego kodu aplikacji lub kontrolera i modelu umoliwia prac z aplikacj na wiele sposobw. Prostym przykadem jest kontroler, ktry pozwala uruchomi dan funkcj, zdefiniowan w modelu, z rozwijalnego menu lub po naciniciu klawisza. Bardziej zaawansowany przykad to podzia na interfejs wiersza polece i interfejs graficzny (oba dostpne dla MySQL), dziki czemu uytkownicy mog wybra preferowany sposb pracy z systemem. Na stronie internetowej oddzielny kontroler moe odpowiada za wersj tekstow menu, odpowiednie opisy odnonikw i obrazkw, ktre umoliwiaj nawigacj na stronie z du iloci grafiki ludziom z upoledzeniem wzroku. Dziki zapewnieniu uatwie dostpu strona moe by odwiedzana za pomoc przegldarki tekstowej (a take, w konsekwencji, przegldarki gosowej), a kod modelu pobierajcy tre artykuu pozostaje niezmienny. Przez wiele lat czyniono wysiki, by wprowadzi model MVC w systemach operacyjnych w celu umoliwienia zmiany interfejsu i tym samym dostosowania go do preferencji uytkownika. Jednym z niezbdnych kompromisw MVC jest spadek wydajnoci. Rozdzielenie poszczeglnych czci aplikacji oznacza, e kada z nich traktowana jest jak czarna skrzynka, a informacje musz by w caoci przekazywane z jednej warstwy do drugiej, co sprawia, e optymalizacja staje si trudnym zadaniem. Czciowe zastosowanie modelu MVC jest dowodem na to, e poczyniono wiele wysiku, aby uytkownicy mogli zmieni wygld lub temat wykorzystywany przez system operacyjny w zalenoci od preferencji. Brak penej implementacji MVC oznacza, e nadal trudno jest sprawi, aby MacOS wyglda i dziaa jak Windows Vista i vice versa. Podobnie jak systemy operacyjne, Joomla! nadal nie obsuguje w peni tego modelu. Szablony zawieraj spor ilo logiki w postaci kodu PHP (model) po to, aby umoliwi poprawne wywietlanie. Podobnie pewne aspekty moduw (kontrolery) s blisko powizane z warstw prezentacji (widokiem). Jak zaznaczono wczeniej, wzorce projektowe stanowi pewien ideal, do ktrego mona dy, a nie kaftan, ogranicznik wszystko-albo-nic. Chocia implementacja modelu MVC w Joomla! nie jest w peni zgodna z zaoeniami wzorca, platforma zawiera definicj obiektw dla kadej warstwy: JModel Klasa, ktra odpowiada funkcjom modelu w platformie Joomla!. JView Klasa, ktra odpowiada za warstw prezentacji w platformie Joomla!. JControl ler Klasa, ktra odpowiada funkcjom kontrolera w platformie Joomla!.

Rozdzia 8. Wzorce projektowe a Joomla!

211

Wykorzystanie wzorca MVC w tworzeniu komponentw


W pracy z systemem Joomla! programista zaimplementuje wzorzec MVC, najprawdopodobniej piszc komponent. Rozszerzenia tego typu posiadaj wszystkie trzy warstwy wymieniane przez wzorzec, podczas gdy moduom brakuje aspektw kontrolera, a dodatki zawieraj gwnie logik zwizan z modelem. W tym podrozdziale dowiesz si, jak zastosowa wzorzec MVC, aby stworzy prosty komponent Hello MVC. Implementacja tego komponentu bdzie dobrym przykadem zastosowania wzorcw projektowych w praktyce programowania Joomla!. Mam nadziej, e zmotywuje Ci take do poszukiwania i wprowadzania rozwiza opartych na wzorcach projektowych w przyszych aplikacjach. Adaptacja wzorca MVC w komponentach Joomla! wprowadza podzia kodu na trzy oddzielne pliki. Odpowiadaj one poszczeglnym warstwom wzorca MVC: Model Plik hellomvc.php zawiera gwn logik komponentu. Widok Plik view.html.php zawiera logik zwizan z warstw prezentacji. Kontroler Plik controller.php obsuguje interakcje z uytkownikiem.

Rozpocznij od utworzenia folderu \com_hellomvc. Wewntrz tego folderu utwrz trzy podkatalogi, aby uzyska ponisz struktur: \com_hellomvc\controllers \com_hellomvc\models \com hellomvc\views

Mik modelu: hellomvc.php


Przykadowy kod komponentu zawiera odwoanie do rozszerzenia odpowiedzialnego za kontroler, plik zawierajcy kod widoku domylnie adowany jest automatycznie. Wprowad poniszy kod i zapisz go jako hellomvc.php w katalogu \com_hellomvc:
<?php z* *

* %version * @package
*/'

$Id: hellomvc.php 7122 2007-06-21 11:52:292 daw $ hellomvc

/* Zablokuj bezporednie uruchamianie */


defined( '_JEXEC' ) or die( 'Brak dostpu' ):

/* Zaaduj gwny kontroler */


requi re_once (JPATH_COMPONENT.DS.'control 1 er.php'):

/* Jeli ustawiono zmienn controller, zaaduj odpowiedni kontroler. */


if($controller = JRequest::getVar('controller')) { require_once (JPATH_COMPONENT . DS . 'controllers' . DS.Scontroller . '.php'):

212

Joomla!. Profesjonalne tworzenie stron WN 1W


/* Utwrz egzemplarz kontrolera */

iclassname = 'HelloMVCcontroller'.ucfirst(Scontroller); icontroller = new $classname( ); /* Wykonaj danie */

$controller->execute(JRequest::getCmd('task')); icontroller->redi rect(): ?>

Ze wzgldu na podzia MVC kod modelu nie musi zawiera instrukcji zwizanych z warstw prezentacji lub interakcji z uytkownikiem strony. Umoliwia to niezalene udoskonalanie gwnej logiki przez profesjonalnych programistw bez koniecznoci tradycyjnej wsppracy z grafikami i projektantami stron.

Pliki widoku
W przykadowym pliku widoku moesz dostrzec odwoania do czci zwizanych z kontrolerem i interfejsem uytkownika. Wprowad poniszy kod i zapisz go pod nazw view.html.php w folderze: \hellomvc\views\helIomvc:
<?php * @version * @package */ /* Zablokuj defined( /* Zaimportuj jimport( bezporednie $Id: hellomvc.php hellomvc 7122 2007-06-21 11:52:292 dam $

uruchamianie

*/

'_JEXEC' ) or die( 'Brak dostpu' ): klas widoku */

'joomla.application.component.view'):

class HelloMvcViewHelloMvc extends JView { function display($tpl = null) { /* Wywietl powitanie */ echo "<hl>Hello MVC!</hl>";

}
} ?>

O ile to moliwe, w widoku powinny by wykorzystywane elementy warstwy prezentacji wsplne dla wszystkich komponentw Joomla!. S one dostpne w bogatej bibliotece stylw zdefiniowanych w Joomla!, do ktrych mona odwoa si za pomoc atrybutw cl ass i i d. Stosujc dostpne style, prezentacja widoku bdzie automatycznie dopasowywana do reszty strony dla szablonu wybranego przez uytkownika. Metoda d i s p l a y ( ) wywoywana jest automatycznie, w reakcji na danie wywietlenia strony. Zwr uwag, e mona j zmieni bez wpywu na kod modelu lub kontrolera.

Rozdzia 8. Wzorce projektowe a Joomla!

213

ik kontrolera: controller .php


Poniewa w tym przykadzie nie ma adnej interakcji z uytkownikiem, kontroler musi zawiera wycznie metod d i s p l a y O , ktra stworzy prezentacj. Wywoujc metod J C o n t r o l l e r : : d i s p l a y O , wikszo zada zwizanych z warstw prezentacji wykonywana jest automatycznie. Zwr uwag, e w kodzie poniszego kontrolera zastosowano, przez dziedziczenie klasy J C o n t r o l l e r , wzorzec obserwatora opisany wczeniej. Kod naley zapisa w katalogu komponentu pod nazw controller.php:
<?php /**

* @version * @package

$Id: hellomvc.php 7122 2007-06-21 11:52:29Z danr $ hellomvc

/* Zablokuj bezporednie uruchamianie */


definecK '_JEXEC > or die( 'Brak dostpu' ):

/* Zaimportuj klas kontrolera */


jimport('joomla.application.component.controller'):

/* Odziedzicz klas JController */


class HelloMVCcontroller extends JController {

/* Jeli otrzymano danie wywietlenia widoku, * wywoaj metod display rodzica */


function di s p l a y O {

}
} ?>

parent::di splay();

Po dodaniu odpowiedniej pozycji w menu, ktra uruchamia ten komponent, zauwaysz, e warstwa prezentacji nie rni si od tej, ktra jest waciwa dla braku implementacji wzorca MVC. Rnice dostrzeesz, dopiero kiedy bdziesz chcia rozbudowa jego funkcjonalno lub lepiej dopasowa prezentacj do aktualnie wybranego szablonu. Zalety zastosowania wzorca MVC stan si wtedy oczywiste. Zamiast obcia gwny kod rozszerzenia specjalnym, obsugujcym kilka wyjtkw, wystarczy wprowadzi zmiany w warstwie prezentacji, co ograniczy implikacj potencjalnych bdw. Zmiany wprowadzane w podstawowych algorytmach w czci modelu nie bd miay wpywu na wygld. Prezentacja moe zosta dopasowana do wymaga klienta, a programista nie musi si tym przejmowa. Jeszcze wiksz zacht jest fakt, e interfejs moe by dowolnie rozszerzany, bez wpywu na funkcjonowanie aplikacji. Dodanie takich uatwie, jak kalendarz otwierany w dodatkowym oknie lub interaktywne sprawdzanie pisowni, nie bdzie miao wpywu na kluczowe funkcje komponentu.

214

Joomla!. Profesjonalne tworzenie stron WN 1W

Plik deskryptora: hellomvc.xml


Wprowad poniszy kod i zapisz go pod nazw hellomvc.xml w gwnym folderze komponentu:
<?xml version="1.0" encoding="utf-8"?> <1nstal1 type="component" <name>Hel1oMVC</name> <versi on>l.5.0</versi on> <description>Przykad zastosowania wzorca MVC w stylu Heli o World.</description> <files> <fi1ename component"hel1omvc">hel1omvc.php</fi1ename> <fi1ename>i ndex.html</fi1ename> <fi1ename>control1er.php</fi1ename> <fi1ename>vi ews/i ndex.html</fi1ename> <fi1ename>vi ews/hel1omvc/index.html</fi1ename> <fi1ename>vi ews/hel1omvc/vi ew.html.php</fi1ename> </files> <administration> <menu>Hel1oMVC</menu> <files> <fi1ename component"hellomvc">hel1omvc.php</fi1ename> <ti1ename>i ndex.html</fi1ename> <fi1ename>control1er.php</fi1ename> <fi1ename>vi ews/i ndex.html</fi1ename> <fi1ename>vi ews/hel1omvc/i ndex.html </fi 1 ename> <filename>views/hel1omvc/view.html.php</filename> </files> </administration> </install> version="1.5.0">

Teraz stwrz archiwum zawierajce komponent pod nazw com_hellomvc.zip i za pomoc opcji Rozszerzenia/Instalator zainstaluj go w systemie Joomla!. Jeli przypiszesz do niego odnonik w menu, a nastpnie uruchomisz, zostanie wywietlone powitanie, co przedstawiono na rysunku 8.2. Rysunek 8.2.
Komponent wywietli powitanie w gwnej kolumnie strony
Hello MVC! C p r g t ?0|]H oyih Su****^..^ V e c k e p-wi z s r e o i f z l i nii a t z z r e o r : l s w l y n oprosramow^^dostpnym na lcnj GNU GPL r! etonr ieci

Jest to bardzo piymitywny przykad, ktry pokazuje wycznie zarys tego, co mona osign dziki modelowi MVC. Przykadowo foldery controllers i models zostay utworzone, ale nie umieszczono w nich adnych plikw, poniewa komponent skada si z pojedynczego modelu i pojedynczego kontrolera. Tylko jeden plik zosta umieszczony w folderze \views, podczas gdy standardowy komponent zawiera oddzielny plik widoku dla kadego zadania (takiego jak displaylist, edit, newentry itd.). Komponent zosta ograniczony do minimum, aby mg lepiej pozna podstawy tego sposobu programowania.

Rozdzia 8. Wzorce projektowe a Joomla!

215

Jeli przyjrzysz si uwaniej komponentom doczonym do Joomla! (wszystkie wykorzystuj struktur MVC), bdziesz w stanie rozbudowa przykadow implementacj Hello MVC na potrzeby komponentu dowolnego typu.

odsumowanie
Znaczenie wzorcw projektowych wzrasta wraz ze zwikszaniem si stopnia skomplikowania problemw, ktre napotykaj programici. Biblioteka sprawdzonych, dobrze udokumentowanych wzorcw projektowych stwarza moliwo redukcji kosztw i zapobiegania przekroczeniom terminw, tak czstym w przemyle informatycznym. Stosowanie wzorcw projektowych w programowaniu podsystemw, np. rozszerze platformy Joomla!, jest teraz wygodniejsze i korzystniejsze ni kiedykolwiek dotychczas. W tym rozdziale opisano stosowanie wzorcw projektowych, a w szczeglnoci: Przedstawiono konstrukcj platformy obiektowej Joomla!. Opisano projektowanie rozszerze, ktrych implementacja opiera si na skutecznoci wzorcw projektowych. Badanie istniejcego wzorca projektowego pod ktem zastosowania wzorcw projektowych, aby zrozumie dziaanie nowych technologii, takich jak Ajax.

Za pomoc wzorcw projektowych moesz czerpa z najlepszych praktyk programistycznych w pracy nad dowolnymi rozszerzeniami Joomla!. W rozdziale 9. dowiesz si, jak stworzy dodatek, ktry przetwarza artykuy w systemie Joomla!, bdc jednoczenie demonstracj kilku wzorcw.

216

Joomla!. Profesjonalne tworzenie stron WN 1W

9
Ingerencja w fundamenty Joomla!: wtyczki
Czytajc t ksik, miae ju okazj pisa moduy i komponenty, teraz przyszed czas na najbardziej skomplikowane rozszerzenia Joomla!: na wtyczki'. Gwnym zadaniem moduw jest wywietlanie informacji, a komponenty su przede wszystkim do interakcji z uytkownikiem. Rol wtyczki jest ingerencja w podstawy systemu, zmiana funkcjonalnoci Joomla! na najniszym poziomie. W tym rozdziale dowiesz si, jak stworzy prost wtyczk Hello World!, a nastpnie rozbudowa j do poziomu zaawansowanego rozszerzenia ktre przechwytuje tre artykuu, po tym, jak zostanie on pobrany z bazy danych wprowadzajc zmiany, zanim wygenerowana strona zostanie wysana do przegldarki uytkownika. Po napisaniu i przetestowaniu tej pary wtyczek, biorc pod uwag poprzednie bogate dowiadczenia zwizane z programowaniem moduw i komponentw, doczysz do grupy zaawansowanych programistw rozszerze Joomla!. Ostatnim, uzupeniajcym elementem Twojej edukacji bdzie zapoznanie si ze szczegami platformy programistycznej Joomla!. Platforma jest waciwym szkieletem, na podstawie ktrego skonstruowano CMS Joomla!, skada si z klas, ktrych bezporednie wykorzystanie, po uprzednim zrozumieniu, daje niekwestionowane korzyci.

Przegld wtyczek Joomla!


W odrnieniu od moduw, przechowywanych w folderze \modules, i komponentw, zapisywanych w folderze \components, wtyczki grupowane s w podfolderach odpowiadajcych ich kategoriom. Przykadowo wtyczki oferujce funkcje zwizane z wyszukiwaniem przechowywane s w folderze \plugins\search, podczas gdy wtyczki nalece do kategorii content znajduj si w folderze \plugm\content.
1

Ang. plug-ins, w polskiej wersji jzykowej Joomla!, a take w pozostaych czciach tej ksiki nazywane dodatkami p r z y p . tum.

218

Joomla!. Profesjonalne tworzenie stron WN 1W Na ekranie Dodatki, w interfejsie administratora, informacja o kategorii danej wtyczki wywietlana jest w dwch miejscach: jako przedrostek nazwy wtyczki, a take w kolumnie Typ. Jak wida na rysunku 9.1, nazw kadej wtyczki poprzedza informacja o typie. Na przykad wtyczka LDAP zostaje wywietlona na licie jako Authentication LDAP. Typ wtyczki determinuje sposb jej funkcjonowania w systemie.

Rysunek 9.1.
Kategoria danej wtyczki wywietlana jest w kolumnie Typ, a take w postaci przedrostka nazwy

Wtyczka moe nalee do jednej z omiu kategorii: Authentication (Autoryzacja) Dostarczaj dodatkowych metod zwizanych z autoryzacj. Kilka domylnie doczonych wtyczek z tej kategorii to LDAP, OpenID, GMail i Joomla. Content (Zawarto) Umoliwiaj wprowadzanie zmian w treciach artykuw, po tym jak zostan pobrane z bazy danych i jeszcze nie zostan przesane do uytkownika. Umoliwia to zarwno modyfikowanie (np. ukrywanie adresw e-mailowych, aby zapobiec spamowi), jak i dodawanie informacji (np. oceny danej pozycji, komentarzy uytkownikw, opcji nawigacyjnych). Editor (Edytor) Do tej kategorii nale takie edytory, jak TinyMCE czy XStandard Lite. Editor button (Przyciski edytora) Maj za zadanie rozszerzanie funkcjonalnoci dostpnych edytorw poprzez dodawanie przyciskw, ktre su np. do wstawiania obrazkw lub podziau strony. We wczeniejszych wersjach Joomla! wtyczki z tej kategorii nosiy nazw editor-xtd. Search {Wyszukiwanie) Dodaj moliwo wyszukiwania treci danego typu np. artykuw, sekcji, kontaktw, odnonikw, kanaw RSS lub kategorii. System Wtyczki ingerujce w podstawowe funkcje systemu Joomla!, umoliwiaj kontrol i modyfikacj podstawowych zada, takich jak publikowanie, ukrywanie, a nawet instalacja.

Rozdzia 9. Ingerencia w fundamenty Joomla!: wtyczki User (Uytkownik) Su do synchronizacji bazy uytkownikw z innymi systemami, takimi jak Gallery2, Simple Machines Forum itd. XML-RPC Odbieraj zdarzenia przesyane protokoem XML RPC (Remote Procedure Cali zdalne wywoywanie procedur).

219

Utworzenie wtyczki wymaga napisania klasy, ktra dziedziczy po klasie podstawowej JP1 ugi n. W kodzie tej klasy definiuje si metody, ktrych nazwy odpowiadaj zdarzeniom Joomla!. Kod tych metod uruchamiany jest w momencie wystpienia danego zdarzenia. Przykadowo jeli zdefiniowae w klasie metod onAfterlnitialiseO, bdzie ona uruchomiana za kadym razem, kiedy zostanie odebrane danie wygenerowania strony, zanim system Joomla! rozpocznie jakiekolwiek przetwarzanie. Pogrupowanie wtyczek w wyej wymienione kategorie nie suy wycznie do organizacji. Definicja typu danej wtyczki implikuje zbir przechwytywanych zdarze. To ograniczenie nie dotyczy niektrych zdarze (szczeglnie z kategorii System). Dlatego pogrupowano je w cztery oglne kategorie: Content (Zawarto); Editor (Edytor); System and Search (System i wyszukiwanie); User (Uytkownik).

Zdarzenia nalece do powyszych kategorii mog by wykorzystywane wycznie we wtyczce odpowiedniego typu, chocia wikszo zdarze systemowych moe by przechwytywana przez wtyczki dowolnego typu.

[darzenia typu Content


Wtyczki typu Content maj w zaoeniu wprowadza zmiany w treci artykuw, zanim strona zostanie wysana do przegldarki. Przykadowo rozszerzenie Email Cloaking wyszukuje adresy e-mailowe, ktre zostayby wywietlone w treci strony (lub w postaci odnonika), a nastpnie wstawia w ich miejsce wersj odporn na spam otrzyman przez wywoanie procedury JHTMLEmail: :cloak(). Wtyczka, ktr napiszesz w dalszej czci tego rozdziau, w podobny sposb przeszukuje tre artykuu, z tym, e wstawia sowa i zwroty, w miejsce skrtw, inicjaw i akronimw, ktre im odpowiadaj. W przypadku wtyczek typu Content moliwe jest przechwytywanie poniszych szeciu zdarze: onBeforeDi spl ay Uruchamiane przed wywietleniem treci. Platforma zostaa zaadowana, a strona zainicjalizowana. onAfterDi spl ay Nastpuje po wywietleniu treci. onPrepareContent Aktywowane po wywietleniu treci przez system Joomla!, ale przed przesaniem jej do przegldarki. Jest to najczciej wykorzystywane zdarzenie, jeli wtyczki wprowadzaj zmiany w treci artykuw. Referencja do aktualnej zawartoci artykuu przesyana jest w postaci parametru a r t i c l e w taki sposb, e wprowadzone zmiany bd bezporednio odzwierciedlane

220

Joomla!. Profesjonalne tworzenie stron WN 1W w treci przesyanej przegldarce uytkownika. Parametr params zawiera tablic parametrw zwizanych z widokiem, a parametr limitstart zawiera numer strony", ktremu odpowiada przesyana zawarto. onAfterDisplayTitle Nastpuje po wygenerowaniu tytuu, ale przed wywietleniem zawartoci. Funkcje przypisane do tego zdarzenia powinny zwraca tablic acuchw znakowych, kady z nich zostanie doczony do treci przed artykuem. To zdarzenie przydaje si szczeglnie wtedy, kiedy chcesz stworzy rozszerzenie wywietlajce obecn ocen artykuu przez uytkownikw. onBeforeDi spl ayContent Aktywowane bezporednio przed wywietleniem zawartoci. Funkcje przypisane do tego zdarzenia powinny zwrci tablic acuchw znakowych, kady z nich zostanie doczony do wynikowego acucha. Zdarzenie tego typu jest szczeglnie przydatne, jeli chcesz doda wasne definicje stylw dla wywietlanych treci. onAfterDi spl ayContent Nastpuje po wywietleniu treci artykuu. Funkcje przypisane do tego zdarzenia powinny zwrci tablic acuchw znakowych, kady z nich zostanie wstawiony na stronie, tu pod treci artykuu. To zdarzenie przydaje si szczeglnie, jeli zamierzasz doda system komentarzy, ktry wywietli komentarze pod danym artykuem.

Dziedziczc klas podstawow JPlugin i okrelajc typ wtyczki jako Content, moesz przechwytywa powysze zdarzenia i wprowadza zmiany w treci artykuw.

Zdarzenia typu Editor


Zdarzenia typu Editor maj zastosowanie gwnie dla wtyczek posiadajcych funkcje edytorw (takich jak TinyMCE lub XStandard Lite). Do zdarze typu Editor nale: onlnit Uruchamiane w momencie inicjalizacji wtyczki. adne parametry nie s przekazywane tej funkcji. onDi spl ay Nastpuje w momencie, kiedy edytor powinien zosta wywietlony. Przekazywany jest pojedynczy argument zawierajcy nazw edytora. onGetContent Uruchamiane w momencie otrzymania treci. Przekazywany jest pojedynczy argument zawierajcy nazw edytora. onSetContent Nastpuje tu przed wprowadzeniem nowej treci. Przekazywany jest pojedynczy argument zawierajcy nazw edytora. onSave Aktywowane tu przed zapisaniem treci. onCustomEditorButton Dziki temu zdarzeniu mona skorzysta z dodatkowych przyciskw edytora, takich jak Obraz, Podzia strony, Czytaj wicej, doczonych do standardowej instalacji Joomla!. onGetlnsertMethod Wykorzystywane przez wtyczk do wstawienia funkcji JavaScriptu JInsertEditorText, ktra umieszcza deklaracj skryptu dla dokumentu wynikowego.

Rozdzia 9. Ingerencia w fundamenty Joomla!: wtyczki

221

Zdarzenia typu System i Search


Zdarzenia typu System odnosz si do sytuacji zwizanych z funkcjonowaniem caego systemu. Definicje zdarze tego typu mona umieszcza we wtyczkach dowolnego typu. Poniej umieszczono siedem zdarze nalecych do tej kategorii: onAfterlniti al ise Uruchamiane jest w momencie wykonania dania wygenerowania strony, po zaadowaniu platformy i uruchomieniu funkcji, initial i ze, ale przed wygenerowaniem jakiejkolwiek czci strony. Ta funkcja jest szczeglnie przydatna, jeli chce si przechwyci dane zadanie (typ zdania mona odczyta bezporednio z acucha dania) i wykona wstpne przetwarzanie. Przykadowo wtyczka mogaby przechwytywa zadanie save (zapisz) i robi kopi zapasow istniejcego artykuu, zanim tre nowego zostanie zapisana w bazie danych. onAfterRoute Uruchamiane jest po otrzymaniu dania wygenerowania strony, kiedy platforma jest ju zaadowana i zainicjalizowana, acuch dania zosta przetworzony, a odpowiednie parametry (w tym dany komponent) zapisywane s w obiekcie JRequest. onAfterDi spatch Uruchamiane jest po zaadowaniu platformy, wywoaniu funkcji startujcych i przekazania treci do bufora. W momencie uruchamiania kodu odpowiedzialnego za to zdarzenie zosta ju przypisany odpowiedni komponent. onAfterRender Uruchamiane jest w chwili otrzymania dania wygenerowania strony, kiedy wynik gotowy do przesania do przegldarki zapisany jest w obiekcie
JResponse.

onSearch Uruchamiane jest w odpowiedzi na danie wyszukiwania. onSearchAreas Uruchamiane jest w odpowiedzi na danie wyszukiwania, z dodatkowym okreleniem, jakie obszary" (ang. areas) maj by przeszukiwane. onGetWebServi ces Umoliwia implementacj introspekcji wtyczek. Introspekcja jest technik programistyczn polegajc na wysaniu zapytania do obiektu celem pobrania informacji o jego API i funkcjach. W tym przypadku, jeli wtyczka zawiera metod odpowiadajc temu zdarzeniu, moe zwrci list zaimplementowanych funkcji wraz z opisem wtyczki w formacie doc-string, a take sygnatur zawierajc typy parametrw. Zdarzenie stosowane gwnie we wtyczkach XML-RPC.

Zdarzenia typu User


Istniej dwa podzbiory zdarze typu User: zdarzenia zwizane z uwierzytelnianiem i zdarzenia zwizane z administracj kontami uytkownikw. Uwierzytelnianie odbywa si w czci frontowej systemu, a zdarzenia administracyjne powizane s z modyfikacj kont uytkownikw z poziomu interfejsu administratora. Poniej znajduje si lista zdarze powizanych z uwierzytelnianiem, zawiera m.in. zdarzenia logowania i wylogowywania z systemu:

222

Joomla!. Profesjonalne tworzenie stron WN 1W onLogi nllser Wykonywane po sprawdzeniu nazwy uytkownika i hasa wzgldem tabeli uytkownikw Joomla!. Jeli funkcja przypisana do tego zdarzenia zwrci warto False, autoryzacja uytkownika w systemie Joomla! zostanie zakoczona niepowodzeniem. onLogoutUser Aktywowane przy prbie wylogowania z systemu. Jeli funkcja przypisana do tego zdarzenia zwrci warto Fal se, wylogowywanie nie powiedzie si. onAuthenti cate Uruchamiane po poprawnej autoryzacji, zatwierdzonej przez wszystkie wtyczki, dane logowania przekazywane s w postaci obiektu JAuthenticateResponse, ktry zawiera rwnie wyniki zwrcone przez wtyczki. onAuthenti cateFai 1 ture Uruchamiane za kadym razem, kiedy danie autoryzacji zostao odrzucone przez kod jednej z wtyczek.

Nastpujce zdarzenia wystpuj w odpowiedzi na akcje zwizane z zarzdzaniem kontami uytkownikw z poziomu interfejsu administratora: onBeforeStoreUser Uruchamiane zanim zmiany konta uytkownika zostan zapisane w tabeli jos_users. onAfterStoretlser Aktywowane po zapisaniu zmian w tabeli jos_users. onBeforeDel etellser Uruchamiane zanim rekord konta uytkownika zostanie usunity z tabeli jos_users. onAfterDel eteUser Uruchamiane tu po usuniciu rekordu konta uytkownika z tabeli jos_users.

Wtyczka Hello World!


Ciko zrozumie koncepcj zdarze, dopki nie zobaczy si ich obsugi w prawdziwej wtyczce. Biorc to pod uwag, stworzymy prost wtyczk Hello World!. Rozszerzenie bdzie przechwytywa zdarzenie onAfterDisplayTitle. Funkcje obsugujce to zdarzenie wywoywane s po wywietleniu tytuu i mog wstawia dodatkowe informacje, zanim pojawi si tre artykuu. Przykadowe rozszerzenie Hello World! bdzie wstawia pod tytuem kadego artykuu powitanie, co zilustrowano na rysunku 9.2. W odpowiedzi na zdarzenie onAfterDisplayTitle funkcja zwraca tekst w formacie HTML, ktry wywietlany jest bezporednio pod tytuem2. W przypadku tej wtyczki jest to po prostu acuch znakw zawierajcy powitanie.

Dla tego konkretnego zdarzenia zwracany tekst zostanie wywietlony wycznie, jeli Tekst danego artykuu zosta wyczony przyp. tum.

wprowadzajcy

Rozdzia 9. Ingerencia w fundamenty Joomla!: wtyczki ysunek 9.2.


Vtyczka Hello Vorld! wstawia owitanie midzy /tulem a treci rtykuu
Hie News > Welt Links

223

Joomla! Overview
Hello W o i Id!

* N<;ws feeds

If you're new to Web publishing systems, you'll find that Joomla! delivers sophistii robust enterprise-level Web site, empowered by endless extensibility'for your foes system of choice for small business or home users who want a professional loo conten t right So what's the catch? How much does this system cost? Well, there's good news ... and more good news! Joomla! 1.5 is free, it is release Public License v 2.0. Had you invested in a mainstream, commercial alternative add new functionality would probably mean taking out a second mortgage each ti

Podobnie jak przy tworzeniu moduw i komponentw, musisz stworzy plik deskryptora w formacie XML, ktry zawiera informacje dla instalatora dotyczce szczegw wtyczki, a take plik zawierajcy uruchamiany kod PHP.

worzenie pliku deskryptora


Tworzenie wtyczki warto rozpocz od stworzenia pliku deskryptora, korzystajc z edytora tekstowego lub za pomoc IDE. Wprowad poniszy kod i zapisz go pod nazw plg
^HelloWorld.xml:
<?xml version="1.0" encoding="utf-8"?> <instal 1 version="l.5" type="plugin" group="content"> <name>Content - Hello World</name> <author>Dan Rahmel</author> <creationDate>July 2007</creationDate> <authorEmail>admin@joomlajumpstart.com</authorEmai1> <authorllrl >www. jooml a jumpstart. com</authorUrl > <version>1.0</version> <description>Wstawia powitanie "Hello World!" pod tytuem kadego artykuu.</description> <files> <fi1ename plugin="plgHel1oWorld">plgHel1oWorld.php</f 11 ename> </files> </install>

Plik XML przypomina w sporym stopniu dotychczasowe deskryptory, tworzone dla pozostaych rozszerze. Zawiera on jednak grup parametrw specyficznych dla definicji wtyczki. Zwr uwag, e znacznik <install> zawiera dwa atrybuty, ktre wskazuj, e dane rozszerzenie jest wtyczk: type i group. Warto atrybutu type nie wymaga wyjanie. Atrybut group wskazuje na kategori wtyczki, jedn z wyszczeglnionych wczeniej (content, user, search, authentication itd.). Pliki nalece do wtyczki zostan zapisane w folderze odpowiadajcym danej grupie. Kolejnym elementem, na ktry musisz zwrci szczegln uwag, jest atrybut plugin znacznika <fi lename>. Wprowadzona nazwa powinna dokadnie odpowiada nazwie pliku z kodem PHP bez rozszerzenia. W przypadku wystpienia zdarzenia adowany jest plik PHP odpowiadajcy nazw wartoci tego atrybutu, ktra (w momencie instalacji) zapisywana jest w polu element, tabeli jos_plugins. Jeli wyszukiwanie pliku zakoczy si niepowodzeniem, kod odpowiedzialny za obsug zdarzenia nie zostanie uruchomiony.

224

Joomla!. Profesjonalne tworzenie stron WN 1W

Tworzenie kodu wtyczki

Po zapisaniu pliku deskryptora utwrz kolejny plik i zapisz go pod nazw pl gHel 1 oWorl d. ph Umie w nim nastpujcy kod:
<?php

* @version * @package
*/

$ld: plgHelloWorld.php 6138 2007-07-02 03:44:182 daw $ plgHelloWorld

// Zablokuj bezporednie uruchamianie


defined( '_JEXEC' ) or die( 'Brak dostpu' ):

class plgContentHelloWorld extends JPlugin {

// Konstruktor kompatybilny z PHP4


function plgContentHelloWorld( & $subject ) { parent:: construct( Ssubject ):

// Nazwa funkcji odpowiada nazwie zdarzenia


function onAfterDisplayTitle(& iarticle. & iparams, $1imitstart=0) { $myOutput = "<h4>Hello World!</h4>": return SmyOutput:

// Zainicjuj wtyczk, podajc jako parametr egzemplarz dyspozytora zdarze


$myPlugin =& new plgContentHelloWorld(JDispatcher::getlnstance() ?> ):

Analizujc powyszy kod, powiniene zauway, e nowa klasa o nazwie plgContentHell o EWorld dziedziczy klas abstrakcyjn JPlugin. Pierwsza zdefiniowana metoda nosi nazw pokrywajc si z nazw klasy, i z tego powodu gra rol konstruktora. W tym przypadku, dla zachowania kompatybilnoci z PHP4, uruchamia ona jedynie konstruktor klasy rodzica.

Poniej znajduje si definicja funkcji obsugujcej zdarzenie onAfterDisplayTitle. Wystpienie tego zdarzenia skutkuje przekazaniem trzech parametrw umoliwiajcych odczytanie (ale nie zmian) zawartoci artykuu, dla ktrego zostao wygenerowane zdarzenie. Poniewa tworzymy prosty program wywietlajcy powitanie, moesz spokojnie zignorowa te parametry. Kod funkcji zawiera definicj acucha znakw "Hel lo World!", ktry nastpnie zwracany jest do funkcji wywoujcej za porednictwem instrukcji return. To by byo na tyle. Utwrz archiwum zawierajce plik XML i PHP (moe by w formacie ZIP lub Tarball). Za pomoc opcji Rozszerzenia/Instalator zainstaluj plik w systemie. Domylnie nowe wtyczki nie s aktywne. Przejd do ekranu Dodatki, aby opublikowa dane rozszerzenie (znajdziesz je pod nazw Content Hello World!), co spowoduje jego aktywacj. Jeli otworzysz teraz stron Joomla!, zauwaysz, e midzy tytuem a treci kadego artykuu zostao wstawione powitanie. Nie byo to wcale trudne, prawda? Kolejna wtyczka bdzie odrobin bardziej skomplikowana, tak jak jej zadanie. Przejd teraz do opcji Dodatki i wycz wtyczk Hello World!, aby nie zamiecaa i nie spowalniaa systemu.

Rozdzia 9. Ingerencia w fundamenty Joomla!: wtyczki

225

Jeli aktywowae wtyczk, a mimo to nie pojawio si adne powitanie przed treci artykuw, istniej dwa prawdopodobne scenariusze. Moliwe, e przegldasz skrty artykuw, ktre znajduj si na stronie gwnej, ale dla ktrych nie jest uruchamiane zdarzenie onAfterDisplayTi tle. Kliknij odnonik Czytaj wicej... lub tytu artykuu, aby przej do danego artykuu, a powitanie powinno zosta wywietlone we waciwym miejscu. Druga ewentualno to wyczona opcja Tekst wprowadzajcy dla jednego lub wszystkich artykuw. Przejd do opcji Artykuy w interfejsie administratora, a nastpnie kliknij przycisk Preferencje. Przestaw opcj Tekst wprowadzajcy na Poka. Moesz take zmieni ustawienia dla danego artykuu, znajduje si ono w grupie Parametry: rozszerzone.

Wtyczka Automatyczne Skrty


Najwicej wtyczek spord wszystkich tworzonych zalicza si do grupy tych, ktre zmieniaj tre istniejcych artykuw, zanim zostan one przesane do przegldarki uytkownika. Wtyczka moe cenzurowa tekst, ukrywa adresy e-mailowe, aby zapobiec spamowi, dodawa reklamy do sw kluczowych w stylu Google AdSense, przycina tre artykuw dla niezarejestrowanych uytkownikw i tak dalej. Dlatego najwicej poytku przyniesie Ci stworzenie rozszerzenia, ktre zmienia tre artykuu. Wtyczka Automatyczne Skrty, ktr stworzysz, bdzie przeszukiwa tekst pod ktem fraz dajcych si zapisa w postaci skrtw. Przykadowo dodajcy mgby wstawi w treci artykuu skrt NBP", ktry odpowiada prawdopodobnie nazwie Narodowy Bank Polski. Wtyczka przechwyci tre artykuu pobran z bazy danych i rozwinie skrty, zanim artyku zostanie przesany do przegldarki. Poniewa adne zmiany nie s zapisywane w bazie, waciwy artyku pozostaje nietknity. Chocia nasza wtyczka nie suy do rozwizania powanego problemu, demonstruje wszystkie kluczowe punkty implementacji, a take uatwia zrozumienie systemu wtyczek Joomla! oraz stanowi doskona podstaw do tworzenia podobnych rozszerze. Tak naprawd wikszo popularnych wtyczek typu Content (cenzura, ukrywanie adresw e-mailowych itd.) daje si odtworzy przez wprowadzenie wycznie kilku zmian w kodzie rozszerzenia Automatyczne Skrty. Zanim stworzysz rozszerzanie, napisz nowy artyku za pomoc opcji Artykuy. Przykadowy artyku wykorzystany na potrzeby tej wtyczki moe brzmie tak: Analizujc ww. dane, warto zwrci uwag na poziom wynagrodzenia, tj. przychd netto dla danych zawodw, np. nauczyciel staysta zarabia 800 z netto. Problem niskich plac dot. gwnie zawodw finansowanych z budetu, a dotychczasowy projekt nie przewiduje poprawy tego stanu rzeczy. Powyszy fragment zawiera nie tylko kilka skrtw, ale take demonstruje zdolno odrniania skrtw pasujce litery nie s zamieniane na pen form, jeli stanowi one fragment jakiego sowa. Przykadowo sowo dotychczasowy zawiera znaki odpowiadajce skrtowi dot.". Jeli wtyczka opieraaby si na prostej operacji znajd i zmie, fragmenty sw mogyby zosta potraktowane jako skrty, a ich rozwinicie znieksztacioby tekst. Kod wtyczki powinien zawiera instrukcje, ktre zapobiegn takim sytuacjom.

226

Joomla!. Profesjonalne tworzenie stron WN 1W Po wywietleniu artykuu w niezmienionej formie na stronie gwnej odpowiada on dokadnie wprowadzonemu tekstowi (zobacz rysunek 9.3).

Rysunek 9.3.
Poniewa wtyczka Automatyczne Skrty nie zostaa jeszcze zainstalowana i aktywowana, tekst artykuu zawiera wiele skrtw

The News Weit Links News Fee*ls

Artykut prbny

Analizujc ww. dane warto zwrci uwag na poziom wynagrodzenia, ii zarabia 800 z netto. Problem niskich pac dot. gownie zawodw tinans poprawy tego stanu rzeczy.

Po utworzeniu i aktywacji wtyczki skrty zostan zastpione odpowiednimi wyraeniami, a lektura tekstu bdzie prostsza (zobacz rysunek 9.4). Rysunek 9.4.
Po uruchomieniu wtyczki skrty zostan rozwinite, a peny tekst przesany do przegldarki
lite News Weh Links

Artyku prbny

News Feetls
Analizujc wyej y^miemone dane warto zwrci uwag na poziom wynagrodzenia, to zawodw, na przykad nauczyciel staysta zarabia 800 z netto Problem niskich pac dt finansowanych z budetu, a dotychczasowy projekt nie przewiduje poprawy tego stanu

IM.C i . ""MMMIIffliWBailw r i I Extension

Aby zrealizowa zaoenia tego rozszerzenia, konieczne bdzie zdefiniowanie metod obsugujcych zdarzenia typu Content. Sposb wprowadzania zmian w treci artykuw bdzie odpowiada innym zdarzeniom tego typu.

Kod deskryptora XML


Rozpocznij od utworzenia pliku deskryptora. Wprowad poniszy kod do edytora tekstu lub IDE i zapisz go pod nazw replaceabbr.xml:
<?xml version="1.0" <install encoding="utf-8"?> group="content"> Skrty</name> version="1.5" type="plugin" Rahmel</author>

<name>Content - Automatyczne <author>Dan

<creati onDate>July 2007</creati onDate> <authorEmail>admin@joomlajumpstart.com</authorEmail> <authorllrl>www. joomla jumpstart. com</authorllrl> <version>1.0</version> <description>Zastpuje skrty odpowiadajcymi <files> <fi 1 ename plugi n="rep!aceabbr">replaceabbr.php</fi 1 ename> </files> <params> <param name="replace_limit" type="text" size="5" default="50" zmian" description="Maksymalna </params> </instal l> liczba zmian skrtw jednego 1abel="Limit rodzaju"/> wyraeniami,</description>

Znacznikowi <name> mona przypisa dowoln warto, jednak konwencja Joomla! przyjmuje nazewnictwo z przedrostkiem wskazujcym typ wtyczki (w tym przypadku Content -"). Rozszerzenie bdzie dziaa nawet, jeli zignorujesz t konwencj, jednak zastosowanie si do niej uatwia okrelenie typu wtyczki wywietlanej na licie w interfejsie administratora.

Rozdzia 9. Ingerencia w fundamenty Joomla!: wtyczki

227

Nazwa wtyczki systemu Joomla! przekazywana jest w postaci atrybutu plugin znacznika <filename>. W przypadku tej wtyczki atrybut plugin ma jeszcze wiksze znaczenie ni dla rozszerzenia Hello World!. Odpowiednie ustawienie jest niezbdne do pniejszego pobrania parametrw. Ta wtyczka ma jeden parametr repl ace_l imit (limit zmian). Jego uyteczno w przypadku wtyczki Automatyczne Skrty jest wtpliwa, ale jednak to penoprawna demonstracja stosowania parametrw.

(od wtyczki
Po zapisaniu pliku deskryptora na dysku twardym utwrz plik o nazwie w tym samym katalogu, a nastpnie wprowad poniszy kod:
<?php * @version * @package */ // Zablokuj definedi $ld: replaceabbr.php ReplaceAbbr 6138 2007-07-02 03:44:18Z danr $

replaceabbr.php

bezporednie uruchamianie '_JEXEC' ) or die( 'Brak dostpu' ):

class plgContentReplaceabbr extends JPlugin { // Konstruktor kompatybilny z PHP4 function plgContentReplaceabbr( & isubject ) { parent:: constructi isubject );

// Nazwa funkcji odpowiada

nazwie

zdarzenia

function onPrepareContentt&iarticle. &$params, $1imitstart=0) { //Pobierz warto parametrw, na wypadek gdyby byy potrzebne pniej iplugin =& JPluginHelper::getPlugin('content'. 'replaceabbr'): ipluginParams - new JParameter( $plugin->params ): $num =1; if (!$pluginParams->get('replace_limit', 1)) { $num = $pluginParams->get('replacejimit'. 1):

if ( !JString::strpos( $article->text. $article->text = str_replace( '', $article->text ): return true;

'{replaceabbr=off}'

) === false ) {

'{replaceabbr=off}'.

} }

$article->text =$this->replaceAbbrStr($article->text, return true:

$num);

function replaceAbbrStr($myStr. $num) { // Utwrz tablic zawierajc skrty $abbr=array("dot."."dr", "mgr", "np.", "wg", "ww.", "tj.". "tzn."

228

Joomla!. Profesjonalne tworzenie stron WN 1W


// Utwrz tablic zawierajc rozwinicia skrtw // Umieszczane s po dwa rozwinicia w jednej linii, // co uatwia dopasowanie do powyszej listy.
$actual=array("dotyczy". "doktor". "magister", "na przykad", "wedug", "wyej wymienione", "to jest", "to znaczy"

); // Dodaj znaki tworzce wyraenie regularne ze skrtw, // abv dopasowywane byty wycznie poprawne skrty, //dodatkowo ignoruj wielko liter
for($i=0:$i < sizeof(iabbr);$i++) { $abbr[$i] = " A \ b " . str_replace('. 1 ,

",

$abbr[$i]) . "\\b\.?/i":

// Zastji skrty za pomoc wyrae regularnych


$myStr = preg_replace ( $abbr, Sactual. $myStr. $num):

// Zwr zmieniony cig

return SmyStr;

imyPlugin =& new plgContentReplaceabbr(JDispatcher::getlnstance()

);

Kod powyszego rozszerzenia jest odrobin bardziej skomplikowany ni wczeniejsza wtyczka Hello World!. Rozpoczyna si od definicji klasy dziedziczcej JPlugin, pod nazw plgContent
"--Replaceabbr.

Wtyczka zawiera metod obsugujc zdarzenie onPrepareContent. To zdarzenie uruchamiane jest w momencie, kiedy tre artykuu jest gotowa do wysania do przegldarki. Jak moge zauway, funkcja ma trzy parametry: iarticle, iparams i $1 imitstart. Pierwsze dwa przekazywane s za pomoc referencji, co umoliwia modyfikacj wartoci tych zmiennych z czego zreszt skorzystamy. Parametr $1 imitstart zawiera numer aktualnej strony", co nie ma znaczenia dla tego przykadu. Wtyczka Automatyczne Skrty ma parametr (o nazwie replace_l i mit), ktrego warto musi zosta pobrana. Referencj wtyczki otrzymuje si za pomoc funkcji JPluginHelper:: ^getPlugin. Nastpnie odczytywane s wartoci parametrw, a stan parametru replacej i mit zapisywany jest w postaci zmiennej $num. Przed rozpoczciem przetwarzania nastpuje sprawdzenie, czy w treci artykuu znajduje si znacznik wskazujcy, e dany artyku powinien zosta zignorowany przez wtyczk. Instrukcj {replaceabbr=off} naley wpisa w tre artykuu. Nie jest to ani dyrektywa patTemplate, ani adna formalna deklaracja j e s t to znacznik wymylony na potrzeby tego rozszerzenia, aby umoliwi wyczanie przetwarzania danych artykuw bez dezaktywowania wtyczki. W przypadku wystpienia znacznika jest on usuwany z treci artykuu, a dalsze zmiany zostaj zblokowane za pomoc instrukcji return. Jeli odpowiedni znacznik nie zostanie zlokalizowany, warto $article~>text (przechowuje aktualny artyku) przekazywana jest funkcji replaceAbbrStrO w celu rozwinicia skrtw. Nastpie nadpisywana jest oryginalna tre zmiennej $article->text danymi zwrconymi przez funkcj. Instrukcja powrotu koczy funkcj i przekazuje sterowanie systemowi.

Rozdzia 9. Ingerencia w fundamenty Joomla!: wtyczki

229

Funkcja repl aceAbbrStr() jest zwyczajn funkcj PHP, ktra wykorzystuje dwie tablice, w jednej umieszczane s wyraenia regularne, a nastpnie uruchamia preg_repl ace(), aby zamieni pasujce wystpienia na odpowiedniki, ktre zamieszczono w drugiej tablicy. Pierwszy argument funkcji preg_replace() zawiera list skrtw, ktre powinny zosta rozwinite. Deklaracja tablicy zawiera po dwa wpisy w jednej linii, co uatwia programicie odczytywanie i czenie z odpowiednimi rozwiniciami zapisanymi w drugiej tablicy. Zanim zostanie wywoana funkcja preg replaceO, niezbdna jest zmiana formatu skrtw, aby tworzyy one wyraenia regularne. Wyraenie regularne rozpoczyna si znakiem ukonika (/), ktry jest rodzajem ogranicznika dla danego wyraenia. Cig \\b odpowiada komendzie \b, zapis z dwoma lewymi ukonikami jest konieczny, aby nie zosta potraktowany jako sekwencja specjalna. Wstawienie \b na pocztku i na kocu danego skrtu oznacza, e musi on stanowi samodzielne sowo" (tzn. by z jednej i z drugiej strony ograniczony znakiem interpunkcyjnym lub znakami odstpu). Poprzez wywoanie funkcji str_repl ace() usuwane s kropki (ktre s elementem wyrae regularnych). Wyraenie koczone jest kolejnym ukonikiem (/), po nim wystpuje dyrektywa i, ktra informuje kod przetwarzajcy wyraenia regularne, eby ignorowa wielko liter przy wyszukiwaniu. Jeli nie zapoznae sijeszcze z przetwarzaniem tekstu za pomoc wyrae regularnych, powiniene uzupeni braki w edukacji. Wyraenia regularnie to potne narzdzie przetwarzania tekstu, a ich uycie moe oszczdzi ogromnie duo czasu i energii. Doskonae przewodniki znajdziesz na stronie www.regular-expressions.info/php.html. Funkcja preg_replace() wywoywana jest z czterema parametrami, pierwszy zawiera tablic skrtw ($abbr), drugi odpowiadajce rozwinicia (Sactual), trzeci przeszukiwany tekst (SmyStr), a czwarty maksymaln liczb zmian kadego skrtu ($num). Jeli ostatniemu parametrowi przypisano warto -1 (warto domylna), nie zostan wprowadzone ograniczenia liczby zmian. Wynik zapisywany jest w zmiennej SmyStr i zwracany do funkcji wywoujcej. Jestem pewien, e dziki tej prostej, przykadowej wtyczce zrozumiae potg tkwic w systemie rozszerze. Prawdopodobnie wiesz ju, w jaki sposb wtyczki ingeruj w podstawy platformy Joomla! i wpywaj na podstawowe aspekty dziaania systemu.

ludowa platformy Joomla!


Teraz, kiedy posiadasz ju umiejtno programowania rozszerze wszystkich trzech typw (moduy, komponenty i wtyczki), Twoja praca programistyczna bdzie wymaga cisej integracji tworzonych rozszerze z systemem Joomla!. Przekada si to na konieczno zrozumienia dziaania tego systemu na najniszych poziomach, a take na wywoywanie funkcji skadajcych si na platform. Platforma Joomla! zostaa podzielona na kilkanacie pakietw, wikszo z nich ma wasny katalog, ktry zawiera pliki rdowe:

230

Joomla!. Profesjonalne tworzenie stron WN 1W Pakiet Application JAppl i cation i powizane biblioteki zaimplementowano z wykorzystaniem wzorca fabryki (w rozdziale 8. znajduje si wicej informacji na temat wzorcw projektowych). Cztery klasy, ktre dziedzicz ten pakiet
(JInstal 1 ation, JModel, JSite, JAdministrator) t w o r z C M S Joomla!. Pakiet

zawiera take biblioteki DAO (Data Access Object Obiekt dostpu do danych),
tzn. a b s t r a k c y j n klas JModel, a take klasy JModel Category, JModel Component, JModelMenu, JModelModule, JModel PI ugins, JModel Section. JModelSession

i JModel User. Cao znajduje si w katalogu

\libraries\joomla.

Pakiet Cache Implementacja bibliotek obsugujcych pami podrczn; abstrakcyjna klasa dziedziczona jest w postaci klas obsugujcych pami podrczn,
z a w i e r a a d a p t e r y JCacheCal 1 back, JCacheView, JCacheOutput i JCachePage.

Pakiet Base Podstawowy pakiet skadajcy si z klas takich jak JObject, ktry suy za podstaw obiektw JObservable i JTree. Zapisany w katalogu \libraries\joomla\base. Pakiet Client Zawiera biblioteki klienckie dla np. FTP (klasa JFTP) lub LDAP (klasa JLDAP). Pliki znajduj si w katalogu \libraries\joomla\client. Pakiet Database JDatabase i powizane biblioteki tworz warstw czc z funkcjonalnoci baz danych. Klasy obsugujce dostp do baz danych dziedzicz po JDatabase. Obecnie dostpne s wycznie klasy JDatabaseMySQL i JDatabaseMySQLi, ale planowane jest stworzenie odpowiednikw dla Oracle i Microsoft SQL Server. Klasa JSimpleRecordSet wykorzystywana jest w interakcji z baz danych. Pakiet znajduje si w katalogu \libraries\joomla\database. Pakiet Document Biblioteki zawierajce funkcje do generowania stron takich jak abstrakcyjna klasa JDocument. Klasa JDocumentHTML, ktra tworzy strony HTML stanowi rozszerzenie klasy JDocument. Pakiet znajduje si w katalogu \libraries\joomla\document. Pakiet Environment Klasy obsugujce interakcje z uytkownikiem, np. JReponse, JRequest, JBrowser i JURI (ta ostatnia przetwarza adresy URI). Pakiet znajduje si w katalogu \libraries\joomla\environment. Pakiet Event Obsuguje system zdarze w Joomla!, zawiera klas JDi spatcher, ktra dziedziczy JObservable (znajduje si w pakiecie Base); JPluginHelper; JEvent, ktra dziedziczy JObserver; i JP1 ugi n, ktra dziedziczy JEvent. Pakiet znajduje si w katalogu \libraries\joomla\event. Pakiet Filesystem Biblioteki zwizane z obsug systemu plikw. Zawiera klasy JArchive, JFile, JFolder i JPath. Procedury zarzdzania plikami wykorzystywane s gwnie dla wysyanych plikw, tj. multimediw, rozszerze i pakietw jzykowych. Pakiet znajduje si w katalogu \libraries\joomla\filesystem. Pakiet Filter Biblioteki filtrujce dane wejciowe i wyjciowe z dowolnego rda celem zapobiegnicia atakom. Zawiera klasy JInputFi Iter i JOutputFi Iter. Pakiet znajduje si w katalogu \libraries\joomla\fdter. Pakiet il8n Biblioteki obsugujce ustawienia regionalne i jzyki, zawiera klasy JLanguage (implementacja wzorca singleton), JText i JHelp. Pakiet znajduje si w katalogu \libraries\joomla\il8n.

Rozdzia 9. Ingerencia w fundamenty Joomla!: wtyczki Pakiet Installer Biblioteki zwizane z instalacj rozszerze. Zawiera abstrakcyjn klas JInstal ler, na podstawie ktrej stworzone zostay klasy JInstal!erComponent,
JInstallerLanguage, JInstal lerModule, JInstallerPlugin i JInstallerTemplate.

231

Pakiet znajduje si w katalogu

\libraries\joomla\installer.

Pakiet Parameter Biblioteki suce do manipulowania i wywietlania parametrw. Pakiet znajduje si w katalogu \libraries\joomla\parameter. Pakiet Registry Biblioteki powizane z konfiguracj systemu. Zawiera
klasy JRegistry, JRegistryFormat, JRegistryFormatlNI, JRegistryFormatXML,

JRegistryFormatPHP. Pakiet znajduje si w katalogu

\libraries\joomla\registry.

Pakiet Session Biblioteka do obsugi sesji Joomla! za pomoc klas JSessionStorage i JSession. Pakiet znajduje si w katalogu \libraries\joomla\session.

m Pakiet Template Biblioteki obsugi szablonw patTempl ate. Poniewa twrcy Joomla! odchodz od wykorzystania patTempl ate, nie zaleca si wykorzystywania funkcji i klas z tego pakietu w przyszoci mog wystpi problemy z kompatybilnoci. Pakiet znajduje si w katalogu \libraries\joomla\template. Pakiet User Biblioteki suce do aktywacji, autoryzacji i uwierzytelniania uytkownikw. Zawiera klasy JAuthorization; JUserHelper; JAuthentication, ktra dziedziczy JObservable; i JUser. Pakiet znajduje si w katalogu \libraries\ joomla\user.
i JPagination. Klasa JUti lity z a w i e r a m e t o d y sendMai 1 0 , sendAdminMai 1 0 , getHashO, getTokenO, parseAttributesO i isWinOSO. Inne f u n k c j e n a r z d z i o w e

m Pakiet Utilities Rne biblioteki, tn.in. JError, JMail, JMai 1 Hel per, JProfiler

uatwiaj obsug tablic, buforw, dat, bdw, funkcji, dziennikw, poczty, profilowania, simplexml i cigw znakw. Pakiet znajduje si w katalogu \libraries\joomla\utilities. Biblioteki zwizane z poczt elektroniczn, wczajc w to klas JMai 1, ktra dziedziczy klas PHPMai 1 er. Klasa JMai 1 Hel per posiada kilka funkcji zwizanych z listami elektronicznymi, np. cleanLine(), cleanText(),
cleanBodyO, cleanSubjectO, cleanAddress() i isEmailAddressO.

Jak wspomniano w poprzednich rozdziaach, CMS Joomla! jest waciwie aplikacj zbudowan na podstawie platformy Joomla!. Moliwe jest stworzenie innych aplikacji za pomoc tej platformy, ale informacje na ten temat wykraczaj poza ramy tej ksiki. Bezporednie programowanie platformy wymaga dokadniejszej analizy i lepszego zrozumienia kodu rdowego Joomla!. U podstaw platformy Joomla! le dwie klasy: JFactory i JVersion. JFactory to implementacja wzorca fabryki, suy do zwracania rnych obiektw, a JVersion przechowuje informacje dotyczce wersji aktualnej instalacji. Prawdopodobnie nie bdziesz korzysta z nich bezporednio, jednak s one podstaw, znajduj si na najniszym poziomie platformy, dlatego moe warto rozpocz dokadne badania Joomla! wanie od nich.

232

Joomla!. Profesjonalne tworzenie stron WN 1W

Struktura CMS Joomla! (JApplication)


CMS Joomla! skada si z trzech aspektw: Instalator Cz instalacyjna obsuguje czynnoci zwizane z instalacj i wstpn konfiguracj systemu Joomla!. Nastpnie wykonuje pierwsze uruchomienie systemu i nie jest wykorzystywana nigdy wicej. Cz frontowa Widziana jest przez uytkownikw strony. W wikszoci przypadkw jest to dostp tylko do odczytu. Dane odczytywane s z bazy danych MySQL i wywietlane w przegldarce w postaci sformatowanej strony WWW. Wyjtkami od tej reguy mog by funkcje interaktywne (np. gosowanie w sondzie). Cz administracyjna Wykorzystywana jest praktycznie wycznie w celu dodawania i wprowadzania zmian w zawartoci strony. Nawet redaktorzy spdzaj niewiele czasu, przegldajc artykuy w czci administracyjnej. Ruch w tej czci (zarwno odczyt, jak i zapis) jest zdecydowanie mniejszy ni w czci frontowej.

CMS Joomla! zosta podzielony na trzy rne aplikacje", ktre uruchamiane w rnych momentach, wypeniaj wymienione wyej zadania: JSite cz frontowa aplikacji; JAdmi ni strator cze administracyjna; Jlnstallation interfejs instalacji.

Wszystkie powysze klasy dziedzicz abstrakcyjn klas JApplication. Poniewa praktycznie wszystkie rozszerzania pisane s z myl o wspdziaaniu z klas JSite, klasy JAdmi ni strati on i Jlnstallation zostanjedynie pobienie opisane.

Aplikacja Jlnstallation
Aplikacja instalujca, ktrej odpowiada klasa JInstal 1 at i on, jest uruchamia zazwyczaj wycznie jeden raz w momencie instalowania systemu. Pliki rdowe mona znale w katalogu 1 installation. Wikszo podstawowej logiki znajduje si w katalogu \installation\ includes. Zawiera on ponisze pliki: application.php Inicjalizuje i uruchamia aplikacj instalujc, tworzy sesj. defines.php Tworzy globalne zmienne, zawierajce cieki wykorzystywane podczas instalacji. framework.php Importuje biblioteki platformy Joomla!, wykorzystywane przez instalator. xajax.php Zawiera kod ajaksowy stosowany przy asynchronicznej analizie skadniowej plikw XML, obsuguje instalacj przykadowych danych, sprawdzania poprawnoci poczenia FTP, uzupeniania informacji wykorzystywanych przy sortowaniu danych w bazie.

Rozdzia 9. Ingerencia w fundamenty Joomla!: wtyczki Katalog \installation\installer zawiera nastpujce pliki:

233

controller.php Zawiera definicj klasy JInstal 1 ationControl 1 er, gwny kod instalatora. Obsuguje wywietlanie ekranw instalacji, tj. wybr jzyka, wstpne sprawdzanie, wywietlanie warunkw licencji GPL, konfiguracj bazy danych i FTP oraz ekran kocowy. Zawiera take logik do utworzenia bazy danych. html.php Zawiera logik do obsugi warstwy prezentacji, wywietlania ekranw wygenerowanych przez JInstal 1 ationControl 1 er. installer.php Uruchamia klas JInstal!ationControl ler. jajax.php Obsuguje zadania ajaksowe, procedury w pliku xajax.php.

Chocia rzadko bdziesz wykorzystywa procedury instalatora, jednak warto zapozna si z jego kodem rdowym, poniewa podczas instalacji mog wystpi problemy. Komunikaty o bdach i inne problemy, ktre nie zostan wyjanione na ekranie, mog mie wyjanienie w kodzie rdowym. Nie powiniene zakada, e aplikacja instalujca bdzie znajdowa si na normalnej stronie Joomla!. Katalog I installation musi zosta usunity po zainstalowaniu Joomla! na serwerze. Dlatego nie jest moliwy dostp do niego, i to niezalenie od motyww, ktrymi si kierujemy.

iplikacja frontowa JSite


Najwaniejszym etapem podczas analizy kodu platformy Joomla! bdzie JSite. Aplikacja JSite zawiera kod odpowiedzialny za pobieranie informacji z bazy danych MySQL, czenie z wybranym szablonem i przesyanie wyniku do przegldarki uytkownika. Obsuguje rwnie funkcje zwizane z logowaniem i interakcj z uytkownikiem. Podobnie jak przy innych aplikacjach opartych na platformie Joomla!, uruchamianie aplikacji rozpoczyna si od zaadowania pliku index.php w gwnym katalogu. Nastpnie adowane s trzy najwaniejsze pliki: defines.php, framework.php i application.php. Plik zawierajcy gwn definicj klasy JSite (application.php) znajduje si w katalogu 1 includes. Kod w pliku index.php tworzy egzemplarz klasy JSite i po wstpnym przygotowaniu rodowiska (rozpoczciu sesji i zaimportowaniu wtyczki system) uruchamia aplikacj. Zawiera nastpujce kluczowe funkcje: initial ize aduje ustawienia jzykowe i ustawienia uytkownika. di spatch Obsuguje wywietlanie HTML-a najwyszego rzdu, wstawianie tytuu, opisu, metadanych, odwoa do plikw JavaScript. Wywouje metod
JComponentHelper::renderComponent().

render Wywietla gwn cz strony ze sprawdzaniem formatu (HTML lub kana RSS), a nastpnie wywouje metod generujc klasy JDocument. Po wywietleniu treci wywouje metod setBody obiektu JResponse, przekazujc wygenerowane dane. 1 ogi n Sprawdza autoryzacj podanej nazwy uytkownika i hasa. 1 ogout Wywouje metod logout klasy JAppl i cati on, aby zakoczy sesj.

234

Joomla!. Profesjonalne tworzenie stron WN 1W getPageParameters Pobiera parametry komponentu i menu, zwraca je w postaci tablicy o nazwie iparams. 1 oadConfi gurati on Wykorzystuje sta JPATH_SITE, aby zlokalizowa plik ustawie configuration.php, a nastpnie aduje konfiguracj. Przy wczonym trybie spucizny sprawdza ustawienia strony take w pliku mosConfig. getTempl ate Zwraca nazw szablonu wybranego do wywietlenia strony. Jeli zostao przypisanych kilka szablonw do aktualnego menuid, pobiera z tabeli jos_templ atesjnenu pierwszy pasujcy rekord. setTempl ate Wykorzystywana do wymuszania innego szablonu strony ni wybrany. createPathway Tworzy ciek URL dla rnych obiektw na stronie, takich jak elementy menu.

Metody zapisane w pliku tworz serce CMS-a. Zwr uwag, e kilka procedur zawiera wikszo logiki dostpnej w ramach platformy Joomla!.

Aplikacja administracyjna JAdministrator


Aplikacja JAdministrator znajduje si w katalogu \administrator. Jej uruchamianie jest praktycznie identyczne jak w przypadku strony JSite, z tym e w miejsce klasy JSite adowana jest klasa JAdministrator. Oprcz administracyjnych wersji trzech gwnych plikw (defines.php,framework.php i application.php) adowany jest take plik toolbar.php, ktry dodaje pasek menu w interfejsie administratora. Jeli zbadasz zawarto katalogu 1 administrator, zauwaysz, e w przeciwiestwie do moduw i komponentw nie zawiera on oddzielnego podkatalogu dla wtyczek. JAdministrator dziaa inaczej ni aplikacja JSite, ktra wykorzystuje pojedyncz metod do wywietlania wszystkich treci. Struktura czci administracyjnej przypomina raczej zestaw maych aplikacji uruchamianych dla poszczeglnych elementw. Oznacza to, e nie istnieje standardowa struktura zdarze, ktr mona by wykorzysta przy tworzeniu wtyczek.

cieki Joomla!
Istnieje spora liczba staych w kodzie Joomla!, ktre zawieraj odnoniki do rnych katalogw. Do tych staych nale: JPATH_R00T Przechowuje ciek do gwnego katalogu platformy Joomla!. JPATH_SITE Zawiera ciek do gwnego katalogu aplikacji JSite. JPATH_ADMINISTRATOR Przechowuje ciek do gwnego katalogu aplikacji JAdministrator. JPATH_INSTALLATION Zawiera ciek do gwnego katalogu aplikacji Jlnstallation.

m JPATH_BASE Przechowuje ciek aktualnie uruchamianej aplikacji. Z tego powodu, jeli uruchamiana jest aplikacja JSite, warto tej staej jest identyczna z JPATH SITE. Analogicznie dzieje si w przypadku interfejsu administratora, staa pokrywa si
zJPATH ADMINISTRATOR.

Rozdzia 9. Ingerencia w fundamenty Joomla!: wtyczki

235

Wymienione stae tworz grup nielicznych zmiennych globalnych, ktre na pewno bd dostpne w przyszych wersjach Joomla!. Wikszo globalnych zmiennych oraz staych zostaa porzucona i w kolejnych wydaniach bd one usunite.

Wskazwki przydatne podczas pracy z kodem Joomla!


Wiesz ju, jak stworzy rozszerzenia programistyczne Joomla! kadego typu (moduy, komponenty i wtyczki), a Twoje zdolnoci rozszerzania systemu Joomla! ograniczone s wycznie poziomem Twoim umiejtnoci jako programisty i znajomoci tego systemu. W czasie tworzenia rozszerze wiele razy znajdziesz si w sytuacji, kiedy nie bdziesz rozumia, jak dokadnie zachowuje si system Joomla! dla szczeglnych danych lub akcji uytkownika. W takich wypadkach analiza kodu rdowego to doskonay sposb rozwizania problemu. Poniewa Joomla! jest oprogramowaniem o otwartym kodzie rdowym, cay kod jest w peni dostpny w kadej instalacji systemu. Zagldajc do plikw rdowych, mona uzyska odpowied prawie na kade pytanie. Zapoznanie si z kodem rdowym jest wysoce zalecane, jeli planujesz zaawansowane programowanie Joomla!. Moe si to wydawa z pocztku lekko przytaczajce, prawdopodobnie jednak szybko zrozumiesz sposb, w jaki kod zosta zorganizowany. Kolejne podrozdziay zawieraj kilka wytycznych, ktre powinny by pomocne w pracy z kodem rdowym. Nie ma jednak lepszego sposobu, ni otworzy kod w edytorze tekstu, a nastpnie dziki wnikliwej analizie poznawa jego dziaanie.

Wykorzystywanie funkcji przeszukiwania katalogw


Istnieje spora szansa, e na pytanie dotyczce funkcjonowania Joomla! mona odpowiedzie, wykonujc proste wyszukiwanie w plikach tekstowych. Wobec postawionego zadania naley przyj postaw detektywa szuka wskazwek, ktre doprowadz w kocu do rozwizania. Przykadowo wyobra sobie, e chcesz rozszerzy list typw parametrw dla moduw. Jeli otworzysz ekran edycji dowolnego moduu, moesz zauway, e parametry wywietlane s w panelu Parametry moduu, jak to przedstawiono na rysunku 9.5. Rysunek 9.5.
Lista parametrw moduu znajduje si w panelu o nazwie Parametry moduu"
Piefeiiiiiuje P.n.tiHPtty lulu

prsytostefc klasy moduu

236

Joomla!. Profesjonalne tworzenie stron WN 1W Korzystajc z aplikacji zawierajcej funkcj przeszukiwania katalogw, np. jEdit, moesz przeszuka system Joomla! pod ktem tego tekstu 3 . W rezultacie otrzymasz list plikw, w ktrych wystpuje dany tekst co wida na rysunku 9.6. Po zapoznaniu si z wynikami wyszukiwania stanie si jasne, e za wywietlanie parametrw odpowiada kod w pliku admin. modules.html.php, ktry znajduje si w katalogu comjnodules interfejsu administratora.

Rysunek 9.6.
Wynikiem wyszukiwania w programie jEdit jest lista plikw, ktre zawieraj szukan fraz

t Module Parameters (2 occurrences in 2 files) f :\xampp!MdQCSjoomlaadministrator lcomponentsomjiiodules>admin.modules.litml4)hp (1 occurrence) 441 echo $parie->startPanel(JText:: ('Module Parameters), "param-page"); f C:\xat1lpp^ltdocs#omla^dministrator'danguasen-GBWr^GBxom_modules.iiti (1 occurrence) 35: MODULE PARAMETERS=Module Parameters

Kilka linijek poniej wyszukiwanego tekstu znajduje si poniszy kod:


$p->render('params')

Kolejne wyszukiwanie, tym razem sw function render", powinno doprowadzi do pliku, w ktrym zdefiniowano funkcj do generowania wydruku parametrw moduu. Funkcj render() mona znale w 35 plikach, ale jedna pozycja znaczco si wyrnia: \libraries\joomla\html\parameter.php Powyszy plik zawiera wywoanie funkcji getParams(), ktra pobiera parametry. Moesz poda dalej tym tropem, a trafisz na poszukiwany kod. Inn metod byoby wybranie z pliku deskryptora, z sekcji parametrw takiego typu, ktrego nazwa jest unikatowa (np. radio), a nastpnie przeprowadzenie wyszukiwania. Pliki odpowiedzialne za wywietlanie tego elementu mona znale (bingo!) w katalogu: \libraries\joomla\htmI\parameter\element W tym katalogu znajdziesz kod wywietlajcy parametry wszystkich typw, np. odstpy, sekcje, redaktorzy, kategorie, lista plikw itd. Podajc dalej, napotkasz kod, ktry uruchamia tworzenie wydruku. Moesz teraz zdefiniowa wasny! Wikszo programistw Joomla! bdzie bada i modyfikowa interfejs systemu, dlatego najlepiej zacz od folderu \libraries\joomla. Pomocne w zrozumieniu funkcji poszczeglnych plikw bd opisy pakietw umieszczone wczeniej w tym rozdziale.

Musimy pamita, e Joomla! w oryginale wystpuje po angielsku, teksty w jzyku polskim bdjedynie w plikach z tumaczeniami, dlatego w tym wypadku powinnimy wyszukiwa Module Parameters"

przyp. tum.

Rozdzia 9. Ingerencia w fundamenty Joomla!: wtyczki

237

Badanie com_content
Wywietlanie treci nie jest integraln czci platformy Joomla! odbywa si za porednictwem komponentu comcontent. Na serwerze testowym znajdziesz go w katalogu o ciece przypominajcej ponisz: C:\Program FiIes\Apache Software comcontent Foundation\Apache2\htdocs\components\

Podczas implementacji tego komponentu zastosowano wzorzec MVC (Model-Widok-Kontroler), opisany w rozdziale 8. Dziki analizie poszczeglnych plikw (w szczeglnoci content.php) moesz pozna sposb formatowania treci. Ostateczne generowanie kodu HTML dla komponentu obsuguje kod klasy ContentViewArticle. Znajdziesz j w pliku view.html.php w poniszym folderze: \components\com_content\views\article\view.html.php

SVN Joomla!: najnowsze osignicia


Jeli tworzysz rozszerzenia systemu Joomla! (moduy, komponenty i wtyczki), powiniene wykorzysta system kontroli wersji. System taki zawiera repozytorium, ktre przechowuje aktualn wersj plikw danego programu. Czonkowie grupy pracujcej nad dan aplikacj mog pobra z repozytorium jej najnowsz wersj. Uytkownicy mog take pobiera pliki, a nastpnie rozwija je. Wprowadzone zmiany, po wysaniu do systemu, s integrowane z reszt projektu. Stara wersja pliku trafia do archiwum, skd mona j, w razie potrzeby, pobra lub przywrci. Grupa deweloperw Joomla! wykorzystuje system kontroli wersji Subversion (SVN) do zarzdzania kodem rdowym. Repozytorium Joomla! jest publicznie dostpne w trybie do odczytu. Jeli chcesz, moesz pobra z repozytorium SVN najnowsz wersj aplikacji Joomla!. Pierwszym krokiem bdzie instalacja SVN. W rozdziale 6. znajduj si informacje na temat dostpnoci aplikacji SVN i ich instalacji. Po zainstalowaniu SVN musisz utworzy folder, ktry bdzie zawiera pobrane pliki. W moim przypadku na serwerze testowym jest to katalog JoomlaSVN, znajdujcy si w gwnym katalogu serwera WWW. Dlatego cieka dostpu wyglda tak: c:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Joom!aSVN

Po utworzeniu folderu musisz dokona niezbdnych ustawie, aby pobra do niego pliki z repozytorium. Jeli korzystasz z programu TortoiseSVN na platformie Windows, kliknij prawym przyciskiem folder i wybierz opcj SVN Checkout. Zostanie wywietlone okno Checkout, jak to przedstawiono na rysunku 9.7. W pole opisane URL of the repository wprowad http://joom1acode.org/svn/joomla/developrnent/trunk i kliknij przycisk OK. Pojawi si okno z zapytaniem o nazw uytkownika i haso. Wprowad nazw anonymous (anonimowy) i pozostaw pole hasa puste. Klient systemu SVN poczy si z repozytorium i pobierze wszystkie pliki rdowe Joomla! do wybranego katalogu. Moe to troch potrwa, poniewa konieczne jest przesanie ponad 3000 plikw. Po zakoczeniu tego procesu moesz korzysta z pobranej wersji Joomla! jak z kadej innej.

238

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 9.7.
W oknie programu TortoiseSVN moesz wprowadzi dane repozytorium Joomla!

M^fffHBWW^
Repository URL of repository:

j
|7j

Checkout directory: C:\JoomlaSVN Checkout Depth Fully recursive f i Omit externals Revision (?) HEAD revision ( ) Revision Show log

O 1 K

Cancel

] [

Help

Aby w przyszoci uaktualni pobrane pliki, wystarczy z menu kontekstowego dla wybranego folderu wybra opcj SVN Update. Aplikacja poczy si z repozytorium i pobierze pliki, ktre zostay zmienione od momentu ostatniego dostpu. Zostanie wywietlone okno zawierajce informacje o postpie pobierania uaktualnionych plikw (zobacz rysunek 9.8). Po ukoczeniu przesyania pod list plikw zostanie wywietlony komunikat o liczbie przesanych bajtw, plikw poczonych, dodanych, usunitych lub uaktualnionych. Rysunek 9.8.
Informacje o przebiegu uaktualniania plikw pobranych z repozytorium SVN wywietlane s w specjalnym oknie
* C:UoomlaSVN
Action Updated ; Added Updated ; Added Updated I Added ; Added Added Updated Updated Completed Path C: \JoomlaSVN\libraries\joomla\database\table\backup, php C: \ JoomlaS VN\libraries\joomla\database\table\_acIgroup. php C: \ JoomlaS VN\libraries\joomla\database\table\extension .php C ; \ Joomla5VN\libraries\ joomla\database\table\axosection. php C: \ JoomlaSVN\libraries\)oornla\database\table\aro. php C;\ JoomlaS VN\libraries\joomla\database\table\adsection.php C: \JoomlaSVN\libraries\joomla\database\tabie\_aclob ject. php C: \ JoomlaS VN\libraries\joomla\dat abase\table\axo. php C:\JoomlaSVN\llbraries\loader.php C:\JoomlaSVN\CHANGELOG.php At revision: 11323

Update - TortoiseSVN Finished!


Mime type

66 kBytes transferred in 0 minute(s) and 15 second(s) Added: 16 Updated:26 Show log.,

Uaktualnianie nie spowoduje usunicia innych plikw, ktre zapisae w folderze, nie naruszy take bazy danych Joomla!. Jeli zainstalowae Joomla!, dodae rozszerzenia, dostosowae konfiguracj lub wprowadzie inne zmiany, ktre bezporednio nie dotycz plikw rdowych, uaktualnianie bdzie transparentne. Zostan nadpisane wycznie te pliki, ktrych nowsze wersje znajduj si w repozytorium. Pobranie na dysk aplikacji Joomla! z repozytorium SVN spowoduje utworzenie w kadym katalogu folderu ,svn. Katalogi zawieraj du liczb plikw kontrolnych, ktre su do ledzenia wersji projektu. Nie usuwaj tych folderw, jeli planujesz uaktualnia pliki w przyszoci. Ich obecno jest niezbdna, aby klient SVN odczyta, ktre pliki wymagaj uaktualnienia, a ktre s w najnowszej wersji. Pliki znajdujce si w folderach ,svn s mae, ale ich liczba jest znaczca. Jeli zamierzasz przesa tak wersj za porednictwem protokou FTP, cay proces moe potrwa nawet 10 razy duej ni zazwyczaj. Dlatego zanim rozpoczniesz wysyanie, wykorzystaj opcj eksportu

Rozdzia 9. Ingerencia w fundamenty Joomla!: wtyczki

239

plikw do innego folderu. Zostan skopiowane wycznie waciwe pliki, z pominiciem plikw kontrolnych. Jeli korzystasz z programu TortoiseSVN, kliknij prawym przyciskiem folder z projektem i wybierz opcj TortoiseSVN/Export. Poniewa opcja uaktualniania dostpna w SVN nie dotyczy w aden sposb bazy danych Joomla!, wszelkie zmiany wprowadzone przez programistw w bazie danych (lub dowolnym kodzie, ktry si z ni czy) mog spowodowa bdy w Twoim systemie. Mog zacz si pojawia bdy zwizane z baz danych przy prbie dostpu do bazy o zmienionej strukturze. Najprostszym sposobem przywrcenia prawidowego dziaania systemu jest usunicie lub zmiana nazwy pliku configuration.php, ktry znajduje si w gwnym katalogu, a nastpnie ponowne uruchomienie procesu instalacji. W czasie instalacji zostanie utworzona kopia zapasowa istniejcych tabel, z ktrej moesz skorzysta, aby rcznie przywrci artykuy lub ustawienia rozszerze. Repozytorium kodu Joomla! dla wersji 1.0.x mona znale pod adresem: http://joomlacode. org/svn/joomla/development/releases/l. 0

Repozytorium moduw Joomla l.x (ktre zawiera wersje archiwalne i eksperymentalne) mona znale pod adresem: http://joomlacode.org/svn/joomla/development Procedura logowania i dostpu dla powyszych zasobw jest identyczna jak w przypadku gwnego repozytorium Joomla!.

Podsumowanie
Wtyczki Joomla! zawieraj kod obsugi zdarze systemowych, ktre stanowi serce aplikacji Joomla!. Rozszerzenia tego typu maj rozlege moliwoci od przechwytywania i modyfikacji treci, po wstawianie dodatkowych formularzy uwierzytelniania uytkownikw. Dziki zapoznaniu si z procesem tworzenia wtyczek potrafisz ju programowa rozszerzenia wszystkich trzech typw, poniewa wczeniej nauczye si tworzy moduy i komponenty. Wiedz t oraz gruntown znajomo platformy Joomla! moesz wykorzysta w praktyce do stworzenia dowolnego systemu, jaki sobie tylko wyobrazisz. W rozdziale opisano proces tworzenia wtyczek Joomla!, budow platformy, a w szczeglnoci: Wprowadzono podzia na osiem typw wtyczek wykorzystywanych przez system Joomla!. Wyjaniono cztery kategorie zdarze systemowych, ktre moe obsugiwa kod wtyczek. Stworzono wtyczk Hello World! aktywowan przy zdarzeniu onAfterDi spl ay "-Title(), co powodowao dodanie powitania Hello World! midzy tytuem a treci artykuu.

240

Joomla!. Profesjonalne tworzenie stron WN 1W Zaprogramowano rozszerzenie Automatyczne Skrty, ktre przechwytuje tre artykuu, wyszukuje popularne skrty i wstawia w ich miejsce odpowiednie rozwinicia. Opisano poszczeglne pakiety skadajce si na platform Joomla!, aby zwikszy znajomo systemu i uatwi lepsze wykorzystanie dostpnych moliwoci. Przedstawiono wskazwki przydatne podczas samodzielnego badania i poznawania kodu rdowego Joomla!.

Po zapoznaniu si z funkcjonowaniem systemu z punktu widzenia programisty warto wrci do aspektw zwizanych z prowadzeniem strony WWW, ktre nadaj sens programowaniu Joomla!. W rozdziale 10. dowiesz si, jak zaimplementowa istniejce rozszerzenia, aby doda na stronie funkcje serwisu spoecznociowego.

10
Budowanie spoecznoci w Joomla!
wiatem Web 2.0 rzdz dwa sowa: interaktywno i spoeczno. Wiele organizacji zdao sobie spraw, e stworzenie wirtualnej spoecznoci (tzn. internetowej spoecznoci), chocia trudne, jest kluczowe, gdy chce si dobrze prosperowa na nowym rynku. Dodanie na stronie odpowiednich technologii jest zacht dla odwiedzajcych do wzbogacania zawartoci witryny, a take komunikowania si z innymi. Komunikacja przebiega za porednictwem rnych funkcji, np. czatw, forw, stron z informacjami osobistymi, ksig goci, sond, systemw komentarzy, sieci spoecznych, kalendarzy wydarze i systemw wiki. Niezalenie od tego, czy wirtualna spoeczno stanowi lune zgromadzenie czonkw (np. konsumenci umieszczajcy komentarze na temat produktw na danej stronie), czy ukierunkowana jest raczej na codzienne wizyty, jak np. MySpace, korzyci z jej istnienia s znaczce wzrost popularnoci i pozycji strony. Historia Joomla! jest przykadem sukcesu w budowaniu i rozwijaniu spoecznoci internetowej. Wraz z Joomla! zostao stworzone dobrze prosperujce forum (forum.joomla.org), katalog rozszerze wzbogacany przez uytkownikw, z moliwoci komentowania (extensions.joomla.org), a take katalog stron 0 duej skali, do ktrego pozycje dodawane s przez uytkownikw (www.joomla.org/content/ blogcategory/35/69). Rozwj Joomla! nie byby tak dynamiczny, gdyby nie skuteczne zastosowanie technologii spoecznociowych. Rozwijanie internetowej spoecznoci lub sieci spoecznej wymaga rozwagi w czasie instalowania systemu i czenia poszczeglnych technologii. W przeciwiestwie do tradycyjnych, statycznych stron internetowych witryny spoecznociowe kad nacisk na dynamiczne treci dodawane przez uytkownikw. Taka zmiana przekada si na ogrom nowych wyzwa od waciwej konfiguracji rde danych, co umoliwia zapisywanie danych przesyanych przez uytkownikw, po dodatkowe zadania administracyjne (zarwno automatyczne, jak 1 nadzorowane), co pomaga kontrolowa nowe treci. Na szczcie dla Joomla! istniej technologie, ktre uatwiaj budowanie skutecznych spoecznoci, a ich implementacja nie nastrcza wikszych trudnoci. W tym rozdziale dowiesz si, jak stworzy wirtualn spoeczno, korzystajc z dostpnych, darmowych rozszerze Joomla!.

242

Joomla!. Profesjonalne tworzenie stron WN 1W W czasie, kiedy pisaem t ksik, cz z wykorzystanych rozszerze nie zostaa jeszcze przystosowana do pracy z Joomla! w wersji 1.5. Mam nadziej, e do momentu, kiedy signiesz po t ksik, dla wszystkich wymienionych rozszerze bd dostpne uaktualnione wydania, zgodne z wersj 1.5. Jeli rozszerzenie, ktre chciaby wykorzysta, nie zostao uaktualnione, sprbuj znale zamiennik w katalogu rozszerze Joomla fextensions.joomla.org). Istnieje spora szansa, e uda Ci si znale rozszerzenie, ktre ma te same wymagane funkcje. Poniewa zarzdzanie wirtualn spoecznoci wymaga duo czasu, warto podczas przygotowywania systemu przyj postaw konserwatywn. Rozszerzalno systemu Joomla! czyni go idealnym materiaem do rozbudowywania krok po kroku. W wikszoci przypadkw moesz doda rozszerzenie, ktre oferuje okrelon funkcj w mniej ni 10 minut. Jeli nie zdobdzie ona popularnoci lub nie jeste zadowolony z dostpnych opcji, moesz w kilka sekund usun lub dezaktywowa dane rozszerzenie. Wikszo stron internetowych, ktre nie opieraj si na Joomla!, wymagaaby duej liczby dodatkowego programowania do wstawienia lub usunicia dodatkowych funkcji. Cz z rozszerze sucych do budowania spoecznoci internetowych zostaa ju opisana w rozdziale 4., dlatego w tym rozdziale zostanie jedynie krtko przedstawiona ich rola w tworzeniu spoecznoci. Opisanych zostanie wiele innych rozszerze posiadajcych funkcje rnego typu, ktrymi mona wzbogaci system Joomla!. Wszystkie wymienione rozszerzenia dostpne s za darmo. Jeli jednak istnieje szczeglnie znane rozszerzenie komercyjne, ktre charakteryzuje si specyficzn funkcjonalnoci, pojawi si informacja na jego temat. Przy kadym demonstrowanym rozszerzeniu pojawia si adres internetowy, pod ktrym mona byo je znale w czasie, kiedy pisaem t ksik. Czsto jednak projekty przenoszone s w inne miejsca. Wszystkie rozszerzenia wymienione w tym przegldzie mona znale w katalogu rozszerze Joomla!. Dlatego, jeli zanotowany adres strony internetowej jest nieaktualny, to za pomoc katalogu zdoasz odnale stron, na ktrej mona pobra rozszerzenie.

Planowanie wirtualnej spoecznoci


Tworzenie wirtualnej spoecznoci w wielu aspektach przypomina krcenie filmu. Przed nakrceniem pierwszego ujcia naley przej cay proces przygotowa, upewni si, czy aktorzy zostali odpowiednio dobrani, czy rekwizyty zostay wypoyczone i czy dziaaj poprawnie, czy scenariusz jest na swoim miejscu, czy producenci wiedz, w jaki film inwestuj. Jeli ktrykolwiek z wymienionych elementw zostanie zaniedbany, to przeoy si to na liczne potknicia podczas krcenia, a ogrom czasu i energii zostanie po prostu zmarnowany. Podobnie jest w przypadku wirtualnych spoecznoci. Potrzeba wiele czasu, aby przycign odwiedzajcych i dodajcych, a kiepskie planowanie moe sprawi, e nawet obiecujcy pocztek moe zmieni si w rozczarowanie. Chocia dziki Joomla! dodawanie funkcji spoecznociowych jest proste, waciwe planowanie jest niezbdne, gdy chce si osign sukces nawet, jeli strona rozbudowywana jest krok po kroku. Dziki zachowaniu rozsdku w fazie planowania i konstrukcji nowej strony spoecznociowej zmniejszysz ryzyko frustracji u ciko zdobytych uytkownikw, ktrych czste i niejasne zmiany mogyby skoni do opuszczenia Twojej strony na zawsze. Budowanie wirtualnej spoecznoci mona podzieli na trzy gwne etapy.

Rozdzia 10. Budowanie spoecznoci w Joomla!

243

zy stadia wirtualnej spoecznoci


Wirtualne spoecznoci rni si od tradycyjnych stron WWW (takich jak strony statyczne lub sklepy internetowe) tym, e czerpi gwnie z komunikacji midzy czonkami duej grupy uytkownikw witryny. Niezalenie od okolicznoci, zebranie duej liczby uytkownikw moe zaj troch czasu. Tworzenie wirtualnej spoecznoci odbywa si zazwyczaj stopniowo, a nagy przypyw uytkownikw nie daje takich korzyci jak na tradycyjnych stronach. Jeli Twoja strona zostanie nagle, w przecigu nocy, zalana" nowych milionem uytkownikw, nie ma wikszych szans, aby udao si utrzyma ich na duszy czas. Co wicej, pierwszym wraeniem nowych odwiedzajcych bdzie brak treci i kiepska wydajno. Wzrost wirtualnych spoecznoci to praca organiczna, poniewa spoeczno powoli odkrywa, co grupa ma do zaoferowania. Biorc pod uwag unikatow natur tworzenia i rozszerzania wirtualnych spoecznoci, warto zerkn na map" rozwoju, aby zachowa obrany na pocztku kierunek i przetrwa frustrujce momenty. Cay proces mona podzieli na trzy etapy: programowanie i testy; uruchamianie i przyciganie uytkownikw; przedefiniowanie i dojrzao.

Praktycznie wszystkie udane spoecznoci internetowe podaj podobnym szlakiem, dlatego mona wyrni pewne punkty odniesienia.

ap 1. Programowanie i testy
Po zapoznaniu si z pomysem stworzenia wirtualnej spoecznoci powiniene wyksztaci wstpne wyobraenie na temat tego, jaki typ spoecznoci chcesz zbudowa. Joomla! pozwala na lokalne uruchomianie strony i eksperymentowanie z rnymi funkcjami. W ten sposb moesz zdecydowa, jakiego typu stron chcesz stworzy. Odpowiedzi na ponisze pytania poparte eksperymentami dadz Ci jasne wyobraenie na temat przyszej strony: Czy bdzie to spoeczno komercyjna, czy hobbystyczna? Robi to duo wiksz rnic, ni mylisz, poniewa odpowied na to pytanie okrela poszukiwan grup ludzi. Przykadowo komercyjna spoeczno skupiona wok produktu A nie bdzie raczej zdobywa czonkw spord fanw produktw B i C. Z drugiej strony, spoeczno hobbystw moe zrzesza fanw wszystkich produktw danej kategorii i nie musi suy promowaniu produktu A. Dodatkowo strony hobbystyczne maj duo luniejsze standardy, jeli chodzi o poziom wulgarnoci i dyskusje nie na temat, poniewa nie musz odpowiada przed sponsorami lub reklamodawcami. Czy istnieje jaki porzdek omawianych tematw? Wielu nieudanym wirtualnym spoecznociom brakowao szkieletu, ktry mona byo rozbudowywa, dodajc treci. Podobnie jak treja, ktry umoliwia rolinom dogodny wzrost i rozkwitanie, sadzenie" spoecznoci warto rozpocz od zdefiniowania listy tematw. Taka agenda uatwia odwiedzajcym odnalezienie interesujcych miejsc na stronie.

244

Joomla!. Profesjonalne tworzenie stron WN 1W Czy wirtualna spoeczno ma by dodatkiem do strony internetowej, czy jej gwn atrakcj? Poniewa funkcje spoecznociowe wymagaj powicenia duej iloci czasu, zwaszcza w zakresie zarzdzania, na wielu stronach traktowane s jako mao znaczce dodatki, a nie fundamentalne elementy strony. Cech takiej strategii jest zaleta stopniowej adaptacji nowych technologii, ktre czerpi z istniejcej bazy uytkownikw. W takim wypadku raczej nie jest moliwe zrealizowanie scenariusza w stylu MySpace, witryny, ktrej powodem istnienia jest spoeczno.

Po nakreleniu oglnych koncepcji mona przej do fazy konstrukcji. Wikszo wirtualnych spoecznoci wykorzystuje istniejce oprogramowanie (takie jak rozszerzenia opisane w tym rozdziale), dlatego programowaniu i wdraaniu powicany jest jedynie uamek czasu przeznaczonego na projekt. Po zainstalowaniu i skonfigurowaniu oprogramowania mona uruchomi platform realizujc zaplanowane cele. Konfiguracja moe oznacza utworzenie kategorii, dodanie podstawowych artykuw i warunkw korzystania ze strony oraz zastosowanie zabezpiecze w postaci logowania. Przed uruchomieniem strony powinny zosta przeprowadzone testy za pomoc narzdzi badajcych wydajno pod obcieniem, aby okreli granice obecnej instalacji. Odpowiednie informacje na ten temat znajdziesz w rozdziale 11. Wykorzystanie tych narzdzi, chocia wane w przypadku normalnej strony Joomla!, ma krytyczne znaczenie dla strony spoecznociowej, poniewa pozwala ustali grne granice spoecznoci dla aktualnej konfiguracji serwera. Na dalszym etapie dobrym pomysem moe by samodzielne rekrutowanie uytkownikw, ktrzy reprezentuj docelow grup, i zachcanie ich, aby przeprowadzili nieformalny test. Za pomoc opcji dostpu Joomla! moesz ograniczy funkcje spoecznociowe do grupy osb, ktre pomagaj w przygotowywaniu strony. Jeli strona ma by skierowana do nastolatkw, znajd kogo, kto j sprawdzi i podzieli si wraeniami. W przypadku strony skupiajcej specjalistw z brany high-tech, warto zapyta take o inne, polecane przez nich spoecznoci. Tym sposobem dowiesz si, jaki typ stron przyciga uytkownikw tego typu.

Etap 2. Uruchomienie i przyciganie uytkownikw


Moment uruchomienia wirtualnej spoecznoci Joomla! jest ekscytujcy, jednak czsto okazuje si take zniechcajcy. Zazwyczaj pojawia si duo mniej odwiedzajcych, ni si spodziewae, a Ci, ktrzy wchodz na stron, chc si raczej porozglda lub podpatrywa", zamiast doda co od siebie lub wzi udzia w dyskusji. Chocia may ruch na stronie moe wydawa si niekorzystny, w przypadku wikszoci stron to wielka zaleta. W wikszoci dziedzin 10 procent ludzi wykonuje 90 procent pracy. Uruchomienie strony pozwoli Ci zlokalizowa ludzi, ktry chc wsptworzy stron, a nastpnie przekaza im cz odpowiedzialnoci. Moesz sprawi, by poczuli si niesamowicie wani dla waciciela strony (kimkolwiek on jest), aby mieli wraenie uczestnictwa w zakadaniu spoecznoci. Na pocztku musisz dotrze do tych, ktrzy wnosz nawet najmniejszy wkad. Osoba dodajca pierwszy komentarz lub pierwsz wiadomo na forum zasuguje co najmniej na osobisty e-mail od ludzi prowadzcych stron. Powi czas pierwszym dodajcym, aby poczuli si

Rozdzia 10. Budowanie spoecznoci w Joomla!

245

docenieni, poniewa nagrodz Ci, dodajc kolejne treci na stronie. Moesz ich nawet nagradza upominkami, dodatkowymi przywilejami na stronie lub specjalnym dopiskiem (takim jak tester strony, zaawansowany uytkownik, gwny wsppracownik itd.). Wielu zwolennikw wirtualnych spoecznoci przyrwnuje je do opieki nad ogrodem. Naley zasiewa nowe nasiona, przycina drzewa i usuwa chwasty. Wanie w fazie dojrzewania wysiki ogrodnika s najpotrzebniejsze, cho najbardziej mczce. Powiedzenie Nawet najpikniejsza ra kiedy widnie", doskonale oddaje fakt, e to, co na pocztku byo ekscytujce i nowe, zmienia si pniej w rutyn i nud. Na etapie dojrzewania wirtualna spoeczno podejmuje decyzj, czym chce zosta w przyszoci.

ap 3. Przedefilowanie i dojrzao
Wraz ze wzrostem siy wirtualnej spoecznoci webmaster powinien zbada, czy niezbdne jest przedefiniowanie strony. Przykadowo jeli zaoeniem strony miao by zrzeszanie mionikw joggingu, ktrzy wymienialiby si informacjami na temat butw do biegania, a wikszo odwiedzajcych wymienia informacje na temat najbardziej malowniczych tras, wtedy przedefiniowanie witryny ma sens. Moesz nawet chcie zmieni wygld strony, aby lepiej odpowiadaa ona zamieszczonym treciom, co w przypadku Joomla! nie jest wyzwaniem, biorc pod uwag atwo zmiany szablonw. By moe temat strony, ktry dotychczas sugerowa surowy profesjonalizm, naley ociepli, aby zwrci uwag na przyjazy ton komunikacji midzy czonkami spoecznoci lub vice versa. Zmiana wiodcego tematu strony nie musi oznacza porzucenia pierwotnego zaoenia (chocia moe). Czciej oznacza to jednak zmian priorytetw i powicenie zasobw tym obszarom, ktre odpowiadaj zainteresowaniom odwiedzajcych. Kierujc si przykadem strony o butach do biegania, przedefiniowanie oznaczaoby dodanie galerii, ktra umoliwiaaby uytkownikom dzielenie si zdjciami najbardziej malowniczych cieek. Dodatkowo mona by wprowadzi podzia na kategorie odpowiadajce rnym miejscom, aby odwiedzajcy mogli wstawia cieki w swojej okolicy. Nie ma prostej reguy, aby sprawdzi, czy strona wymaga przedefiniowania, ale istniej pewne specyficzne wskazwki, ktre sugeruj, kiedy naley dokona przedefiniowana. Przykadowo wybierz dat lub inne ramowe ograniczenie, a nastpnie przeanalizuj dokadnie dziennik i inne rda, aby zbada, co najbardziej interesuje uytkownikw. Przeznacz na analiz wystarczajco duo czasu, poniewa jest ona kluczowa dla wyznaczenia kierunku dalszego rozwoju strony. Po przeprowadzeniu przedefiniowania, kiedy masz ju stabiln spoeczno, regularnych uytkownikw dodajcych treci, przyszed czas, aby zastanowi si, jak lepiej moesz suy swojej spoecznoci. W tym momencie wiesz ju, kto odwiedza Twoj stron, na ktrych dodajcych moesz polega. Na tej podstawie moesz okreli, w jaki sposb wzbogaci ich dowiadczenia, a jeli strona stanowi przedsiwzicie komercyjne, jak zarobi na jej popularnoci. Aby podj odpowiednie dziaania, naley oceni ponisze elementy: Powizane tematy lub produkty Czy Twoja strona powicona butom do biegania moe suy take jako szczerze rdo informacji na temat fitenssu? Czy moe mgby umieszcza oglne informacje na temat dostatniego stylu ycia? Nie zapominaj, e nowe funkcje powinny by dodatkami. Wirtualna spoeczno

246

Joomla!. Profesjonalne tworzenie stron WN 1W moe atwo ulec samozniszczeniu, jeli stanie si zbyt oglna lub jeli znikn powody, ktre przycigny do niej ludzi. Udana strona skierowana do ludzi profesjonalnie uprawiajcych jogging nie jest miejscem dla pocztkujcych, ktrzy nie odrniaj pmaratonu od maratonu. Specjalne dziaania i oferty grupowe Kada wsppracujca grupa ludzi dysponuje spor si. Tak si mona wykorzysta na wiele sposb, np. organizujc konferencj, akcj zbierania datkw, zakupw zbiorowych ze znikami lub uruchamiajc kampani pisania listw popierajcych regionalnego polityka. Powiniene myle w kategoriach zarwno tego, co przyniesie korzy czonkom danej grupy (np. zakup duej iloci jakiego produktu), jak i tego, co bdzie miao pozytywny wpyw na ca spoeczno (np. zbieranie funduszy na szybszy serwer). Korzystajc z rozszerze Joomla!, takich jak forum czy ksiga goci, moesz okreli, czy uytkownicy byliby zainteresowani takim programem. Ukierunkowana reklama Wikszo stron zawiera jaki typ reklam, np. bannery, programy partnerskie lub odnoniki do produktw sprzedawanych przez internet. Dziki komponentowi Banner zarzdzanie kampani reklamow nie jest wyzwaniem, a wiele stron przytacza odwiedzajcych reklamami. Na kadej witrynie dostpna jest tylko ograniczona ilo miejsca na reklamy, jej przekroczenie sprawia, e staj si one nieatrakcyjne i zaczynaj odstrasza uytkownikw. Oce reklamy pojawiajce si na stronie pod ktem atrakcyjnoci i generowanych zyskw. Jeli banner prowadzi do spowolnienia adowania strony i praktycznie nie przekada si na zysk, to czy strona nie zyska na usuniciu tej reklamy? Jeli maa reklama powoduje due przychody, moe warto przenie j w bardziej widoczne miejsce. Oprcz oceniania obecnych partnerw mdre byoby take rozejrzenie si w poszukiwaniu nowych dostawcw i nowych moliwoci, ktre bardziej odpowiadayby celom Twojej strony.

Znaczenie stabilnoci i regularnoci


W przypadku kadej tradycyjnej strony WWW wana jest stabilno. Dla wirtualnych spoecznoci jest ona krytyczna. Jeli witryna spenia swj cel, staje si miejscem, gdzie odwiedzajcy komunikuj si i cz z innymi. Brak dostpu do strony spowoduje frustracj uytkownikw, ktrzy mog poczu si odcici od innych. Jeli dostp do strony jest czsto zakcany, wielu uytkownikw moe stwierdzi, e nie chce ju z niej korzysta. Prawie tak wane, jak utrzymywanie uytkownikw szczliwymi, jest dotrzymywanie obiecanych terminw. Jeli na stronie jest informacja, e nowe artykuy pojawiaj si w kady wtorek, to nowe artykuy musz by dodawane co wtorek. Internet jest peen opuszczonych stron lub stron widm" zawierajcych komunikat, e strona zostanie uaktualniona w przyszym tygodniu z dat sugerujc, e wiadomo opublikowano kilka lat temu. Jeli istnieje ryzyko, e uaktualnienia na stronie bd pojawia si nieregularnie, nie obiecuj adnych terminw, aby nie podwaa swojej wiarygodnoci. Joomla! zawiera fantastyczn funkcj, ktra pomaga zapobiega niedotrzymywaniu terminw: dat rozpoczcia publikacji. Dla kadego artykuu moesz okreli dat, kiedy zostanie on opublikowany (a take dat, kiedy jego publikacja powinna zosta zakoczona). Jeli nie jeste pewien, czy dotrzymasz term inw, uatw sobie ycie

Rozdzia 10. Budowanie spoecznoci w Joomla!

247

i dodaj kilka artykuw, zanim ogosisz, e strona zawiera funkcje takie jak newsetter czy regularnie uaktualniany dzia. Moesz wstawi wszystkie przygotowane artykuy za jednym zamachem, a ich dat publikacji ustawi w przyszoci. Nie tylko bdziesz do przodu (zapobiegajc w ten sposb przekroczeniom terminw), ale take zabezpieczysz si na wypadek nagych sytuacji, aby nie wpyway negatywnie na odbir strony.

laczego warto stworzy wirtualn spoeczno


Biorc pod uwag wszystkie trudnoci zwizane z prowadzeniem wirtualnej spoecznoci (gwnie w zakresie powicanego czasu i pracy), sensowno przedsiwzicia moe si wydawa wtpliwa. Tak nie jest, nie prbuj zniechci Ci do budowania wirtualnych spoecznoci, staram si tylko uwiadomi Ci, jakie wyzwania napotkasz, jeli zdecydujesz si na zrealizowanie takiego przedsiwzicia. Im wiksza jest Twoja wiedza na temat przyszych wyzwa przez podjciem prby stworzenia wirtualnej spoecznoci, tym wiksza szansa na to, e bdziesz gotw zmierzy si z trudnociami i pokonasz je. Prawdopodobiestwo fiaska przy le przeprowadzonym budowaniu wirtualnej spoecznoci jest duo wiksze ni przy implementacji kiepskiej strony WWW. Odwiedzajcy stron WWW nadal bd na ni wchodzi w poszukiwaniu informacji, ktre zawiera, podczas gdy nieudana spoeczno internetowa bdzie przypomina miasto duchw" odwiedzane przez niewielu turystw. Budowanie spoecznoci ma pewne wady, ale take i zalety ich lista jest znaczca: Stworzenie rosncej grupy odbiorcw Wszystko wskazuje na to, e w przyszoci wirtualna spoeczno bdzie si rozrasta. Jeli spoeczno osignie pd przypominajcy MySpace.com lub YouTttbe.com, bdzie to oznaczao, dosownie, miliony odwiedzajcych, dodajcych nowe treci. Twoja spoecznoci nie musi jednak siga gwiazd, aby zdoby sukces. Po przekroczeniu pewnego punktu zaobserwujesz wzrost wykadniczy. Dugie wizyty na stronie W przeciwiestwie do charakteru krtkich przystankw", typowego dla wikszoci wizyt na stronach WWW, czonkowie wirtualnych spoecznoci spdzaj na stronach wiele godzin. Jest to okazja do zdobycia lojalnoci uytkownikw i jednoczenie lepszego dopasowania reklam. W handlu istnieje stara zasada klient musi napotka produkt siedem razy, zanim zapozna si z nim na tyle, aby go kupi. Dugie wizyty na stronie sprzyjaj zapoznawaniu si z promowanymi produktami. Moliwoci marketingu grupowego Poniewa uytkownicy samodzielnie nakrel swoje zainteresowania przez treci, ktre dodaj na stronie, istnieje wiele okazji, eby oferty dobra dokadnie do nich. Ma to szczeglne znaczenie, jeli chodzi o sprzeda produktu lub usugi, ktre s bezporednio zwizane z tematyk witryny. Dziaania takie mog wzmocni wizerunek strony jako witryny bezporednio zwizanej z danym obszarem zainteresowa. Bezporednifeedback W przeciwiestwie do tradycyjnej strony WWW, gdzie dane na temat aktywnoci odwiedzajcych mona czerpa wycznie z dziennikw, wirtualne spoecznoci maj funkcj natychmiastowego komunikatu zwrotnego od uytkownikw zainteresowanych dan czci strony.

248

Joomla!. Profesjonalne tworzenie stron WN 1W

Skupienie na okrelonych treciach Wikszo wirtualnych spoecznoci dysponuje specjalistycznymi informacjami na wysokim poziomie. Tworzcy j ludzie s czsto profesjonalistami (lub pretenduj do tego miana), dlatego zamieszczane informacje stanowi kopalni wiedzy na dany temat. Lojalno odwiedzajcych Tradycyjna strona WWW ma sab si przycigania. Jeli webmaster przestanie dodawa atrakcyjne informacje, strona szybko upadnie, a ludzie przestan j odwiedza. Wirtualne spoecznoci funkcjonuj przez dugi czas, nawet jeli zostan pozostawione same sobie. Poytek spoeczny Niezalenie od elementu spajajcego spoeczno jest ona w znaczcej czci dobra". Wikszo spoecznoci czy ludzi o podobnych zainteresowaniach i uatwia im wymian informacji.

Technologie wirtualnych spoecznoci


Strona spoecznociowa nie dziaa w oparciu o pojedyncz technologi. Prawd mwic dostpna jest ogromna liczba rnych rozszerze Joomla!, ktre umoliwiaj dynamiczn komunikacj uytkownikw na stronie, np.: ksiga goci, czat, forum, sonda, komentarze, sieci spoeczne, kalendarz wydarze, systemy wiki.

Powysze technologie mona czy i miesza, aby uzyska moliwie najlepszy efekt. Joomla' to doskonaa podstawa dla tych funkcji, poniewa jest spoiwem w obszarze administracji i wsplnej bazy uytkownikw. Rozszerzenia szczeglnie obciajce baz danych (np. forum) naley dokadnie monitorowa, aby dostosowa konfiguracj serwera baz danych w celu uzyskania najwyszej wydajnoci. Wirtualna spoeczno zawsze bdzie znajdowa si w fazie prace w trakcie", dlatego nie boj si dodawania nowych funkcji, ktre mgby pniej usun, poniewa s nieuywane Jeli wystarczajca liczba uytkownikw bdzie zgasza pretensje z powodu wyczenia funkcji, ktra wydawaa Ci si mao popularna, moesz ponownie wprowadzi j na etapie przedefimowama, aby da odwiedzajcym to, czego szukaj. Kolejne podrozdziay zawieraj opis jednego lub wicej rozszerze dla kadej funkcji charakterystycznej dla witryny spoecznociowej: ksigi goci, czatu, forum, sondy, komentarzy sieci spoecznych, kalendarza wydarze i systemw wiki. Na moim serwerze testowym nic

Rozdzia 10. Budowanie spoecznoci w Joomla!

249

stwierdzono konfliktw midzy rozszerzeniami, tzn. instalacja jednego nie kolidowaa z innymi. Dlatego moesz dowolnie miesza i d o p a s o w y w a przedstawione aplikacje.

siga goci
Ksiga goci to jedna z najstarszych form komunikacji na stronach internetowych. Umoliwia ona odwiedzajcym umieszczanie komentarzy i komplementw odnonie do treci na stronie. (Samodzielnie utworzye m a aplikacj o b s u g u j c ksig goci w rozdziale 6.). Koszt czasu i energii niezbdny do implementacji ksigi goci jest niewielki, i taki te jest j e j efekt w p o b u d z a n i u spoecznoci. Dlatego ksiga lepiej s p r a w d z a si w charakterze dodatku d o tradycyjnej strony W W W ni j a k o element witryny spoecznociowej. Dwa najpopularniejsze rozszerzenia ksigi goci dla Joomla! to Easybook i Jambook. Poniewa zarwno idea, jak i implementacja ksigi goci jest cakiem prosta, oba rozszerzenia o f e r u j podobn funkcjonalno. Twj wybr bdzie prawdopodobnie zalee gwnie od tego, ktre rozszerzenie wizualnie lepiej pasuje do reszty strony.

asybook
Pokazany na rysunku 10.1 Easybook to doskonay, prosty k o m p o n e n t ksigi goci. J e d n z najlepszych f u n k c j i jest r o z b u d o w a n a o c h r o n a przed s p a m e m , z a s t o s o w a n i e o b r a z k w C A P T C H A i potwierdzenia wysyanego pod adresem e-mailowym oraz filtr sw. List zabronionych sw mona zdefiniowa w interfejsie administratora, moliwe jest take powiadamianie administratora o prbie wysania wiadomoci zawierajcej zabronione sowa. Easybook mona rwnie tak skonfigurowa, aby po dodaniu wiadomoci zosta w y s a n y list z daniem potwierdzenia pod p o d a n y m adresem e - m a i l o w y m , w przypadku braku potwierdzenia wiadomo zostanie zignorowana. ysunek 10.1. Vpis w aplikacji 7.asybook moe awiera kilka np. imi nazwisko Majcego) ub cakiem sporo il (np. e-mail, lumer ICQ, adres trony WWW), v zalenoci id decyzji administratora
Moja Ksiga Goci
Heine Joomki! uveiview Joomla' License Moie .iboii Joomla* FAO The News Web Links News Feetls fyloj.i Ksiga Goci

Jan Kowalski

30 listopad 2 0 23m i 08

Musz zaglda tuaj czciej

Jan Kowalski

listopad 2003 23.48 1

1 Extei$ions 1 Coirteni Ltyoirts 1 Example Pages

Ta ksiga jest jeszcze lepsza od poprzedniej!

2 Entries in guestbook

Easybook zawiera obsug z n a c z n i k w B B C o d e , ktre u m o l i w i a j f o r m a t o w a n i e tekstu (pogrubianie, pochylanie itd.). Dodawanie wpisw mona ograniczy, pozwalajc na to w y cznie zarejestrowanym u y t k o w n i k o m , lub udostpni a n o n i m o w e wpisy. W zalenoci od ustawie w e wpisach m o g si pojawia take emotikony i inne obrazki. Easybook pozwala na wysyanie e-maili z podzikowaniem do u y t k o w n i k w dodajcych wpisy.

250

Joomla!. Profesjonalne tworzenie stron WN 1W


Bogate opcje konfiguracyjne w interfejsie administratora pozwalaj wstawia dodatkowe pola do formularza (np. adres strony W W W , numer I C Q itd.), a take d a j kompletn kontrol nad tym, ktre z dodatkowych informacji bd wywietlane na licie wpisw (zobacz rysunek 10.2). Opcja powiadamiania administratorw powoduje wysyanie wiadomoci informujcych o n o w y c h w p i s a c h , ktre m o g b y z m i e n i a n e , p u b l i k o w a n e , k o m e n t o w a n e , u s u w a n e lub w s t r z y m y w a n e , a w s z y s t k i e te o p c j e m o n a u r u c h o m i , klikajc odnoniki w otrzymanej w i a d o m o c i . Istnieje take f u n k c j a importu a r c h i w u m ksigi goci utworzonej za p o m o c komponentu AkoBook.

Rysunek 10.2. Interfejs administratora Easybook zawiera bogate opcje kontroli wywietlania i zapobiegania spamowi

Backend

Frontend

ecurity

Fielete

i Tools Switch the guestbook frontend offline. Message presented to the frontend users if gi

Guestbook offline: Offline message:

Nie O Tak

Das Gostebuch befindet sich im Wartungsmodus.<br />Bitte versuchen Sie es spoter wieder.

Auto-publish entlies: Notify webmaster : Webmastei s email: Thank you, usei

Nie Tak 0 Nie O Tak


webmaster^domain Nie O Tak

Auto-publish n e w guestbook entries. Notify webmaster w h e n n e w entries are post Email address to send notifications to. Send -Thank You- mail to the user.

Komponent Easybook jest kompatybilny z komponentem czcym Joomla! z Simple Machines F o r u m ( S M F ; z o b a c z p o d p u n k t S i m p l e M a c h i n e s F o r u m ( S M F ) " , aby z d o b y wicej informacji na temat tego rozszerzenia). Dostpny jest take w wielu jzykach, np. niemieckim, niderlandzkim, chiskim uproszczonym, woskim, rosyjskim, greckim, hiszpaskim, francuskim, n o r w e s k i m i duskim 1 . M o e s z zainstalowa rozszerzenie Easybook, pobierajc z poniszej strony archiwum ZIP: http://joomlacode.org/gf/project/easyjooinla/frs/ Po pobraniu w y p a k u j plik readme z a r c h i w u m . D o m y l n i e k o m p o n e n t wywietlany jest w j z y k u n i e m i e c k i m , aby z m i e n i go na angielski, musisz skorzysta z angielskiego deskryptora X M L i stworzy archiwum komponentu na nowo. Aby to zrobi, wypakuj wszystkie pliki z archiwum, nastpnie zmie nazw z easybook.xml na easybook.xmlde, a easybook. xmlen zmie na easybook.xml. Teraz utwrz archiwum zawierajce wszystkie pliki komponentu 2 .

W najnowszej wersji rozszerzenia jest to tylko sze jzykw (niemiecki, angielski, hiszpaski, wgierski, holenderski i rosyjski). W internecie mona znale polskie tumaczenie Easybook 1.2 p r z y p . tum. Te informacje odnosz si wycznie do komponentu Easybook dla Joomla! w wersji 1.0. W nowszej wersji poprawiono t niedogodno przvp. tum.

Rozdzia 10. Budowanie spoecznoci w Joomla!

251

Po zainstalowaniu k o m p o n e n t u m u s i s z d o d a p o z y c j m e n u p r o w a d z c d o ksigi goci. N o w e wpisy mona dodawa za porednictwem czci f r o n t o w e j lub administracyjnej. Jeli klikniesz odpowiedni odnonik, zostanie wywietlony formularz dodawania wpisu (zobacz rysunek 10.3). Jedynymi w y m a g a n y m i polami s Name ( T w o j e imi i nazwisko) i E-mail (Twj adres e - m a i l o w y ) . Na rysunku w i d a take, e n o t o w a n y jest adres 1P k o m p u t e r a , z ktrego dodawany jest wpis. sunek 10.3. rmularz ^dawania <wego wpisu istpy jest rwno w czci ntowej, jak \dministracyjnej, i edyne magane pola Name i E-mail Moja Ksiga Goci - Sign guestbook
Home Joi>inl. overview i i i . m i l . i! L i c e n s e M o i e atoirt J o o m l a ! FAO The N e w s Wtti Links N e w s Feeds M o j . i Ksie<io G o c i IP addressName E-mail Show e-mail Homepage Lot ation !CQ number AIM nickname MSN m e s s e n g e r Yahoo m e s s e n g e r Skype nickname Website rating Guestbook entrf i (5 - Best rating, 1 - Worst rating) public Jan Kowalski kowal@o2.pl

Si

@@@
Submit entty

Chocia Easybook jest bardzo popularnym rozszerzeniem, ktrego instalacja i konfiguracja nie nastrczaj trudnoci, niektre strony w y m a g a j wikszej kontroli wygldu ksigi goci. Rozszerzenie Jambook umoliwia t a k kontrol dziki zastosowaniu systemu szablonw.

imbook
Jambook (zobacz rysunek 10.4) naley do najpopularniejszych k o m p o n e n t w dodajcych f u n k c j ksigi goci ze wzgldu na nacisk na ochron przed s p a m e m , moliwo importu wpisw AkoBook, a take zaawansowany interfejs administratora. Potny system szablonw pozwala wpywa na kady aspekt warstwy prezentacji czci f r o n t o w e j . Szablony m o n a edytowa z poziomu interfejsu administratora, co umoliwia d o p a s o w a n i e w y g l d u komponentu do szablonu strony. Poniej wymieniono niektre zabezpieczenia z ich dugiej listy: generowanie obrazkw C A P T C H A ; blokowanie adresw IP ma zapobiec naduyciom ksigi goci; integracja z systemem logowania Joomla!;

252

Joomla!. Profesjonalne tworzenie stron WN 1W


Ksiga Go
Lista wpisw SZU kAJ WPISU

Rysunek 10.4. Cz frontowa komponentu Jambook umoliwia wywietlanie i wyszukiwanie wpisw

DODAJ WPIS Ogem w p i s w w ksidze I

p o w i a d a m i a n i e administratora e-mailem o nowych wpisach; konfiguracja usuwania znacznikw H T M L z wiadomoci; ukrywanie adresw e - m a i l o w y c h ; ochrona przed m a s o w y m d o d a w a n i e m wiadomoci; m o d y f i k o w a l n a lista znacznikw H T M L , ktre mona wykorzysta w e wpisach.

Jeli korzystae wczeniej z rozszerzenia Easybook, J a m b o o k m o e zaimportowa wpisy utworzone w tamtej aplikacji. Nowe wiadomoci m o g by wprowadzane za pomoc aktualnie ustawionego edytora W Y S I W Y G lub w formie zwykego tekstu, ale formatowanie tekstu nie jest wtedy dostpne. Przycisk Podgld umoliwia sprawdzenie, jak wiadomo bdzie si prezentowa na stronie, przed ostatecznym dodaniem j e j do bazy. Zarejestrowani uytk o w n i c y s y s t e m u J o o m l a ! m o g p r z e z o g r a n i c z o n y czas, ustalony przez administratora, zmienia tre swoich wypowiedzi. K o m p o n e n t zawiera take f u n k c j chronic przed nieu m y l n y m p o d w j n y m d o d a w a n i e m tej s a m e j w i a d o m o c i co j e s t czsty p r o b l e m e m w przypadku niewprawionych uytkownikw ksigi goci. Jambook dostpny jest w wielu jzykach, m.in. angielskim, niemieckim, francuskim, portugalskim, serbskim (aciski zestaw znakw), norweskim i polskim. Ma take funkcj wyszukiwania w p i s w pod ktem w p r o w a d z o n e g o tekstu. Rozszerzenie Jambook mona pobra na stronie: www.jxdevelopment.com/jambook Jak pokazano na rysunku 10.5, cz administracyjna rozszerzenia Jambook jest zaskakujco rozbudowana, j a k na tak prost aplikacj. Moliwa jest nie tylko edycja i usuwanie wpisw, ale take m o d y f i k a c j a szablonw H T M L . D o m y l n a instalacja zawiera ponisze szablony, ktrych zmiana w p y w a na wygld komponentu: Show Wywietla pojedynczy wpis Jambook. List Okrela sposb wywietlania listy wpisw. List empty W y g l d listy wpisw, w przypadku gdy adne nie zostay dodane. List item Logika odpowiedzialna za generowanie wydruku poszczeglnych wpisw. Edit item W y g l d formularza edycji wpisu.

Rozdzia 10. Budowanie spoecznoci w Joomla!


unek 10.5. nel kontrolny vbook posiada budowane cje ministracyjne

253

JX<
fSi8P$ W

J a m b o o k Conti ol P a n e l Wpisy
Wywietl wszystkie wpisy z opcjami publikacji, edycji oraz dodawania nowych pozycji.

Wspieraj Jambook
Aby umoliwi dalszy rozwj komponentu, pros wspiera autora dobrowolnymi datkami finansowymi klikaj w poniszy guzik.

Meneder szablonw
Edytuj szablony dla wszystkich stron i e-maili.

Mak A Dijmtian

pi Importuj wpisy B P Importuj wpisy ksigi z zewntrznego rda. Informacje o Jambook

S . o i u '

Przeczytaj dokumentacj, list rzeczy do zrobienia, list zmian oraz licencj.

Konfiguracja Jambook
ZmieVj0144 opcje dla: przegl\u0105dania waciwoci, ustawienia e-mail, wysyania wiadomoci, spamu. Kliknicie na lo<jo komponentu powia.) do Panelu Konti olnego.

Thankyou

Ekran wywietlany p o u d a n y m dodaniu wpisu.

Search Okrela sposb wywietlania strony wyszukiwania. Preview Podgld n o w e g o wpisu.

Dokumentacja komponentu (wraz ze wskazwkami dotyczcymi edycji szablonw) dostpna jest z poziomu interfejsu administratora. Jambook wykorzystuje do generowania obrazkw CAPTCHA funkcje TrueType biblioteki GD2. Dlatego obsuga TrueType musi by dostpna w systemie PHP, aby umoliwi dodawanie wiadomoci. W przeciwiestwie do PHP5 zawiera wbudowan obsug TrueType, w PHP4 trzeba zainstalowa dodatkowy modu.

:at
Pojcie czatu internetowego obejmuje wszystkie formy komunikacji, poczwszy od p o k o j w czatowych, przez nowoczesne implementacje Shoutbox, p o f u n k c j e zwizane z k o m u n i k a torami internetowymi. W ostatnich latach czaty dorobiy si wtpliwej reputacji z p o w o d u czstych naduy zwizanych z wykorzystaniem nieletnich. Nie ma tygodnia bez wiadomoci o przestpcy, ktry wykorzystywa p o k o j e czatowe do zych celw. Chocia wikszo czatw nie jest siedliskiem za, problem jest na tyle znaczcy, e warto p o w a n i e si z a s t a n o w i przed d o d a n i e m takiej f u n k c j o n a l n o c i na stronie. B e z p o r e d n i a komunikacja, typowa dla czatw, stwarza wiksze p r a w d o p o d o b i e s t w o naduycia ni inne technologie, gdzie komunikacja nie jest ciga, a wiadomoci s widoczne dla caego wiata. Powiniene b y w i a d o m p r a w n y c h k o n s e k w e n c j i , jeli j a k a z a " osoba, w y k o r z y s t u j c T w o j stron, dopuci si przestpstwa. Dokadniejsze informacje na temat tego zagadnienia znajdziesz w podrozdziale Odpowiedzialno prawna".

254

Joomla!. Profesjonalne tworzenie stron WN 1W

BlastChat
R o z s z e r z e n i e BlastChat ( z o b a c z rysunek 10.6) to k o m p o n e n t oparty na technologii Ajax, ktry za porednictwem zdalnego serwera (serwera BlueChat) udostpnia opcj czatu. Poniewa Twj serwer wykorzystywany jest wycznie do zainicjowania poczenia, komponent nie obcia zasobw i cza. N a stronie BlastChatu z n a j d u j e si informacja, e j u ponad 14 tysicy stron wykorzystuje t technologi. Oprcz komponentu, ktry odpowiada za dziaanie czatu, do pakietu doczony jest modu, ktry wywietla list dostpnych uytkownikw z odnonikami do ich profili. Rysunek 10.6. BlastChat, dziki technologii Ajax, uaktualnia list wpisw na czacie bez przeadowywania caej strony

O
Home Joomla! wervtey* Joomla! License Moie about J o oni.i! FAO The News Welt Links News Feeds
Mojo Ki.lfM

/News3i P o k o j e ] [C h a t t e r s ][ W e b s i t e s ] i -

Joomla!

localhost/bombla [Chatters] Odwie adasmiauczynskfOOrn]

Goci
Mj Blast ii.it

Odwie i: i priv: Wiadomo:


i Wylij

..V I I Y o i i i Details Liojoilt I i,ii

i fti JS>

S /;,

<5

"
CO

S
i."

~
OT

"

Dwik n

Wszyscy

P o w e r e d by BlastC hat

Pakiet BlastChat m o e s z pobra z poniszej strony: www. blastchat. com

Instalacja k o i n p o n e n t u i m o d u w nie odbiega od s t a n d a r d o w e j p r o c e d u r y , o d b y w a si za p o m o c opcji Rozszerzenia/Instalator. Po zainstalowaniu k o m p o n e n t u BlastChat moesz z poziomu interfejsu administratora doda konto usugi BlastChat. Otwrz ekran konfiguracji rozszerzenia w interfejsie administratora Joomla!, wybierajc opcj Komponenty/BlastChat. A b y uruchomi czat na stronie, musisz najpierw utworzy konto na serwerze, z ktrego korzysta rozszerzenie BlastChat. Ekran konfiguracji komponentu umoliwia przeprowadzanie d a r m o w e j rejestracji. Po zarejestrowaniu si na serwerze BlastChata musisz si zalogowa i ustawi serwer pod k t e m obsugi T w o j e j strony, jak pokazano to na rysunku 10.7. Procedura rejestracji nowej strony umoliwia dodanie j e j do centralnego katalogu BlastChata, co m o e si przeoy na wzrost popularnoci.

Rozdzia 10. Budowanie spoecznoci w Joomla!


unek 10.7. ifiguracja wera stChat wpywa wygld czatu

255

Wehsite Details Name: Abbreviation: URL: Intra id: Private key: Description localhostJjoomla

"b?cd64610a977afd60cfcde96edfbd9b"

"0?eSf4Q1 S5e768bd8ca59d7de1 a70c5d" (Do not share this value! It is used for security purposes) Hj pierwszy czat

Intranet serverAvebsite:

tlil

[.j y e s

BlastChat korzysta z Ajaksa do pobierania w i a d o m o c i na czacie. W rezultacie wywietla zmieniony tekst w oknie czatu bez uaktualniania caej strony. Ekran konfiguracji rozszerzania pozwala okreli rozmiary okna czatu (Width szeroko, Height w y s o k o ) , a take w y m i a r y s a m o d z i e l n e g o okna (Detached Width i Detached Height), o b r a m o w a n i e (Frame Border), szeroko i wysoko marginesw (Margin Width i Margin Height). Warstwa prezentacji opiera si na stylach zdefiniowanych w Joomla!, dlatego wygld czatu powinien dobrze pasowa do reszty strony. Administrator czatu ma nad nim k o m p l e t n kontrol, moe: wysya wiadomoci publiczne (do poszczeglnych uytkownikw i pokoi); usuwa uytkownikw z danego pokoju; blokowa dostp uytkownikom do j e d n e g o pokoju lub kilku; ustawi dugo bana; zablokowa dostp z danego adresu 1P; nadawa innym uytkownikom uprawnienia moderatora.

Interfejs B l a s t C h a t a zosta n a p i s a n y w j z y k u J a v a S c r i p t , a j e g o d z i a a n i e s p r a w d z o n o w przegldarce Mozilla Firefox (wersje 1 i 2), Internet Explorer (wersje 6 i 7), Opera (wersje 8 i 9), a take Netscape (8.1). Komponent BlastChat jest kompatybilny z JoomFish, dlatego obsuguje wszystkie jzyki wspierane przez to rozszerzenie, wczajc w to tekst pisany od prawej do lewej strony.

hat
Komponent utChat, przedstawiony na rysunku 10.8, jest rozszerzeniem zbudowanym w oparciu o skrypt PhpFreeChat, d o s t o s o w a n y do u r u c h a m i a n i a w r o d o w i s k u J o o m l a ! . T e c h n o l o g i a Ajax wykorzystywania jest do odwieania okna czatu bez koniecznoci przeadowania caej strony. utChat jest prost i m p l e m e n t a c j czatu, dostpn w wielu j z y k a c h , a na dodatek nie zuywa wiele z zasobw serwera. Moesz pobra rozszerzenie utChat z poniszej strony: http://video.joomlapl.com/tag/utchal/

256

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 10.8. Komponent utChat wykorzystuje skrypt PhpFreeChat, aby doda do Joomla! obsug czatw

utChat
Joomla!

o n o adasmiauczynski

o
e ii e

O
*

6 > t &

Q
&

|j #
ffi^l 7 </

5
? t"'",' zr. t"! .jma*-! n^s.:-: 1 ^

B / u s @ c

Po z a i n s t a l o w a n i u k o m p o n e n t u u t C h a t z p o z i o m u interfejsu administratora musisz doda pozycj menu czc z czci frontow rozszerzenia. Komponent utChat nie korzysta z bazy danych Joomla! do zapisywania wiadomoci i nickw, tylko przechowuje wszystkie wiadomoci w postaci prostego archiwum. PhpFreeChat (a take, w konsekwencji, utChat) zawiera nastpujce f u n k c j e : Moliwo p r o w a d z e n i a kilku pokoi. Prywatne wiadomoci midzy uczestnikami. Funkcje dla moderatorw (m.in. moliwo usuwania i blokowania uytkownikw). M o d y f i k a c j e za p o m o c arkuszy stylw (CSS). Obsuga d o w o l n e g o jzyka, ktry mona zapisywa i wywietla w postaci kodowania UTF-8. Wsparcie f o r m a t o w a n i a tekstu i e m o t i k o n w za p o m o c BBCode. W a s n y system wtyczek, ktry pozwala na zmian miejsca przechowywania danych (przykadowo mona doda zapisywanie wiadomoci w bazie danych).

Domylna konfiguracja nie okrela domylnie wykorzystywanego jzyka. Po zainstalowaniu komponentu wybierz w interfejsie administratora opcj utChat z menu Komponenty. Zostanie wywietlony edytor, ktry umoliwia m o d y f i k a c j parametrw, jak przedstawiono to na rysunku 10.9. Ustawienia zapisywane s w postaci kodu PHP, ktry jest bezporednio uruchamiany przez rozszerzenie.

Rozdzia 10. Budowanie spoecznoci w Joomla!


sunek 10.9. i nfigu racja zszerzenia 3hat zapisywana ;t w postaci du PHP 'jchamianego zez system
l\Ith: C: xampp.tAdocs joomla administiatoi components com_utchat.admin.utchat.confadv.php

257

ck S u t p a r a m s [ 1 f r o z e n n i.c k ' ]] - TRUE; Jutparams('channeirs'] = i : r a y ( ' P o k o j l ' , 'Pokoj f u r p a r a m s I 1 t h e m e ' ] = 'msn i u t p a r a m s [ ' l a n g u a g e ' 1 = 1 en__US 1 . '( $utparams [ 1 admins 1 ] = aa rr a ;y ( ' admin 1 =>- ' ) ; r r

2'J;

Dodaj ponisz lini, aby ustawi jzyk na a m e r y k a s k o d m i a n angielskiego:


$urparams['language'1 = 'en_US':

K o m p l e t n dokumentacj rozszerzania utChat (a raczej skryptu phpFreeChat) znajdziesz na stronie: www.phpFreeChat. net

irum dyskusyjne
Forum to ogromnie popularna metoda wiadczenia p o m o c y technicznej z a r w n o dla produktw komercyjnych, j a k i open source. Spoeczno Joomla! rozwija si wanie dziki forum (forum.joomla.org), ktre zrzesza programistw i webmasterw Joomla!. Forum Joomla! wykorzystuje do dziaania aplikacj Simple Machines Forum (SMF). rde forw dyskusyjnych naley upatrywa w poprzedzajcych strony W W W systemach BBS. Wraz z rozrostem internetu dyskusje zostay przeniesione na grupy dyskusyjne. Obecnie forum w postaci strony internetowej mona atwo doda d o istniejcej witryny lub systemu Joomla!.

mple Machines Forum (SMF)


Simple Machines F o r u m jest aplikacj (zobacz rysunek 10.10) w y k o r z y s t y w a n na g w n e j stronie Joomla! (www.joomla.org) do prowadzenia forum. Fakt ten wiadczy o j e j w y d a j n y m dziaaniu pod duym obcieniem. Program dostpny jest w ponad 20 jzykach: angielskim, albaskim, arabskim, szwedzkim, kataloskim, perskim, chiskim, fiskim, greckim, japoskim, tureckim, portugalskim, francuskim, niderlandzkim, hiszpaskim, niemieckim, wgierskim, hebrajskim, bugarskim, woskim, tajskim, polskim, rosyjskim, norweskim i mmuskim. S M F nie jest rozszerzeniem Joomla!, to oddzielna aplikacja speniajca zaoenia f o r u m , wykorzystywana na wielu witrynach, w tym na forum.joomla.org. Istnieje jednak moliwo poczenia programu SMF z systemem Joomla! za pomoc specjalnego komponentu. Poniewa

258

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 10.10. Chocia cz frontowa SMF uruchamiana jest w ramach interfejsu Joomla!, to zawiera wasny zestaw tematw, ktre okrelaj jej wygld

General Discussion Feel free to talk a b o u t a n y t h i n g a n d e v e r y t h i n g in this b o a r d .

1 Posts 1 Topics

Last post by Simple Machines in Wlcom to SMF! on Today at 12:17:05 PM

Forum Stats A 1 Posts in 1 Topics by 1 Members. L a t e s t Member: t e s t L a t e s t Post: " W e l l unit- to * , M n " ( Today at 1 2 : 1 7 : 0 5 PM ) View the most recent posts o i the forum. : [More Stats]

S M F z a w i e r a w a s n y s y s t e m wtyczek, dostpnych jest wiele rozszerze, np. galerie, filtry antyspamowe, funkcje uatwiajce pozycjonowanie (SEO), Shoutbox, zarzdzanie reklamami i wiele innych. S M F naley zainstalowa oddzielnie od Joomla!, pakiet mona pobra na poniszej stronie: www.simplemachines.org A b y u m o l i w i i n t e g r a c j ze s t r o n J o o m l a ! , S M F n a l e y u m i e c i w e w n t r z struktury k a t a l o g w J o o m l a ! . J e d n y m ze s k u t e c z n y c h s p o s o b w j e s t u t w o r z e n i e f o l d e r u 1forum w g w n y m katalogu Joomla! i zainstalowanie tam oprogramowania forum. Instalacja SMF p r z y p o m i n a w instalacj J o o m l a ! , u r u c h a m i a n a j e s t przez w p r o w a d z e n i e w przegldarce o d p o w i e d n i e g o adresu, nastpnie kreator przeprowadzi Ci przez proces instalacji. Po zainstalowaniu S M F naley doda komponent czcy, aby umoliwi uruchamianie forum w r a m a c h interfejsu witryny Joomla!. K o m p o n e n t czcy ( S M F Bridge) moesz pobra ze strony: www.simplemachines.org/download/? brie/ges3.

Z w r uwag, e istnieje sporo innych rozszerze, ktre p o z w a l a j poczy S M F i Joomla!. Kade z nich m a swoje w a d y i zalety. Powiniene j e d n a k korzysta z komponentu SMF Bridge, p o n i e w a jest to oficjalne rozszerzenie, stworzone przez programistw S M F co zapewnia tym s a m y m n a j l e p s z kompatybilno. Po zainstalowaniu k o m p o n e n t u czcego m u s i s z s k o n f i g u r o w a go za p o m o c interfejsu administratora, aby w s k a z y w a miejsce instalacji SMF. Wybierz odpowiedni opcj z menu komponenty, eby wywietli ekran konfiguracji zilustrowany na rysunku 10.11. Najwiksze z n a c z e n i e ma parametr Palh to SMF (cieka dostpu do S M F ) , p o n i e w a j e g o poprawne ustawienie jest w a r u n k i e m dziaania poczenia. W pole naley w p r o w a d z i odpowiedni ciek absolutn.

Fireboard
W przeciwiestwie do SMF, ktra jest odrbn aplikacj, Fireboard (poczony z rozszerzeniem J o o m l a b o a r d ) f u n k c j o n u j e j a k o uzupenienie systemu Joomla!. Rozszerzenie przedstawione na rysunku 10.12 zostao napisane z m y l o wykorzystaniu w systemie Joomla!,
3

Oficjalne rozszerzenie SMF Joomla Bridge nie jest ju rozwijane ani dostpne na stronie SMF. Powodem przerwania prac bya niekompatybilno licencji. Wicej infonnacji na http://www.simplemachines.org/ community/index.php?topic=184557 przyp. tum.

Rozdzia 10. Budowanie spoecznoci w Joomla!


sunek 10.11. ) ekranie nfigu racji czci 1ministracyjnej AF Bridge ajduje si opcja 'ath to SMF"
Configuration Path to SMF (absolut): SMF Forum intergration: Use SMF CSS in other pages?: Synchronize Language from Mambo/Joomla to SMF?: i Synch Upgrade C :V:amppV-itdo sljoomlaVorum Wrapped V Yes V No v

259

Create path automatically

&

dlatego nie w y m a g a adnych cznikw. Integracja z systemem jest znaczca zwaszcza w zakresie wygldu i uprawnie uytkownikw. Fireboard bezporednio wykorzystuje listwy kontroli dostpu ( A C L ) Joomla! do zarzdzania uprawnieniami u y t k o w n i k w . sunek 10.12. frontowa omlaboard 'korzystuje :tuainy ablon strony ) stworzenia idobnej ezentacji
-Joomlaboard-Forum
:atriie posty ; ! R e g u l a m i n i i Pomoc szukaj w forum

Forum '' . - i go ty Fol tlili Forum 1 Sample Forum 1 Pobierz nagwki ostatnich p o s t w
Joomlaboard Forum Component i i i Stable T'JJO Shoes M - F a o t o r y Wersja PL Zwiastun .otispam integration b y JoorniaPi.oom T e a m

Tenuity 1

Odpowiedzi

Ost.Ttli |)OST

Pobieiz n a g l o w n ostatnich postw.

C o p y r i g h t 2008 O p e n Source Matters. W s z e l k i e prawa zastrzeone. J o o m l a ! jest w o l n y m o p r o g r a m o w a n i e m d o s t p n y m na licencji G N U G P L .

Fireboard posiada nastpujce f u n k c j e f o r u m dyskusyjnego: nieograniczona moliwo definiowania kategorii i podkategorii; obsuga wielu j z y k w ; system szablonw p o r w n y w a l n y z S M F ; umieszczanie d o d a t k o w y c h funkcji w panelach: n a j n o w s z e wiadomoci, najnowsze wtki, przyklejone tematy i inne; opcja wybierania wasnych ulubionych w t k w przez u y t k o w n i k w ; import danych Joomlaboard; wasna architektura wtyczek, ktra pozwala na integracj z Joomap, tworzenie map stron Google, obsug Joom!Fish, systemw komentarzy i innych; generowanie kanaw R S S i d o k u m e n t w w formacie P D F ; integracja z systemem profili u y t k o w n i k w C o m m u n i t y Buildera; obsuga systemw prywatnych wiadomoci, takich jak ClexusPM i Uddeim.

Moesz pobra komponent Fireboard i p o w i z a n e moduy z poniszej strony: www. bestofjoomla. org

260

Joomla!. Profesjonalne tworzenie stron WN 1W


Po pobraniu komponentu moesz zainstalowa go w tradycyjny sposb, za p o m o c opcji Rozszerzenia/Instalator. Nastpnie d o d a j w Menaderze Menu pozycj czc z komponentem Fireboard. M o l i w e jest take dodanie m o d u w oferujcych takie funkcje, jak wybr t e m a t w , pobieranie i w y w i e t l a n i e n a j n o w s z y c h t e m a t w za p o m o c Ajaksa, ikona szybkiego uruchomienia interfejsu administratora Fireboard, wywietlanie najlepszego i ostatnio zarejestrowanego uytkownika, statystyki f o r u m i inne. Kolejnym krokiem po zainstalowaniu komponentu jest dodanie kategorii i forw, ktre umoliwi u y t k o w n i k o m dostp. Panel kontrolny Fireboard, przedstawiony na rysunku 10.13, pozwala na dostp d o wszystkich funkcji rozszerzenia. Kliknicie przycisku Forum Administration s p o w o d u j e wywietlenie ekranu, gdzie moesz d o d a w a n o w e kategorie.

Rysunek 10.13. Panel kontrolny rozszerzenia Fireboard pozwala na dostp do konfiguracji, zarzdzania uytkownikami i wystanymi plikami oraz do administracji forum

Fireboard - Panel kontrolny


W i t a j m i f o r u m Fii e B o a i d
Dzikujemy za w/br FireBoard jako T w j 3go Forum. N a te stronie moesz prz egida statystyki forum, za po lewej stronie umoliwi C i administracj wszystkimi as pektami forum. N i kadej stronie zn< jdziesz pomoc kontekstowi objaniajc, lak korzysta z dostpnych narzdzi.

\
. . ifiguracja

_ M

<% ipJL 3
Uytkownicy

css 18-

skm
Przegldarka grafik Edytor pliku CSS

Kategorie i fora

Przegldarka plik w

- O Blokowanie Forum

f^yi
Synchronizacja uytkownikw

O
Strona domowa Fireboard

|
Wczytaj przyktedc w e dane

Usu przykadowe dane

Umieszki

(**)
Przelicz statystyki kategorii Rangi

Po klikniciu przycisku New zostaniesz przeniesiony do ekranu tworzenia kategorii. Pozostaw u s t a w i e n i e Item Level na Top Level ( P o z i o m n a d r z d n y ) , a n a s t p n i e w p r o w a d nazw, np. Inwestowanie w nieruchomoci. Zapisz kategori i przejd do tworzenia kolejnej. Tym r a z e m w y b i e r z z listy Item Level k a t e g o r i , k t r p r z e d c h w i l u t w o r z y e , a nastpnie wprowad tytu forum. Uytkownicy bd mogli teraz dodawa wiadomoci na utworzonym forum.

Sondy
Sondy m o g by doskonaym dodatkiem, jeli wirtualna spoeczno zostaa uruchomiona. Niektrzy spord o d w i e d z a j c y c h z a g o s u j tylko p o to, aby zobaczy wyniki sondy. Jeli j e d n a k wirtualna s p o e c z n o j e s t j u silna, s o n d y m o g b y d o s k o n a m e t o d poznania opinii uytkownikw. M o g suy take za rdo informacji i opinii spoecznoci na rne tematy take na temat strony.

Rozdzia 10. Budowanie spoecznoci w Joomla!


System o b s u g i sond j e s t , o c z y w i c i e , d o m y l n i e d o c z o n y d o J o o m l a ! . R y s u n e k zawiera fragment strony, na ktrej z n a j d u j e si sonda. ysunek 10.14. Umylne pytanie ' sondzie ystemu Joomla! otyczy astosowa oomla!
W e l c o m e to the Frontpage Polls

261
0.14

Welcome to Joomla!

&

Joomla! is used for? 0 O Community Sites Public Brand Sites eCommerce Blogs Intranets Photo and Media Sites All of the Above!

Joomla! is a free open source fi amewoik and content publishing system designed toi quickly ci eating highly interactive multi-language Web sites, online communities, media paitis, hloys and eCo applications. Joomla! provides an easy-to-use graphical user interface that versti 1.5 simplifies the management and publishing of large volumes of content including HTML, Powered by

0 0 0 Q O

M Joomla!

G o s u j J I Wyniki

Who's

Online

Moesz skorzysta take z innych rozszerze, ktre m a j wicej funkcji i o f e r u j w i k s z elastyczno. Modu sondy doczony jest take do pakietu S M F , ktry miae o k a z j zainstalowa wczeniej. Aby doda sond w aplikacji SMF, kliknij przycisk Add Poll z panelu administratora S M F . Zostanie wywietlony ekran tworzenia sondy (co przedstawiono na rysunku 10.15). M o e s z doda dowoln liczb odpowiedzi, skonfigurowa czas trwania sondy, a take wstawi k o m u nikat opisujcy p o w o d y j e j uruchomienia. ysunek 10.15. )odanie sondy ' programie SMF ?st tak proste jak wysanie nowej wiadomoci a forum
Post n e w poll S u b j e c t : ;Miejsce spotkania Message icon: Question: Standard v, .;>'

Gdzie najlepiej SI spotka? O p t i o n 1: Kawiarnia O p t i o n 2: Park miejski Option 3: Gra w. Jerzego O p t i o n 4: O p t i o n 5: j ( Add Option)

.. Options:

Po11

. .. 1 Maximum votes per user.


Run the poll for days, (leave blank for no limit) Eli Allow user to change vote, Show the poll's results to anyone.

W panelu a d m i n i s t r a t o r a S M F m o l i w e j e s t u s t a w i e n i e w i e l u d o d a t k o w y c h p a r a m e t r w i funkcji sond. Jedn z zalet uruchamiania sond w S M F jest ich bliskie powizanie z tematem forum dyskusyjnego. Skoro prbujesz zgromadzi na swojej stronie z a a n g a o w a n spoeczno, to czy istnieje lepszy sposb pozyskania opinii u y t k o w n i k w ni umieszczenie sondy w miejscu, gdzie dyskutowane s sporne tematy. Sondy utworzone w programie S M F pojawiaj si na licie tematw (zobacz rysunek 10.16) w dziale, w ktrym zostay umieszczone. Po klikniciu odnonika p r o w a d z c e g o d o sondy wywietlany jest formularz umoliwiajcy oddanie gosu zamiast wprowadzenia wiadomoci. Do p o p r a w n e g o dziaania sond niezbdne jest wczenie obsugi ciasteczek w przegldarce, poniewa modu sondy wykorzystuje je, aby zapobiec wielokrotnemu gosowaniu przez tego samego uytkownika w j e d n e j sondzie.

262

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 10.16. Sonda wywietlona w interfejsie forum SMF

Poll Question: Gdzie najlepiej si s p o t k a ? O Kawiarnia 0 Park miejski Gra w. Jerzego


y i e w Lock resu|t>;

voting Edit Pol!

1 Submit Vote I : previous next Pages:[1]

Administrator Newble Posts-i

test

Miejsce spotkania

o n : T o d a y at 0 6 : 2 5 : 2 5 PM

_ A t u i
L J :

teRmo aaa
M &

'

kkkkk

'

Prosz o d d a w a gosy, gdzie c h c i e l i b y c i e s p o t k a si z r e s z t uytkownikw forum

R e p o r t to m o d e r ator

37.206.22.160

Pages:[1]

Komentarze
Komentarze to szczeglnie e f e k t y w n a metoda b u d o w a n i a spoecznoci. Nie w y m a g a j dod a w a n i a t e m a t w na f o r u m , ktre nie d a j p e w n o c i , czy d o c z e k a m y si odpowiedzi, ale j e d n o c z e n i e u m o l i w i a j wysyanie opinii i dzielenie si wraeniami na temat okrelonych treci umieszczonych na stronie. Przeogromna liczba udanych stron zawiera funkcj komentowania. Niektre witryny (np. epinions.com) nie zawieraj wielu artykuw gwn tre stanowi opinie uytkownikw. Komentarze staj si coraz popularniejsz funkcj na wszystkich wielkich stronach. Niektre z nich to Onet.pl, Wp.pl, Gazeta.pl. Implementacja rozszerzenia A k o C o m m e n t lub JoomlaComment umoliwi odwiedzajcym dodawanie komentarzy pod k a d y m artykuem. Wczenie funkcji k o m e n t o w a n i a oznacza nie tylko udostpnienie platformy dla konstruktywnej krytyki, pozwala take o d w i e d z a j c y m na uzupenianie treci artykuu d o d a t k o w y m i i n f o r m a c j a m i i odnonikami.

AkoComment Tweaked Special Edition 1.4.6


J e d n y m z najpopularniejszych s y s t e m w komentarzy jest rozszerzenie A k o C o m m e n t . Warstw prezentacji s t w o r z o n o , k o r z y s t a j c z arkuszy stylw, co p o z w a l a w e b m a s t e r o w i na d o w o l n e d o p a s o w y w a n i e w y g l d u komentarzy. Rozszerzenie A k o C o m m e n t zawiera nastp u j c e funkcje: d o d a w a n i e komentarzy z f o r m a t o w a n y m tekstem; tworzenie kanaw R S S zawierajcych n a j n o w s z e komentarze; p o w i a d a m i a n i e administratora o n o w y c h komentarzach; obsuga szablonw, co przekada si na bogate moliwoci dopasowywania wygldu; ograniczanie liczby komentarzy pod k a d y m artykuem;

Rozdzia 10. Budowanie spoecznoci w Joomla!

263

definiowanie minimalnego czasu midzy komentarzami d o d a w a n y m i przez tego samego uytkownika;

opcjonalne powiadamianie uytkownika o kolejnych komentarzach; generowanie obrazkw C A P T C H A , ktre z a p o b i e g n spamowi; integracja z profilem uytkownika w systemie C o m m u n i t y Builder.

Aplikacja dostpna jest w wielu jzykach: angielskim, brazylijskim, portugalskim, chiskim, czeskim, fiskim, francuskim, niemieckim, greckim, wgierskim, indonezyjskim, woskim, norweskim, polskim, rosyjskim, sowackim, hiszpaskim i tureckim. Podczas dodawania komentarza mona w p r o w a d z i d o d a t k o w o adres e-mailowy i adres strony d o m o w e j uytk o w n i k a ( z o b a c z r y s u n e k 10.17), a a d m i n i s t r a t o r m o e z a d e c y d o w a , czy te d o d a t k o w e informacje b d wywietlane obok komentarzy. suneK 10.17. ygld <oComment st jednoczenie zyjazny profesjonalny Write Comment
p l e a s e k e e p the topic of m e s s a g e s relevant to the subject of t h e article. P e r s o n a l v e r b a l a t t a c k s will b e d e l e t e d , P l e a s e d o n ' t u s e c o m m e n t s t o p l u g y o u r w e b s i t e , S u c h m a t e r i a l will b e r e m o v e d . J u s t e n s u r e t o * R e f r e s h * y o u r browser for a new security c o d e t o b e d i s p l a y e d prior to

clicking code,

on the 'Send' button. K e e p i n m i n d t h a t t h e a b o v e p r o c e s s o n l y a p p l i e s if y o u s i m p l y e n t e r e d t h e w r o n g s e c u r i t y

Name: E-mail Homepage Title: BBCode: Comment:

Jan Kowalski

s u m ( a E l i a is e s
Wspaniaa strona, pozdrawiam jej autorw

# w c* a #

Code:*
i 1 i wish t o b e c o n t a c t e d by e m a i l r e g a r d i n g a d d i t i o n a l coir m e n t

Send

Formatowanie tekstu moliwe jest dziki zastosowaniu znacznikw BBCode, prostego jzyka, podobnego do HTML. Znaczniki umieszcza si w nawiasach kwadratowych: [b] o d p o w i a d a pogrubieniu (ang. bold), [i] pochyleniu tekstu (ang. itali), a [u] podkreleniu (ang. underline). Dodatkowo obsugiwane s wypunktowane listy, emotikony i wprowadzanie tekstu w dowolnym jzyku obsugiwanym przez Joomla!. A k o C o m m e n t moesz pobra na: www.visualclinic.fi" Pakiet A k o C o m m e n t skada si z wtyczki (bot_akocomment_SE.zip), k o m p o n e n t u (com_ akocomment_SE.zip) i dwch moduw (mod_ac_lastcomments.zip i mod_ac_mostfavowed. zip). Wtyczka p o w o d u j e wywietlanie odnonika Komentarzy (x) pod k a d y m artykuem, przy czym litera x odpowiada liczbie dodanych komentarzy. Kliknicie tego odnonika powoduje uruchomienie komponentu.

264

Joomla!. Profesjonalne tworzenie stron WN 1W


Interfejs administratora, z i l u s t r o w a n y na rysunku 10.18, u m o l i w i a d o k a d n e ustawienie opcji zwizanych z ukadem strony i d o d a w a n i e m nowych wiadomoci. Obecna jest take f u n k c j a zgaszania, dziki czemu uytkownicy m o g i n f o r m o w a administratora Joomla! o obraliwych lub spornych komentarzach.

Rysunek 10.18. Interfejs administratora AkoComment umoliwia konfiguracj procesu dodawania i wywietlania komentarzy

TUJEflKED SPECIAL EDITION

General

Layout

Postinq

Notification

Reports ; Favoured

Template With individual botcommand {moscomment} you can choose we not for every content item individually. Using the second option comments on/off for complete sections. If you use second operating mode, you can choose here which comment system. Multiple selections are possible.

Main O p e i atiiuj M o d e :

HI
Sections available :

About Joomla! fiSMHH

Aiito|>til>lish C o m m e n t s : Anonymous Comments: Foi l e g i s t e i e d u s e i s : s h o w n a ni e oi useiname ? Comment Window :

O Nie Tak

Automatically publish new comments? Allow unregistered users to post comments?

Nie

Tak

|^pfii||||||||| Username Choose where to open the comments. Open in new window

S h o w c o m m e n t s o n Ai chives :

Nie Tak

S..J enabled add new comment on archive item

AkoComment Tweaked Special Edition www.visualclinic.fr v.1.4.6 Based on AkoComment v.2 Copyright 2004 by Arthur Konze - w w w rnamboportal corn

Praktycznie wszystkie elementy systemu komentarzy mona ustawi, dopasowujc dostpne parametry lub m o d y f i k u j c szablon. Do parametrw wywietlania nale Autolimit num of comments to display (Automatycznie ograniczaj liczb wywietlanych komentarzy), Num of comments per page (Liczba komentarzy na stronie), Show favoured link (Wywietlaj prom o w a n y odnonik), Show quote this article in website link (Pokazuj odnonik do cytowania treci artykuu), Show hits/view (Wywietlaj liczb odson), Show print link (Pokazuj odnonik uruchamiajcy drukowanie), Show send Email link (Wywietlaj odnonik do powiadamiania znajomych przez e-mail), Show read more link (Pokazuj odnonik Czytaj wicej"). Dostpna j e s t o p c j a w y w i e t l a n i a listy k o m e n t a r z y w oparciu o arkusze stylw lub w postaci tabeli HTML.

JoomlaComment
K o m p o n e n t !JoomlaComment, przedstawiony na rysunku 10.19, dodaje na stronie funkcje komentowania z wykorzystaniem technologii Ajax. Umoliwia take importowanie komentarzy rozszerzenia AkoComment. Rozszerzenie J o o m l a C o m m e n t zawiera nastpujce funkcje: interfejs systemu komentarzy opiera si na technologii Ajax, dlatego nie jest w y m a g a n e p r z e a d o w y w a n i e caej strony; obsuga obrazkw; awatar uytkownika; cytowanie innych komentarzy;

Rozdzia 10. Budowanie spoecznoci w Joomla!


sunek 10.19. frontowa lomlaComment ;t bardzo zejrzysta

265

i Nick: | E-mail: | Strona www. i Tytu. [ UBBCode: B Z U nie powiadamiaj *

fi

-kolor-

-rozmiar-

"

e @ OiD

>

[ Wylij |

formatowanie tekstu i emotikony, obsuga B B C o d e ; integracja z profilami i awatarami w systemie C o m m u n i t y Builder; dostpno w wielu jzykach: angielskim, sowackim, czeskim, woskim, niemieckim, norweskim, hiszpaskim, tureckim, greckim, wgierskim, perskim, bugarskim, macedoskim, niderlandzkim, brazylijskim i portugalskim.

Podobnie jak w wikszoci z a a w a n s o w a n y c h k o m p o n e n t w p o z w a l a j c y c h na d o d a w a n i e treci przez uytkownikw, take w I J o o m l a C o m m e n t w b u d o w a n o f u n k c j e chronice przed spamem: generowanie obrazkw C A P T C H A ; blokowanie u y t k o w n i k w ; lista cenzurowanych sw; ograniczenia dugoci wpisu.

U o o m l a C o m m e n t moesz pobra na poniszej stronie: http://joomlacode.org/gf/project/joomagecomment/frs/ Podobnie jak wikszoci komponentw, instalacja UoomlaComment odbywa si za p o m o c opcji Rozszerzenia/Instalator. Co rni ten k o m p o n e n t od pozostaych? fakt, e w t y c z k a dodajca odnonik do komentarzy pod k a d y m artykuem instalowana jest automatycznie. Interfejs administratora, zilustrowany trw p o g r u p o w a n y c h w trzy zakadki: (Zabezpieczenia). W zakadce General komentowanie w wybranych sekcjach na rysunku 10.20, umoliwia konfiguracj parameGeneral (Oglne), Layout (Ukad strony) i Security m o n a wczy obsug technologii A j a x , wyczy i kategoriach, ustawi obsug B B C o d e , format daty

266

Joomla!. Profesjonalne tworzenie stron WN 1W


i rne opcje powiadamiania. Zakadka Layout udostpnia w y b r kilku rnych szablonw, w c z e n i e z a g n i e d a n i a k o m e n t a r z y , d o p u s z c z a l n dugo w p i s w , a take aktywacj funkcji Read o n " (Czytaj dalej). Zakadka Security pozwala skonfigurowa wymienione wczeniej m e c h a n i z m y ( C A P T C H A , zapisywanie adresw IP itd.). Bardzo uyteczna jest moliwo zdefiniowania listy sw i ich substytutw, ktrymi zostan automatycznie zastpione (lista zawiera w wikszoci wulgaryzmy).

Rysunek 10.20. Interfejs administratora IJoomlaComment pozwala na konfiguracj wygldu stron dodawania i wywietlania komentarzy

General

Security

Postmy

Layout

B i < Settings Uninsuli complete mode: Nie O Tak Delete also tables when uninstall! Do not active except if you would i ijoomlacomment ar For expert only 1 ou can change here the joscomment mamtaoi fund h a c k e d the corserit html (tor example: to display the read only fundi V V if auto: W i l l i e e mosContiijlanguage parameters it auto will use the mosConfigtanguage parameters Php iconv library i input t h e chat se 1: of y o u t joonila installation it it is different ti C l i c HERE t o c h e k if it is s u p p o r t e d h y t h e inconv tit , t i y ' els joomlacommert support, It t h i s i s m u i h j j ade ft out a r e l e a s e o l d e i than 3.0 J . once you parameter, qotot- ansae Comment.: and use She Convert To LCh*se convert r e l i e d a: If y o u had change I, some comments ici*8te<i with ajax have to be c others ('created w ithout siax'i have not to be converted i In this case, comments only (those with strange character?!). h i s . S e c t i o n s .'1 C a t e g o r i e s ciii m a Exclude I n c l u d e : Exclude O include ff INCLUDE, this W' i! allow comments for ems which are IN selected sections Oft IN s& eeted categories. If EXCLUDE, this v 'ill not allow comments for items which are IN sele selected .--ections OR IN s elected categories eld to exclude/include items Ids Format: list of Ids

M a m h o t content f u n c t i o n :

on FVepare Content

Fi o u t e w l l a n g u a g e : Bsckend lanytiage: Local chaise*: if y o u we <tj><jf a d i n g o l d e t i eie,?e thant :i,0. i e a d catefully d e s c r i p t i o n o n t h e fiiiiirt:

autodetect autodetect utf-8

fssclude I n c l u d e i t e m s i d s :

Exclude Include sections:

Static Content About Joomla!

Clic to Exclude-lnc ude sections-. Use CTRL, or SHIP key to select unselect lines.

Sieci spolecznociowe
Chocia najpopularniejszym przykadem sieci spoecznociowej jest MySpace.com, strony tego typu m o g zawiera dosownie wszystko od listy moich ulubionych filmw", po list przepisw kulinarnych. Sieci spoecznociowe stanowi platform, ktrej sercem jest k l a s y f i k o w a n i e list z a k a d e k i d z i e l e n i e si nimi a w k o n s e k w e n c j i list stron, ktre wskazuj. Proces ten odbywa si poprzez przesyanie odnonikw lub wiadomoci e-mailem. Zaoeniem sieci spoecznociowych jest tworzenie przez u y t k o w n i k w list zakadek (odsyaczy do stron W W W ) , ktre u w a a j za interesujce. Listy s nastpnie przypisywane do odpowiednich kategorii i znacznikw, aby mona byo j e wyszukiwa i przeglda w katalogu. U y t k o w n i c y m a j dostp do list umieszczonych przez innych, m o g ocenia poszczeglne odnoniki lub cae listy. Czsto listy zakadek publikowane s w formie kanaw RSS, co pozwala zainteresowanym na ledzenie n a j n o w s z y c h zakadek z danej listy. Struktura a r t y k u w J o o m l a ! j e s t w i e t n y m r d e m materiaw, ktre m o n a sugerowa innym. Dostpnych jest kilka rozszerze, ktre w s p p r a c u j z rnymi serwisami spocczn o c i o w y m i , u y t k o w n i k musi w y c z n i e klikn o d p o w i e d n i ikon, aby doda artyku umieszczony na T w o j e j stronie do listy zakadek. J e d n y m z najpopularniejszych rozszerze tego typu jest SocialBookmarkerBot.

Rozdzia 10. Budowanie spoecznoci w Joomla!

267

jcialBookmarkerBot vl.3.2
Aby zachci uytkownikw do dodawania zakadek wskazujcych artykuy na Twojej stronie, moesz zainstalowa rozszerzenie Social BookmarkerBot, ktre wstawia rzd przyciskw na dole wybranych podstron (zazwyczaj s to podstrony zawierajce artykuy), przedstawiono to na rysunku 10.21. Przyciski pozwalaj na szybkie dodanie zakadek na stronach: BlinkBits, Blinklist, Blogmarks, BlogMemes, Del.icio.us, Digg, Facebook, Fark, FeeMeLinks, Furl, Google Bookmarks, Ma.gnolia, Netscape, Netvouz, Newsline, P l u g M , RawSugar, Reddit, Shadows, Simpy, Slashdot, Spurl, Squidoo, StumbleUpon, T a i l r a n k i l i n k a G o G o , Technorati, W i n d o w s Live, Witsts i Yahoo! Bookmarks. (sunek 10.21. ozszerzenie Social ookmarker wywietla list rzyciskw, ktre pozwalaj a dzielenie si zakadami innymi uytkownikami
Add this page to your favorite Social Bookmarking websites

fi

*l

ui

4i> m

>* KS

-4

U*

Dostpna jest take opcja wywietlania sprytnych" przyciskw dla stron Digg, Del.icio.us i Reddit w p r a w y m lub lewym g r n y m rogu kadego artykuu. Ich pojawianie m o n a ograniczy do podstron zawierajcych skrcon wersj artykuu lub do tych zawierajcych cae artykuy. Panel moe by wywietlany na grze, na dole lub zarwno na grze, jak i na dole; moe zawiera wszystkie lub wybrane przyciski. Rozszerzenie usuwa take wszystkie dodatkowe informacje z acucha dania, takie jak ID uytkownika, generowane s absolutne adresy U R L (to znaczy, e dziaaj niezalenie od miejsca, w ktrym zostan umieszczone). Przycisk dla witryny Digg, wywietlany po prawej stronie artykuu, dziaa poprawnie tylko wtedy, gdy wczona jest opcja Proste adresy na ekranie Konfiguracji Globalnej w interfejsie administratora. W przeciwnym wypadku wystpuje bd generowany przez kod JavaScript, pobrany z serwera Digg.com. Wtyczk SocialBookmarkerBot mona znale pod poniszym adresem: http://joomladigger.com/joomla-extensions/plugins/more-traffic-for-yourjoomla-website. html Instalacja odbywa si standardowo za p o m o c opcji Rozszerzenia/Instalator, wtyczk naley opublikowa po zainstalowaniu. Domylnie panel z przyciskami wywietlany jest pod wszystkimi artykuami na stronie. K o r z y s t a j c z interfejsu administratora, m o n a ustawi opcje wywietlania przyciskw.

alendarz wydarze
Kalendarz wydarze to doskonay sposb na skupienie w j e d n y m miejscu ludzi zainteresowanych wydarzeniami danego typu, zachca take spoeczno do spotka na ywo. Rozszerzenia oferujce funkcjonalno kalendarza wydarze dostpne dla Joomla! s j e d noczenie proste i dobrze skonstruowane. Rozszerzenie Event Calendar (JEvents) jest bardzo elastyczne w zakresie prezentacji i organizacji zdarze w kategoriach. JCalPro zawiera wicej funkcji zwizanych z regularnymi wydarzeniami i planowaniem.

268

Joomla!. Profesjonalne tworzenie stron WN 1W


Jeli nie chcesz zarzdza kalendarzem zdarze na stronie WWW, moesz skorzysta z darmowej usugi Google Calendar fwww.google.com/calendar>. Nastpnie, za pomoc odpowiedniego moduu, moesz wstawi j na swoj stron. Usuga Google Calendar zawiera opcje automatycznego wysyania przypomnie (za pomoc poczty elektronicznej lub SMS-w) zapisanym uytkownikom.

Rozszerzenie Events Calendar (JEvents)


R o z s z e r z e n i e E v e n t s Calendar, p r z e d s t a w i o n e na rysunku 10.22 (znane take pod n a z w JEvents), pozwala na atwe zarzdzanie wydarzeniami. Nie tylko moliwe jest dodawanie praktycznie nieograniczonej liczby wydarze, ale take okrelanie powtarzalnoci (codziennie, co miesic, co rok). Zdarzenia mona umieszcza w kategoriach definiowanych przez uytkownikw. Rysunek 10.22. Interfejs rozszerzenia Events Calendar (JEvents) jest bardzo prosty
Start
X.

[December 01 200

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

Pakiet Eevents Calendar (JEvents) skada si z kilku k o m p o n e n t w , m o d u w i wtyczek: Komponent Komponent Events Calendar administracyjny G w n y komponent wywietlajcy kalendarz. Umoliwia konfiguracj systemu.

Modu kalendarza dla Events Calendar May kalendarz z zaznaczonymi wydarzeniami, ktry mona wstawi np. na stronie gwnej. Modu listy nadchodzcych z n a j d u j c y c h si w bazie. wydarze Lista nadchodzcych wydarze

Rozdzia 10. Budowanie spoecznoci w Joomla!

269

Modu legenda wydarze w kalendarzu.

Przedstawia legend symboli p o j a w i a j c y c h si

Wtyczka wyszukiwania w kalendarzu.

Umoliwia w y s z u k i w a n i e wydarze w p r o w a d z o n y c h

Wtyczka tworzenia raportw z wydarze A u t o m a t y c z n e d o d a w a n i e odnonika pod wydarzeniami, ktry przenosi na stron, gdzie m o n a doda zdjcia i relacje z minionych wydarze.

Przed wprowadzeniem wydarze do kalendarza musisz najpierw utworzy kategori za p o m o c opcji Add Category w czci a d m i n i s t r a c y j n e j k o m p o n e n t u J E v e n t s ( p r z e d s t a w i o n o to na rysunku 10.23). Po zapisaniu kategorii musisz j j e s z c z e opublikowa, poniewa domylnie nowe kategorie nie s aktywne. Po utworzeniu kategorii moesz zacz dodawa wydarzenia. irsunek 10.23. 'rzed /prowadzeniem ikichkolwiek tydarze naley definiowa o najmniej jedn atego
Add Category Kolor Category Title Category Name Image Image Position Ordering Access XXXXDescription XX XX Color Picker Wakacje Wakaqe articles jpg Left
V;

V V / U ABC

Public U

w m mm
*! i n

- Styles -- v d, >t

-- Format f

-- Font family s r

:= i = i

W A

u ' * a -

- H i

Wprowadzanie wydarze (zobacz rysunek 10.24) odbywa si w czci frontowej rozszerzenia JEvents. Dla nowego wydarzenia mona wpisa tytu, wybra kategori i wprowadzi k o m pletny opis. Opcjonalnie m o n a ustawi informacje o miejscu, dane kontaktowe i inne niezbdne informacje dla danego wydarzenia. Wprowadzone dane wykorzystywane s podczas wyszukiwania, dlatego dodajc wydarzenia, staraj si umieszcza sowa kluczowe, aby uytkownicy zainteresowani wydarzeniami danego typu mogli j e odnale. Jeli przejdziesz do ekranu konfiguracji w interfejsie administratora (zilustrowanym na rysunku 10.25), z n a j d z i e s z o p c j e p o z w a l a j c e na k o n t r o l o w a n i e w y g l d u , a take dostpu i uprawnie uytkownikw. Moliwe jest take ustawienie pliku C S S w y k o r z y s t y w a n e g o na stronach z wydarzeniami. Arkusz stylw m o n a zmienia, aby odpowiednio d o p a s o w a wygld kalendarza do aktualnego szablonu strony. Rozszerzenie Events Calendar moesz pobra na stronie: joomlacode.org/gf/projects/jevents Instalacja odbywa si za pomoc opcji Rozszerzenia/Instalator i nie rni si od postpowania w przypadku innych k o m p o n e n t w . A b y w s t a w i kalendarz E v e n t s C a l e n d a r na stronie, dodaj pozycj m e n u czc z k o m p o n e n t e m .

270

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 10.24. Ekran dodawania nowych wydarze zosta podzielony na kilka zakadek

Common

Calendar

images:

Extra

Help i

About

Temat: Kategorie: Aktywno B

Ferie zimowe Wakacje "V Poziom dostpu Public


V

I
S=

k W 1

m i

--styles-4> C2f! Z

-- Format -a !
1

v J -

-- Font family ~ ii !3 u

v A -

J j a '

JL

i l l

X,

xa I n

- s

," |

B a w si z nami!|

Grafika <?

Pagebreak

Readmore

Rysunek 10.25. Cz administracyjna zawiera opcje konfiguracji i tworzenia relacji

JEvents
Component ' : .--4,
CSS

J Events C onf i g (vi 4 c ek to,,e r version ] . hc ew 2


I Tooltip About

These settings aie only foi the compone Admin Mail Access Publish from Frontend First Day View mail View "By" View "Hits" View Repeat and time Show All Repeat Events in Year List Hide "See By Categories (appropriate if events legend module is visible) Show Copyright Footer Date Format Use 12hr time Format Use new Icon Navigation bar Navigation Bar Color Start Page No. of Events Use Simple Default Event Color Event color rule Titlelength t woj^adres .pi Only special ghts and admins Admins and Super Admins only V Sunday first V O Nie ak C ) Nie ak O Nie ak O Nie % ak O Nie ak Nie O ak v

O Nie V'> ak French-Englis Nie Green Day O ak V v V

O Nie ak

O ak Q V

Nie

O Random J None O Category ' Event specific colors allowed


O

JCalPro
Jednym z najatrakcyjniejszych kalendarzy jest rozszerzenie JCalPro, przedstawione na rysunku 10.26. Zastosowanie rnych stylw pozwala dopasowa kalendarz do prezentacji reszty strony. Wygld wszystkich elementw moe by modyfikowany przez zmian plikw CSS. Dodawanie wydarze odbywa si z wykorzystaniem edytora ustawionego w Joomla!, co pozwala na w p r o w a d z a n i e f o r m a t o w a n e g o tekstu. Rozszerzenie jest cile zwizane z systemem zabezpiecze Joomla!, dziki czemu moliwa jest kontrola dostpu prywatnych kategorii, a take zarzdzanie wprowadzaniem wydarze. Dostpne s take moduy wywietlajce wersj minikalendarza, a take nadchodzce wydarzenia.

Rozdzia 10. Budowanie spoecznoci w Joomla!


itsunek 10.26. 'ozszerzenie CalPro ma 'spaniay iterfejs czci ontowej, try dodatkowo wna lodyfikowa 1ziki systemowi zablonw

271

fiSJ

Si=j

Weekly view 0

Monthly View 4 October 208 Nowe rofeei 008

Sunday, Hovember 30, /*8 Beceniber >08 t

<> football 2 3 4 Business Maeting 6

7
O Football Game 14 <> Football Game

u
Oeuiiness : Meeting

13

17 n -M
25

i OSuiines? Westing -M O Business

20

It
<> Football

27

m
;

< Football Gam*

OfWonthSy | Work

Today Search Calendar

i Sports

T y p e m ome k e y w o r d s . . ,

!j Go .

JCalPro zawiera nastpujce funkcje: Widok zdarze z danego dnia, tygodnia, miesica, a take z danej kategorii. Integracja z kategoriami Joomla!, w tym kontrola uprawnie. G e n e r o w a n y kalendarz jest zgodny ze standardami X H T M L i CSS. W p r o w a d z o n e zdarzenia m o n a w y s z u k i w a za p o m o c standardowej wyszukiwarki Joomla!. Zastosowanie edytora W Y S I W Y G ustawionego w Joomla!, co pozwala na formatowanie tekstu. Moliwo m i n u t o w e g o planowania zdarze. Funkcja importowania zdarze i kategorii systemu Extcalendar. Modu wywietlajcy nadchodzce wydarzenia. Obsuga wielu j z y k w za porednictwem funkcji systemu Joomla!. Powiadamianie administratora o n o w o d o d a n y c h wydarzeniach. Obsuga wydarze okresowych, cao- i kilkudniowych. Powiadamianie uytkownika o wydarzeniach przez e-mail.

JCalPro m o n a znale na stronie: http://dev. any thing-digital. com

272

Joomla!. Profesjonalne tworzenie stron WN 1W


Instalacja o d b y w a si za p o m o c opcji Rozszerzenia/Instalator i nie rni si od postpowania w przypadku innych k o m p o n e n t w . Aby wstawi kalendarz JCalPro na stron, dodaj p o z y c j m e n u czc z komponentem.

Systemy Wiki
Jedn z najbardziej interesujcych interaktywnych technologii (i prawdopodobnie najszybciej z y s k u j c na popularnoci) jest system wiki. W systemie tym artykuy pisane s przez uytk o w n i k w . Kolejni o d w i e d z a j c y m o g edytowa lub rozszerza istniejce artykuy. Najpopularniejszym p r z y k a d e m takiego systemu jest Wikipedia, encyklopedia tworzona przez uytkownikw. Chocia zasada dziaania Joomla! (system C M S ) pozwala na dodawanie treci przez uytk o w n i k w , rozwizanie to nie zostao stworzone z m y l o umoliwieniu duej grupie ludzi wprowadzania maych zmian w artykuach funkcji lecej u podstaw systemw wiki. Dla Joomla! stworzono kilka dobrych rozszerze, uzupeniajcych system o funkcjonalno wiki. D o takich rozszerze z a l i c z a j si OpenWiki i WikiBot.

OpenWiki
O p e n W i k i 4 (zobacz rysunek 10.27) jest k o m p o n e n t e m czcym system Joomla! z aplikacj P H P D o k u W i k i . Zawiera p e n implementacj A C L w oparciu o grupy Joomla!, takie jak Gwny Administrator, Administrator, Operator, Autor, Redaktor itp. Moliwe jest okrelenie uprawnie tworzenia, edycji, odczytywania, usuwania artykuw i wysyania plikw. O p e n W i k i zawiera wiele uytecznych funkcji: Prosta skadnia do f o r m a t o w a n i a artykuw w stylu wiki. Nieograniczona liczba wersji danej strony z funkcji diff, podwietlajcej rnice midzy wersjami. Obsuga f o r m a t o w a n i a tekstu i doczania obrazw. O p c j o n a l n y system n a z w CamelCase. A u t o m a t y c z n e generowanie indeksu pod k t e m przeszukiwania caego tekstu. Przyciski szybkiego dostpu w celu przyspieszenia edycji. N a w i g a c j a okruszkowa uatwiajca przegldanie. Czarna lista (blokowanie spamu). Oznaczanie stron j a k o tylko do odczytu. Obsuga p o n a d 30 j z y k w .

Rozszerzenie OpenWiki dziaa poprawnie wycznie z Joomla! w wersji 1.0.x p r z y p . tum.

Rozdzia 10. Budowanie spoecznoci w Joomla!


sunek 10.27. lenWiki to <mponent zzcy aplikacj ikuWiki PHP systemem omla!

273

[ [ s t a r t ] ] i Edit this page j [ O l d

Open W i k i

P r o j e c t s

O f

Table of Contents

J oo m P roso lu tio n . c o m

DokuWiki for Joomla!

is a standards compliant, simple to use u , mainly aimed at creating documentation of any kind. It is targeted at developer teams, workgroups and small companies. It has a simple but powerful which makes sure the datafiles remain readable outside the Wiki and eases the creation of structured texts. All data is stored in plain text files - no database is required.

Joomla! is a Content Management System (CMS) created by the same award-winning team that brought the Mambo CMS to its current state of stardomjoomla' is the ideal tool for developing small to large dynamic community websites, intra company portals, corporate portals, weblogs and much more. The OpenWiki component is a integration of DokuWiki, aiming at a light, flexible and powerful documentation tool for Joomla I users. The component would be following original DokuWiki's steps except some experiments on Database storage.

JOOMLA! Knowledge Base


DokuWiki for Joomal! is a Joomla! component based on DokuWiki, using and Joomla! group permissions DokuWiki for Joomla! is currently using plain text file for data storage. Database storage would be interesting to Joomla! users, which is also our target

System szablonw umoliwiajcy d o p a s o w y w a n i e wygldu. Wasna architektura wtyczek (dostpnych jest ponad 100). Generowanie kanaw RSS.

Rozszerzenie OpenWiki m o n a pobra na stronie: http://wwwjoomla.sk/rozsirema/stiahnutie/Joomlal_rozsirenia/Sprava_suborov_a_ dokumentacie/Open Wiki_with_Slimbox_l. 1.0/ Instalacja o d b y w a si za p o m o c opcji Rozszerzenia/Instalator i nie rni si od postpowania w przypadku innych komponentw. W p i s w m e n u na stronie gwnej odsyajcy do OpenWiki d o d a w a n y jest automatycznie. O b s u g a systemu D o k u W i k i (cz uytkownika i administratora) o d b y w a si z poziomu strony gwnej Joomla!. K o n f i g u r a c j k o m p o n e n t u czcego OpenWiki m o n a przeprowadzi w czci administracyjnej. Aplikacja DokuWiki, na ktrej opiera si OpenWiki, nie zapisuje artykuw w bazie danych. S one przechowywane w postaci plikw. Dlatego do poprawnego dziaania OpenWiki niezbdne s uprawnienia zapisu w odpowiednich katalogach. Rozszerzenie opiera si w gwnej czci na funkcjach PHP fwriteO i fopenO, dlatego upewnij si, e nie zostay one wyczone na serwerze, na ktrym chcesz zainstalowa OpenWiki.

W interfejsie administratora Joomla! moesz uzyska dostp do ekranu konfiguracji O p e n W i k i (OpenWiki Configuration Settings zobacz rysunek 10.28), wybierajc pozycj O p e n W i k i z m e n u K o m p o n e n t y . M o l i w e j e s t u s t a w i e n i e u p r a w n i e i p a r a m e t r w dla t w o r z o n y c h artykuw.

274

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 10.28. Ekran konfiguracji OpenWiki

OpenWtki C Display

'

dokuwiki.php is: Writeable Distussion About

[ U Make unwriteabte after saving

A n t i s p a m Perniission S a f e m o d e en W

Language Base Directory Bsse URL: Save Directory:

C:/xampp/htdocs/old/components/com_openwiki/ http: //localhost/old/components/com_openwiki C: /xampp/htdocs/old/components/com_open wiki/data

>

WikiBot
WikiBot czy stron Joomla! z w o l n encyklopedi Wikipedia. Rozszerzenie pozwala na oznaczenie sw w treci artykuw, aby prowadziy do odpowiednich stron w encyklopedii. Dziki w y k o r z y s t a n i u tego narzdzia p o c z e n i e strony J o o m l a ! z o g r o m n b a z danych Wikipedii jest bardzo proste. Rozszerzenie W i k i B o t m o n a znale na stronie: www. theinevitabledossier. com/wikibot.html Po

Instalacja wtyczki o d b y w a si s t a n d a r d o w o , za p o m o c opcji Rozszerzenia/Instalator. instalacji rozszerzenie musi zosta opublikowane, aby przetwarza tre artykuw.

Rozszerzenie WikiBot dziaa w tle systemu Joomla!. Wystarczy doda niezbdne znaczniki w treci zwykego artykuu. Sowa naley oznacza w sposb identyczny jak na Wikipedii, u m i e s z c z a j c j e w p o d w j n y c h n a w i a s a c h k w a d r a t o w y c h , np. [[te sowa]]. WikiBot zawiera obsug znacznikw w wielu jzykach. Odnoniki mona take zapisywa w postaci [[artyku |nazwa odnonika]]. Tekst umieszczony wewntrz znacznikw zostanie automatycznie zmieniony w odnonik d o Wikipedii podczas otwierania strony. Sowa oznaczone podwjnymi po wybraniu opcji podgldu. po zapisaniu artykuu. nawiasami nie s wywietlane w postaci Zmiana widoczna jest wycznie w czci odnonika frontowej,

Uruchamianie wirtualnej spoecznoci


Jeli wczeniej opracowae dokadny plan, uruchomienie wirtualnej spoecznoci nie powinno by p r o b l e m e m . T e c h n o l o g i e d o s t p n e za p o r e d n i c t w e m r o z s z e r z e J o o m l a ! z n a c z c o upraszczaj faz implementacji. Powiniene wzi pod uwag take odpowiedzialno zwiz a n z zarzdzaniem spoecznoci, w tym odpowiedzialno prawn. Spore znaczenie ma te dobr odpowiednich moderatorw.

Dobr moderatorw
W i r t u a l n e s p o e c z n o c i w y m a g a j d u o p r a c y , d l a t e g o z a n i m si s p o s t r z e e s z , bdziesz potrzebowa wsparcia w prowadzeniu spoecznoci. Spoecznoci czsto korzystaj z wolontariatu moderatorw, wybranych spord uytkownikw wykazujcych due zaangaowanie

Rozdzia 10. Budowanie spoecznoci w Joomla!

275

w dziaalno strony. Czsto dobr moderatorw wymaga wycznie przeanalizowania dziennika. Potencjalni moderatorzy spdzaj sporo czasu na stronie i zazwyczaj dobrowolnie su innym p o m o c i informacjami. Dlaczego kto mgby chcie powica swj czas j a k o wolontariusz, dostajc niewiele lub w ogle nie otrzymujc za to pienidzy? Powodw jest kilka najprostszym i najwaniejszym jest pasja, ktrej przedmiot zwizany jest z tematyk strony. Wielu ludzi odczuwa w e w n t r z n potrzeb dodawania czego od siebie, nawet jeli jest to odrobina czasu powicona wirtualnej spoecznoci. Kolejnym powodem, dlaczego kto chciaby zosta moderatorem, jest namiastka wadzy. Jest to jednoczenie najwikszy problem, z j a k i m musi sobie radzi webmaster. Z a z w y c z a j moderator, ktry naduywa swoich uprawnie, robi to w taki sposb, e ofiara m a mae szanse, aby si obroni lub zgosi nieuczciwe traktowanie. Z a b l o k o w a n i e uytkownika ogranicza moliwo zgoszenia naduy. D o b r y m pomysem jest umieszczenie na stronie e-mailowego adresu administratora. Skargi w y s y a n e pod tym a d r e s e m nie b d w aden s p o s b cenzurowane. Pamitaj, aby podchodzi do nadsyanych skarg odrobin nieufnie. Znane s przypadki osb w y s y a j c y c h na f o r u m dla dzieci o b r z y d l i w e w i a d o m o c i p e n e s e k s u a l n y c h o d n i e s i e i przeklestw. Po zablokowaniu moliwoci w y p o w i e d z i osoby te zaczy wysya skargi, e pady o f i a r niesprawiedliwoci, a ich p r a w o wolnoci w y p o w i e d z i zostao n a r u s z o n e . Dlatego przegldajc skargi od uytkownikw, rozpatruj j e oddzielnie, w sposb obiektywny i logiczny.

rowadzenie spoecznoci
Prowadzenie spoecznoci przypomina kierowanie samochodem, w ktrym kilkanacie osb ciska si na miejscu pasaera a kada z nich trzyma rk na kierownicy. Podobnie spoeczno porusza si z y g z a k i e m " , czsto n o t u j c z a s k a k u j c y rozrost, a p o t e m stagnacj. Cigym zagroeniem jej istnienia s inne spoecznoci, ktre m a j dokadniejsze informacje lub lepszy interfejs uytkownika. Poniej zamieszczono kilka wskazwek, ktre pomog zachowa zdrowy rozsdek i zapewni stay wzrost liczby odwiedzajcych i czonkw: Zamie na stronie w widocznym miejscu list regu Nie m o e s z wini uytkownikw za naruszanie regulaminu strony, jeli nie mogli si z nim zapozna. Umie na stronie zasady w w i d o c z n y m miejscu, aby o d w i e d z a j c y mogli j e przeczyta i aby nie pojawiay si wtpliwoci. W przypadku f o r u m oznacza to z a z w y c z a j umieszczenie regulaminu w postaci tematu na forum, a nastpnie przyklejenie" go w d a n y m dziale, eby zawsze pojawia si j a k o pierwszy na licie. Pilnuj, aby strona pozostawaa czysta Podobnie j a k graffiti w ssiedztwie, obecno spamu na stronie p o w o d u j e wraenie, e jest ona opuszczona lub nieuywana. Webmaster, ktry zasn, prowadzc wirtualn spoeczno, bez wtpienia uderzy w drzewo.

276

Joomla!. Profesjonalne tworzenie stron WN 1W


Nie uruchamiaj strony, zanim nie powstan podstawowe artykuy Stare przysowie Nigdy nie dostajesz drugiej szansy, aby zrobi pierwsze wraenie" 5 nie traci na wanoci, kiedy uruchamiasz wirtualn spoeczno. Ze wzgldu na ilo pienidzy inwestowanych przez firmy w strony W W W , m u s z one wyglda profesjonalnie i zyska szerok popularno. Jeli odwiedzajcy trafi na pust stron, jest mao p r a w d o p o d o b n e , e na ni wrci i na p e w n o bdzie unika o d n o n i k w p r o w a d z c y c h do niej. Poczwszy od pierwszego dnia, kiedy strona zostaje upubliczniona, powinna zawiera wystarczajco duo treci i aktywnoci, aby skoni o d w i e d z a j c y c h do powrotu.

Podsumowanie
Budowanie efektywnej spoecznoci wirtualnej jest j e d n z najtrudniejszych (a jednoczenie najbardziej satysfakcjonujcych i najbardziej opacalnych) czynnoci w procesie rozwijania stron internetowych. P o n i e w a skuteczna wirtualna spoeczno w y m a g a wsppracy wielu odwiedzajcych, zarzdzanie ni m o e kosztowa wiele wysiku. Na szczcie, narzdzia gotowe do wykorzystania w systemie Joomla! uatwiaj z a r w n o pocztkowe uruchomienie strony, jak i dalsze zarzdzanie ni. W tym rozdziale opisano etapy i narzdzia zwizane z tworzeniem wirtualnych spoecznoci w oparciu o Joomla!, a w szczeglnoci: w a d y i zalety wirtualnych spoecznoci; metody p o p r a w y interakcji na stronic W W W ; sposoby przedefiniowania strony na dalszym etapie istnienia; konstruowanie zoonej strony przez sprzenie ze sob kilku technologii; adaptacj rnych rozszerze dodajcych interaktywne funkcje; p o p r a w n instalacj rozszerze, aby zapewni m a k s y m a l n e wykorzystanie i minimum problemw.

Im popularniejsza jest Twoja strona, tym wiksze znaczenie ma dostrojenie ustawie pod ktem maksymalnej wydajnoci. Mona atwo straci wielu czonkw wirtualnej spoecznoci, jeli strona bdzie s z w a n k o w a lub dziaa powoli. W rozdziale 11. opisano rnorodne techniki i k o n f i g u r a c j e , ktre p o m a g a j w d o s t r o j e n i u s e r w e r a J o o m l a ! p o d k t e m m a k s y m a l n e j wydajnoci.

Ang. You never get a second chance to make a first

impression.

11
Prowadzenie profesjonalnej strony
Przeprowadzenie podstawowej instalacji Joomla! nie nastrcza trudnoci, dlatego w krtkim czasie mona uzyska w peni dziaajc stron. W peni profesjonalna instalacja wymaga jednak duo wikszego wysiku, zwaszcza w zakresie zarzdzania i administracji. Chocia Joomla! zawiera wiele funkcji przeznaczonych dla pocztkujcych uytkownikw, take eksperci odnajd moliwoci niezbdne do prowadzenia profesjonalnej strony. Dodatkowym atutem jest bogaty zasb narzdzi dostpnych dla serwerw skadowych systemu. Poniewa niedostrojony" system nigdy nie osignie wydajnoci tego, ktry zosta dokadnie skonfigurowany, warto zainwestowa czas w dostosowanie ustawie wszystkich aplikacji. Zmiana ustawie pod ktem potrzeb danej strony Joomla! pozwoli uzyska lepsz wydajno bez zmiany sprztu. Poszczeglne techniki przedstawione w tym rozdziale mona skategoryzowa nastpujco: programowanie i testy, administracja Joomla!, obsuga Joomla! i ostateczne dostrajanie strony. Oczywicie zakres wyszczeglnionych kategorii pokrywa si w niektrych punktach, poniewa wszystkie zwizane s z zarzdzaniem serwerem Joomla! i jego konfiguracj.

rogramowanie i testy
Profesjonalne programowanie Joomla! nie sprowadza si wycznie do wyboru waciwego IDE. Rwnie wana jest znajomo tych jego funkcji, ktre w s p o m a g a j diagnozowanie problemw, stosowanie dostpnych narzdzi PHP, a take implementacja zautomatyzowanych procedur testujcych. Wszystkie wspomniane zagadnienia odgrywaj znaczc rol w procesie tworzenia solidnego systemu. Poznane dotychczas aspekty pracy z Joomla! zwizane byy gwnie z samym systemem. Profesjonalna instalacja wykracza jednak poza t platform, o b e j m u j e take zastosowanie zewntrznych narzdzi i konfiguracj innych serwerw. Aktywacja wbudowanych procedur diagnozujcych Joomla! znaczco uatwia programowanie, poniewa jest rdem dodatkowych komunikatw.

278

Joomla!. Profesjonalne tworzenie stron WN 1W

Ustawienia diagnostyczne
W panelu administratora z n a j d u j si opcje pozwalajce a k t y w o w a kilka procedur diagnostycznych, ktre u a t w i a j p r o g r a m o w a n i e na serwerze testowym. Wczenie tych funkcji p o w o d u j e wywietlanie informacji dotyczcych dziaania systemu. Na ekranie Konfiguracja globalna, w panelu Diagnostyka (zobacz rysunek 11.1) znajdziesz ustawienia trybu diagnostycznego Joomla!. Rysunek 11.1. Wczenie ustawie diagnostycznych uatwia programowanie na serwerze testowym

Konfiguracja globalna

i' . ;'.! )4bWUllsjKeMpVbdq '' cAProgram FilesV>pache Si

D w a d o s t p n e u s t a w i e n i a to Analiza systemu i Analiza jzyka. W c z e n i e k a d e j z nich p o w o d u j e d o c z e n i e w d o l n e j czci strony d o d a t k o w y c h k o m u n i k a t w s y s t e m o w y c h . Zwr uwag, e informacje generowane s przez system Joomla! i rni si od tych, ktre w y w i e t l a j si po wczeniu opcji P H P di spl ay errors. Po a k t y w o w a n i u opcji d i a g n o s t y c z n y c h na stronie p o j a w i si d o d a t k o w e k o m u n i k a t y , p o d o b n e d o tych z i l u s t r o w a n y c h na r y s u n k u 11.2. I n f o r m a c j e podzielono na pi sekcji: Informacje o wydajnoci, Zuycie pamici, Zapytania do bazy danych, Wczytane pliki jzyka, Frazy nieprzetlumaczone. W a r u n k i e m w y w i e t l e n i a k o m u n i k a t w d i a g n o s t y c z n y c h jest odpowiednie odwoanie w kodzie szablonu. Jednak wikszo szablonw zawiera wymagan instrukcj: <jdoc: include type="modules" name="debug" />. Rysunek 11.2. Komunikaty diagnostyczne na stronie po wczeniu odpowiedniej opcji

liifti ubicie o wydajnoci*

Zuycie pamici*

Rozdzia 11. Prowadzenie profesjonalnej strony

279

W pierwszej sekcji wywietlany jest czas uruchamiania w y k o n y w a n i a funkcji dla poszczeglnych zdarze. Druga sekcja odzwierciedla zuycie pamici przez serwer Joomla!. Kolejne grupy z a w i e r a j i n f o r m a c j e szczeglnie p r z y d a t n e w procesie tworzenia rozszerze i diagnozowania bdw systemu. Poniej, w kolejnej grupie, z n a j d u j e si lista zapyta S Q L w y k o n a n y c h w czasie g e n e r o w a nia strony zilustrowano to na rysunku 11.3. Czsto suy ona za d o s k o n a w s k a z w k podczas szukaniu rda bdw, jednoczenie umoliwia wgld w funkcjonowanie systemu Joomla!. Rysunek 11.3. W odpowiedniej sekcji wywietlane s wszystkie wykonanie zapytania SQL
Informacje o wydajnoci*

Zuycie pamici*

Zapyta <lo bazy lanych: 24*


SELECT FKOM

WHERE
FKOM

WHERE SELECT
FKOM

.1

WHERE
WWFTTF.

Opcja Analiza jzyka spowoduje wywietlenie wszystkich tekstw, ktre pojawiy si na stronie i dla ktrych nie znaleziono tumacze (przedstawiono to na rysunku 11.4). Jeli pracujesz nad pakietem j z y k o w y m lub bierzesz udzia w poprawianiu tumaczenia Joomla!, to ta opcja pozwoli Ci okreli, co zostao jeszcze do zrobienia. Rysunek 11.4. Opcja Analiza jzyka spowoduje wywietlenie na stronie tekstw, dla ktrych nie znaleziono tumacze
Wczytane pliki jzyka*

Frazy niepi zet luinac zone*

280

Joomla!. Profesjonalne tworzenie stron WN 1W


Pamitaj, aby nigdy nie wcza tych ustawie na serwerze produkcyjnym, poniewa moesz tym s a m y m z d r a d z i i n f o r m a c j e p r z y d a t n e h a k e r o m , k t r z y chcieliby w a m a si na T w o j stron.

Interfejs wiersza polece PHP


P r o g r a m u j c rozszerzenia Joomla!, piszesz kod w PHP, wic narzdzia, ktre w s p o m a g a j i uatwiaj programowanie PHP, m o g Ci pomc. Zamiast uruchamia kod z poziomu systemu Joomla!, czsto lepiej bezporednio sprawdza mae fragmenty kodu. W P H P taka moliwo istnieje dziki interfejsowi wiersza polece PHP (CLI Command Line Interface). M o e s z uruchamia kod P H P bezporednio, w y w o u j c aplikacj z pakietu PHP, doczon w kadej standardowej instalacji. Otwrz okno wiersza polece i przejd do katalogu zawierajcego P H P (czsto jest to gwny katalog serwera Apache). W systemie Windows powiniene znale plik php.exe, ktry odpowiada za CLI. N a j p r o s t s z y m p r z y k a d e m w y k o r z y s t a n i a C L I j e s t u r u c h o m i e n i e p o j e d y n c z e j linii kodu za p o m o c przecznika - r :
php -r "echo 'Hello World! 1 : "

Powysza komenda spowoduje wywietlenie komunikatu na ekranie wraz z podsumowaniem dziaania skryptu. Moesz take uruchomi kod P H P w pliku i zapisa wydruk w innym pliku. Jeli chcesz uruchomi plik test.php, a j e g o wydruk (bez nagwkw HTTP) zapisa w pliku test.html, p o w i n i e n e zastosowa ponisz komend:
php -q test.php > test.html

Lista przecznikw zawiera m.in.: -h lub -? Wywietla list wszystkich przecznikw wraz z krtkim opisem. -r -v W y k o n u j e p o j e d y n c z lini kodu podanego j a k o parametr. Wywietla zainstalowan wersj P H P .

-d D e f i n i u j e warto danej dyrektywy. Przykadowo poniszy kod ustawi m a k s y m a l n y czas uruchamiania skryptu: php -d m a x execution time=20 -m Wywietla list aktualnie z a a d o w a n y c h m o d u w P H P i Zend. - i P o w o d u j e w y g e n e r o w a n i e informacji identycznych z dostarczanymi przez f u n k c j phpi nfo( ). -q Wycza umieszczanie n a g w k w H T T P w g e n e r o w a n y m wydruku. -S Wywietla podany plik z podwietlonymi elementami kodu rdowego. Ten sam rezultat m o n a uzyska z poziomu PHP, w y w o u j c funkcj highl ight_fi le( ). c Okrela katalog, w k t i y m z n a j d u j e si plik php.ini.

-a Przecza P H P w tryb interaktywny, w ktrym w p r o w a d z a n e komendy s natychmiast u r u c h a m i a n e (tryb niedostpny na platformie Windows).

Rozdzia 11. Prowadzenie profesjonalnej strony

281

Bezporednie uruchamianie kodu PHP moe by dobrym sposobem na sprawdzanie dziaania prostych rozszerze. Jeli korzystasz z systemu opartego na Uniksie, moesz take skorzysta z zalet trybu interaktywnego (przecznik -a), ktry jest p r a w d o p o d o b n i e najbardziej uytecznym narzdziem do testowania f r a g m e n t w kodu PHP.

automatyzowane testy
P o s z c z e g l n e e t a p y p r a c y na s e r w e r z e t e s t o w y m o b e j m u j w y s z u k i w a n i e p r o b l e m w , sprawdzanie wspdziaania elementw systemu i testy j e d n o s t k o w e . Faza testw to w a n y e l e m e n t w p r o c e s i e k o n s t r u k c j i o p r o g r a m o w a n i a . N i e s t e t y , c z s t o nie p o w i c a mu si d o s t a t e c z n e j u w a g i , c h c c sprosta t e r m i n o w i w y d a n i a a p l i k a c j i . W r a z z p o p u l a r y z a c j p r o f e s j o n a l n e g o p r o g r a m o w a n i a w z r a s t a liczba aplikacji p r z e p r o w a d z a j c y c h z a u t o m a t y zowane testy, a spada wysiek niezbdny do przeprowadzania skutecznej analizy kodu.

prawdzanie poprawnoci strony


Istnieje kilka elementw strony Joomla!, ktre naley sprawdzi, zanim zostanie ona przeniesiona do rodowiska produkcyjnego, np. p o p r a w n o kodu H T M L i X H T M L , odnonikw, skryptw i dostosowania do potrzeb osb niepenosprawnych. W internecie mona znale kilka narzdzi, ktre analizuj tre strony W W W oraz g e n e r u j raporty, wyszczeglniajc problemy i wskazwki, j a k j e rozwiza. W i k s z o narzdzi d o t w o r z e n i a stron W W W , np. A d o b e D r e a m w e a v e r lub M i c r o s o f t Expression Web, sprawdza poprawno strony, jednak znaczna cz programistw Joomla! korzysta raczej ze rodowisk tzpu Eclipse. W e b Page Valet ( h t t p : / / v a l e t . w e b t h i n g . c o m / p a g e ) jest aplikacj internetow, ktra sprawdza stron pod ktem bdw kodu H T M L . Raport, wywietlany w dolnej czci strony, zawiera informacje o bdach oraz numery linii, w ktrych wystpiy. Kod X H T M L sprawdzi mona za p o m o c narzdzia W 3 C M a r k u p Validation, ktre znajdziesz pod adresem http://validator.w3.org. Sprawdzanie poprawnoci odnonikw mona przeprowadzi za p o m o c aplikacji Link Valet (http://valet.webthing.com/link). M o n a to zrobi take za p o m o c takich narzdzi j a k Jenu (http://soitrceforge.net/projects/jemt), ktre zostao n a p i s a n e w Javie. Z a w i e r a ono o p c j graficznej prezentacji odnonikw, a sprawdzanie przeprowadzane jest w i e l o w t k o w o . Ostatecznie moesz skorzysta z Accessibility Valet (http://valet.webthing.com/access/ url.html). Narzdzie to przydatne jest gwnie w przypadku koniecznoci dostosowania stron do potrzeb osb niepenosprawnych (cho warto przyj za punkt honoru, eby kada strona, ktr prowadzisz, bya dostpna dla niepenosprawnych).

esty jednostkowe
P r o g r a m i c i s k o m p l i k o w a n y c h aplikacji c z s t o s t o s u j strategi testw jednostkowych (ang. unit testing), aby upewni si, e o p r o g r a m o w a n i e spenia zaoenia projektu i dziaa poprawnie. Testy j e d n o s t k o w e p o l e g a j na stworzeniu serii testw, dla ktrych z n a n e s poprawne rezultaty, nastpnie uruchamia si j e w systemie.

282

Joomla!. Profesjonalne tworzenie stron WN 1W


Przykadowo dany test m o e w y w o y w a f u n k c j dodaj (a, b), o ktrej wiadomo, e sumuje dwie liczby. Test polega na wywoaniu funkcji dodaj z dwiema liczbami (np. 2 i 2) i odczytaniu z w r c o n e j wartoci. Jeli w y n i k zgadza si z o c z e k i w a n y m (4 w tym przypadku), wtedy f u n k c j a pozytywnie przesza test j e d n o s t k o w y . Jeli zostanie zwrcony odmienny rezultat, test zakoczy si wynikiem negatywnym, co zostanie z a n o t o w a n e w raporcie. Komplet testw pozwala sprawdza program po wprowadzeniu znaczcych zmian, co umoliwia zidentyfikowanie miejsc, w ktrych modyfikacja spowodowaa nieoczekiwane rezultaty (to oznacza p r a w d o p o d o b n i e bdnie dziaajc funkcj). Testy jednostkowe okazay si j e d n z kluczowych technologii dla programowania grupowego, p o n i e w a dziki nim wielu p r o g r a m i s t w m o e w p r o w a d z a z m i a n y w dowolnych miejscach kodu. Z a u t o m a t y z o w a n e testy p o z w a l a j natychmiast odkry problemy wystpujce w poszczeglnych czciach systemu, spowodowane przez wprowadzenie zmian. Co wicej, p r o j e k t a n c i s w stanie nakreli zarysy funkcji (ang. stubs), t w o r z c o d p o w i e d n i e testy (na p o c z t k u w s z y s t k i e k o c z si n i e p o w o d z e n i e m ) , j e s z c z e przed r o z p o c z c i e m prog r a m o w a n i a . Projektant moe przypisywa poszczeglnym programistom fragmenty aplikacji. Jeli przejd one testy j e d n o s t k o w e , z o s t a j oznaczone j a k o gotowe do zintegrowania z reszt systemu. Powiniene tworzy testy jednostkowe i przeprowadza automatyczne testowanie dla wszystkich t w o r z o n y c h rozszerze, z w y c z e n i e m tych najprostszych. Z a u t o m a t y z o w a n e testy u a t w i Ci u a k t u a l n i a n i e kodu, p o n i e w a j e s t to szybka m e t o d a okrelenia, czy nowy kod nie w p y w a negatywnie na wczeniej dziaajce funkcje. Do testw j e d n o s t k o w y c h w PHP moesz wykorzysta narzdzie SimpleTest. Dostpne jest za d a r m o na stronie: www. lastcraft. com/simple test.php

Moesz zastosowa take aplikacj Selenium, ktra umoliwia zautomatyzowane testowanie stron W W W . Z n a j d z i e s z j na stronie: h ttp ://selenium. selen iumh. org

Uruchamianie strony
Po u k o c z e n i u f a z y t e s t w p r z y c h o d z i pora na p r z e n i e s i e n i e strony na s e r w e r w p r o d u k c y j n y c h . Jest to j e d n o z n a j b a r d z i e j p r o b l e m a t y c z n y c h s y s t e m J o o m l a ! nie z a w i e r a w b u d o w a n y c h narzdzi w s p o m a g a j c y c h Dlatego, aby s t w o r z y kopi z a p a s o w , trzeba przenie z a r w n o dane danych, jak i pliki, z ktrych skada si system Joomla!. j e d e n lub wicej zada, poniewa p r o c e s migracji. zapisane w bazie

Przenoszenie strony na serwer produkcyjny


P r o c e d u r a p r z e n i e s i e n i a strony J o o m l a ! na s e r w e r p r o d u k c y j n y skada si z serii zada, ktre naley przeprowadzi. Nie istnieje z a u t o m a t y z o w a n a metoda pozwalajca na transfer kluczowych aspektw systemu testowego (takich jak wybrane r o z s z e r z e n i a ) z p o m i n i c i e m

Rozdzia 11. Prowadzenie profesjonalnej strony

283

pozostaych e l e m e n t w , np. k o m p o n e n t w i niskiego p o z i o m u z a b e z p i e c z e , w a c i w e g o dla rodowiska testowego. Poniewa migracja midzy serwerami jest w gwnej mierze przeprowadzana rcznie, warto mie list k l u c z o w y c h e t a p w , aby nie p r z e o c z y ktrego z nich. P o d s t a w o w a lista elementw, ktre naley przenie: Rozszerzenia Wszystkie zainstalowane moduy, komponenty i dodatki wykorzystywane na serwerze testowym musz zosta zainstalowane i skonfigurowane na serwerze produkcyjnym. Rczne kopiowanie plikw rozszerze nie jest z a z w y c z a j d o b r y m p o m y s e m , p o n i e w a t w o r z o n e czsto w a s n e tabele, z m i e n i a j k o n f i g u r a c j , a czsto instaluj take komponenty interfejsu administratora systemu Joomla!. Dyrektywy PHP.ini Plik PHP.ini z n a j d u j c y si na serwerze testowym zawiera prawdopodobnie zmiany uatwiajce programowanie. Pamitaj, e wiele dyrektyw powinno mie rne ustawienia w rodowisku testowym i p r o d u k c y j n y m , g w n e ze w z g l d w b e z p i e c z e s t w a . W wikszoci p r z y p a d k w n i e z b d n e s z m i a n y wartoci dyrektyw zwizanych z rozszerzeniami PHP, np. w c z a j c e bibliotek gd2, niezbdn do p o p r a w n e g o uruchamiania aplikacji Joomla!. Dyrektywy Apache w httpd.conf Podobnie j a k w przypadku PHP, wikszo zmian konfiguracji serwera Apache zwizana jest z a k t y w a c j moduw, co ma zapewni t s a m f u n k c j o n a l n o w obu rodowiskach. Plik configuration.php Joomla! Powiniene z a w s z e tworzy kopi z a p a s o w pliku c o n f i g u r a t i o n . p h p na s e r w e r z e p r o d u k c y j n y m , z a n i m p r z y s t p i s z do przenoszenia strony na serwer produkcyjny uchroni Ci to przed utrat ustawie waciwych dla serwera produkcyjnego. Pamitaj, aby d o p a s o w a warto odpowiednich parametrw w pliku p o zakoczeniu migracji, tak aby odpowiaday rodowisku p r o d u k c y j n e m u . K l u c z o w z m i a n przy przenoszeniu pliku configuration.php z serwera testowego na p r o d u k c y j n y j e s t d o p a s o w a n i e ustawie poczenia z b a z danych.

opia zapasowa Joomla!


Serwer testowy zawiera p r a w d o p o d o b n i e sporo danych, ktre chciaby przenie na serwer produkcyjny. Poniewa wszystkie dane systemu przechowywane s w bazie danych M y S Q L , m o e s z dokadnie w y b r a , ktre z nich s k o p i u j e s z , j e d n a k w t e d y transfer musi si o d b y za p o m o c M y S Q L . Liczba plikw, ktre naley zarchiwizowa, zaley od zmian w p r o w a d z a n y c h w systemie. Przykadowo jeli tworzysz kopi z a p a s o w prostej strony ktra od d o m y l n e j instalacji rni si wycznie dodanymi sekcjami, kategoriami i artykuami, a zmiany przeprowadzano z panelu administratora wystarczy skopiowa zawarto bazy danych i pojedynczy plik (configuration.php), a w przyszoci bdzie m o n a szybko odtworzy stron z kopii. Rzadko jednak zdarzaj si konfiguracje w swojej prostocie przypominajce powyszy opis. Zazwyczaj pierwsz rzecz wstawian na stron Joomla! jest nowe logo lub banner. Kolejnym krokiem s zmiany w szablonie i p o z o s t a y c h plikach. Dlatego w wikszoci p r z y p a d k w stworzenie kopii zapasowej w y m a g a take skopiowania wszystkich plikw.

284

Joomla!. Profesjonalne tworzenie stron WN 1W

Pamitaj, aby tworzy kopi zapasow plikw znajdujcych si na serwerze produkcyjnym nie wykorzystuj serwera testowego jako podstawy kopii. Chocia rodowisko testowe jest wanym etapem, waciwa strona, z ktrej korzystaj uytkownicy, znajduje si na serwerze produkcyjnym. Jeli ona zawiedzie, bdzie Ci zalee na przywrceniu jej w moliwie krtkim czasie. Serwer testowy odpowiada zazwyczaj pewnej fazie prac programistycznych i nie nadaje si do bezporedniego przeniesienia na serwer produkcyjny.

A p l i k a c j a M y S Q L A d m i n i s t r a t o r p o z w a l a na o k r e s o w e t w o r z e n i e kopii z a p a s o w e j bazy danych. Kliknij ikon Backup w lewej czci gwnego okna programu, a nastpnie, po tym, j a k zmieni si prawy panel, kliknij przycisk N e w Project. System kopii zapasowych zwiera wiele opcji (zobacz rysunek 11.5), ktre p o z w a l a j m.in. tworzy kopi z a p a s o w struktury i danych (wczajc w to tworzenie i u s u w a n i e tabel). Rysunek 11.5. Rozbudowane ustawienia planowanych kopii zapasowych w programie MySQL Administrator
Backup Project Advanced Options Schedule

A d v a n c e d Options * if* Specify detailed settings of how your backup should be performed Backup E ;ution Method The backup will be executed in a single transaction This option is necessary ti a consistent snapshot of your InnoDB tables All tables are locked with FLUSH READ LOCKS. This option is necessary to cr consistent snapshot of your MylSAM tables This backup method is the same as InnoDB Online Backup but also logs the c position of the binlog if the option is activated for the server Each table will be backed up independently. This may lead to inconsistent bac and should be avoided if possible Backup all tables. Use this option if tables are added to schmas frequently Nr backup content table selection will be ignored.

InnoDE Online Backup Lock all tables

Online with binlog pos

Normal backup

Complete backup

Output File Options Backup Type: No C R E A T E S Nn F X T F N D F n I N S F R T S | SQL Files Type of generated backup file. j Compatibility mod ' A N S I Quotes S a v e Project

* Complete INSERTS s s/\ Pnmmenl

L...

New Project

Konfiguracja wirtualnych serwerw Apache


Pojedynczy serwer Apache m o e obsugiwa wiele strony W W W . Przykadowo pojedynczy s e r w e r m g b y t e o r e t y c z n i e o b s u g i w a z a r w n o www.disney.com, jak i www.cnn.com. W i r t u a l n e s e r w e r y s d o s k o n a y m r o z w i z a n i e m w sytuacji, kiedy p o t r z e b u j e s z j e d n w e r s j strony dla k l i e n t w ( w w w . p r z y k l a d . c o m ) , a d r u g dla d o s t a w c w ( w w w . d o s t a w c y przyklad.com). F u n k c j a obsugi wielu stron A p a c h e p o z w a l a przypisa n a z w y d o m e n do poszczeglnych adresw IP. dania przesyane na dany adres IP p o w o d u j uruchomienie strony waciwej dla d a n e j d o m e n y . Jeli p r o w a d z i s z kilka stron J o o m l a ! na j e d n y m serwerze, w y s t a r c z y zainstalowa j e w oddzielnych katalogach i przypisa im oddzielne bazy danych 1 .
1

Alternatywnym rozwizaniem jest wykorzystanie jednej bazy danych z rnymi przedrostkami tabel poszczeglnych instalacji Joomla! p r z y p . tum.

Rozdzia 11. Prowadzenie profesjonalnej strony


Przykadowy fragment konfiguracji A p a c h e dla kilku stron m g b y wyglda tak:
<VirtualHost xx.xx.xx.xxx> ServerAlias przyklad.com ServerAlias *.przyklad.com ServerAlias innastrona.com ServerAlias *.innyadres.com ServerAl1 as http://www.i nnyadres.com/ ServerAlias innyadres2.com ServerAlias *. innyadres2.com ServerAli as http://www.i nnyadres2.com/ ServerAdmi n webmaster@przyklad.com DocumentRoot /home/przyklad/public_html BytesLog domlogs/przyklad.com-bytesjog ServerName http://www.przyklad.com/ <IfModule mod_php4.c> php_admin_value open_basedir "/home/przyklad:/usr/lib/php :/usr/1ocal/I ib/php:/tmp" </IfModule> <IfModule mod_php5.c> php_adm1n_value open_basedir "/home/przyklad:/usr/1 i b/php :/usr/1ocal/11b/php:/tmp" </IfModule> User przykad Group przykad CustomLog /usr/1ocal/apache/domlogs/przykl ad.com combined ScriptAlias /cgi-bin/ /home/przyklad/publicjitml/cgi-bin/ </Vi rtualHost>

285

W p o w y s z y m f r a g m e n c i e wirtualne serwery z a k a d a n e s na podstawie adresw IP, tzn. adresy IP przypisywane s wirtualnym serwerom dziaajcym na j e d n e j maszynie. Alternatywnym rozwizaniem s wirtualne serwery na podstawie domeny, ktre pozwalaj obsugiwa kilka stron w r n y c h d o m e n a c h na m a s z y n i e d y s p o n u j c e j j e d n y m a d r e s e m IP. S e r w e r uruchamia o d p o w i e d n i stron na podstawie parametru hostname dostarczonego w daniu H T T P . Wicej informacji na temat wirtualnych serwerw korzystajcych z przekierowania na podstawie d o m e n y znajdziesz na stronie serwera Apache (http://httpd.apache.org/docs/ 1.3/vhosts/name-based.html).

ontrola serwera Apache z wiersza polece


Wikszo zada administracyjnych serwera Apache przeprowadzanych jest z poziomu wiersza polece. Serwer m o e s z w s t r z y m a , u r u c h o m i , u r u c h o m i p o n o w n i e , a take z a t r z y m a , w p i s u j c o d p o w i e d n i e k o m e n d y . P r z y k a d o w o aby u r u c h o m i p o n o w n i e s e r w e r , n a l e y wprowadzi k o m e n d p o d o b n do poniszej:
C:\Program Files\Apache\Apache2.2\bin\httpd.exe -w -n "Apache2.2" -k restart

arzdzanie wieloma serwerami


Prawdopodobnie napotkasz w swojej pracy sytuacj, kiedy bdziesz prowadzi kilka stron opartych na Joomla!, zainstalowanych na rnych serwerach. W momencie pisania tej ksiki nie istniao n a r z d z i e , ktre p o z w a l a o z a r z d z a w i e l o m a s t r o n a m i J o o m l a ! z p o z i o m u

286

Joomla!. Profesjonalne tworzenie stron WN 1W


p o j e d y n c z e g o i n t e r f e j s u . O b e c n i e d o s t p n e s r o z w i z a n i a , ktre u a t w i a j zarzdzanie p o z o s t a y m i s e r w e r a m i . P r z y k a d o w o dla M y S Q L m o e s z s k o r z y s t a z p r o g r a m u , ktry pozwala zarzdza wieloma serwerami, w ten sposb uzyskujesz dostp z j e d n e g o miejsca do kilku baz danych Joomla!.

MySQL Instance Manager


M y S Q L Instance M a n a g e r jest n a r z d z i e m o b s u g i w a n y m z wiersza polece, dostpnym w wersji dla systemw uniksowych i Windows. Pozwala sprawdzi stan dowolnego z zestawu s e r w e r w , u r u c h o m i go, zatrzyma, a take u r u c h o m i p o n o w n i e . M o e s z take wybra chroniony (ang. guarded) serwer, ktry z o s t a n i e a u t o m a t y c z n i e u r u c h o m i o n y p o n o w n i e przez narzdzie M y S Q L Instance Manager w przypadku wystpienia bdu. Program ma funkcj ujednoliconej konfiguracji, ktra umoliwia wprowadzenie identycznych ustawie na wszystkich serwerach. Kontrolowane serwery nie musz znajdowa si w jednej sieci lokalnej, kontrolowa m o n a te serwery zdalne.

PhpMyAdmin
Jeli do zarzdzania serwerem M y S Q L wykorzystujesz narzdzie phpMyAdmin, moesz tak j e skonfigurowa, aby dziaao z w i e l o m a serwerami M y S Q L . Niezbdna zmiana w konfiguracji sprowadza si do ustawienia zmiennej $cfg['Servers' ], np. pole $cfg[ 'Servers'] '-[Si][ 'host' ]2 p o w i n n o zawiera n a z w danego serwera.

Testy obcieniowe
Przed p r z e n i e s i e n i e m strony do r o d o w i s k a p r o d u k c y j n e g o w a r t o podda system testowi obcieniowemu (ang. load testing). Test tego typu polega na wytworzeniu sztucznego obcienia serwera W W W (np. wysyanie setki da w bardzo krtkim czasie) i monitorowaniu rezultatu. Szczeglnie uyteczne jest sprawdzanie systemu przy obcieniu, ktre wykracza poza normalne warunki, dziki czemu mona w y z n a c z y granic poprawnego dziaania. Test obcieniowy mona przeprowadzi za p o m o c narzdzia open source o nazwie Dieseltest Load Testing Software, ktre przedstawiono na rysunku 11.6. Za p o m o c programu mona symulowa rne scenariusze, obcienie generowane przez setki lub tysice uytkownikw. M o l i w e j e s t z a p i s y w a n i e i o d t w a r z a n i e s c e n a r i u s z y , k t r y c h rezultaty w y w i e t l a n e s na bieco. Pakiet zawiera take narzdzia, ktre p o z w a l a j na analiz dziennikw, dziki czemu mona zebra dodatkowe statystyki. Program Dieseltest m o n a znale na stronie: http://sourceforge.net/projects/dieseltest

W miejsce $ naley wstawi 0 dla pierwszego serwera, 1 dla drugiego itd. p r z y p . liitm. 1

Rozdzia 11. Prowadzenie profesjonalnej strony


sunek 11.6. ilikacja Dieseltest muluje dziaania ytkownikw ) przeprowadzenia stu )cieniowego irwera

287

Current Test: Victual Users Run time (min:sec) Use recorded host

NewTesll.tst
Timeout (sec) Use recorded think time 60 (7

User ramp-up time (sec)

Create New Script... Scripts in this test

(Double-click a script below to edit). Scripts not in this test

Testy pod o b c i e n i e m dla serwera M y S Q L m o n a p r z e p r o w a d z i , stosujc aplikacj D B Monster, ktr znajdziesz na stronie: http://sourceforge.net/projects/dbmonster Narzdzie D B M o n s t e r tworzy n a j p i e r w l o s o w e dane, ktre z o s t a n u m i e s z c z o n e w bazie danych. Po wstawieniu danych moesz wykorzysta program do analizy zapyta, aby okreli, na ile zostay one zoptymalizowane i jak skutecznie dziaaj w przypadku duej iloci danych. Aby sprawdzi konfiguracj M y S Q L i ogln wydajno serwera, moesz wykorzysta pakiet Database Opensource Test Suite for Linux Test Project, dostpny na stronie: http.V/ltp.sourcefbrge. net

Kada z w y m i e n i o n y c h aplikacji p o z w a l a stworzy profil obcienia, tzn. okreli, j a k i e operacje bd przeprowadzane na serwerze w czasie testw. Stworzenie skutecznego profilu obcienia ma w sobie elementy sztuki i nauki. Wiele informacji, w s k a z w e k i zagadnie, ktre warto r o z w a y , tworzc profil obcienia, z n a j d z i e s z w artykule autorstwa S t e v e ' a Splaine'a Modeling the Real World for Load Testing W e b Sites" (www.stickyminds.com/ s.asp ?F=S3116_A R T_2).

rwnowaenie obcienia
Bliniaczym zagadnieniem dla testw pod obcieniem jest r w n o w a e n i e obcienia. Jeli strona zyska o g r o m n p o p u l a r n o , p r a w d o p o d o b n i e b d z i e d z i a a na kilku s e r w e r a c h , z ktrych cz m o e suy j a k o z a b e z p i e c z e n i e (nawet jeli j e d n a z m a s z y n z a w i e d z i e , strona nadal bdzie dostpna), a reszta m o e obsugiwa p r z e k a z y w a n e dania (rozsyane midzy identyczne serwery, aby zapewni lepsz w y d a j n o caej witryny). W rodowisku testowym moliwoci rwnowaenia obcienia s z reguy niewielkie. Serwer testowy dysponuje ograniczonymi zasobami, dziaa zazwyczaj w sieci lokalnej ( L A N ) i w y k o n u j e wszystkie usugi ( W W W , PHP i baz danych). Po przeniesieniu do rodowiska

288

Joomla!. Profesjonalne tworzenie stron WN 1W


p r o d u k c y j n e g o w i k s z o s y s t e m w J o o m l a ! b d z i e d o s t p n a w internecie, na j e d n y m lub kilku serwerach, a kady z nich bdzie dysponowa znaczc iloci pamici i miejscem na dysku twardym. P o d s t a w o w e techniki r w n o w a e n i a obcienia mona zastosowa na serwerze testowym, aby okreli j e g o sabe punkty. Z a a w a n s o w a n e r w n o w a e n i e obcienia w y m a g a jednak w a r u n k w o d p o w i a d a j c y c h rodowisku p r o d u k c y j n e m u . Narzdzie do r w n o w a e n i a obcienia o nazwie phpLoadBalancer znajdziesz na stronie: http://sourceforge.net/projects/phploadbalancer W przypadku wikszych systemw warto rozway aplikacj X L B HTTP Load Balancer (XLB) (http://sourceforge.net/projects/xlb) lub Linux Virtual Server (www.linuxvirtualserver.org). Wymienione programy umoliwiaj rwnowaenie obcienia na poziomie serwera, co skutk u j e lepsz skalowalnoci rozwiza.

Umidzynaradawianie
Podczas tworzenia wersji 1.5 aplikacja Joomla! zostaa napisana od podstaw, gwnie pod ktem obsugi stron w j z y k a c h innych ni angielski. J e d n y m z najwikszych w y z w a tego procesu byo wprowadzenie kodowania tekstu w standardzie UTF-8, co pozwala na skuteczn Obsug wielu j z y k w . S c h e m a t k o d o w a n i a z n a k w U T F - 8 z a k a d a z a p i s y w a n i e ich w postaci c i g w o rnej dugoci. Jeden znak (np. litera z aciskiego alfabetu) m o e z a j m o w a j e d e n bajt, podczas gdy inny (rzadki chiski p i k t o g r a m ) n a w e t trzy b a j t y . N a p r a w d rzadkie znaki w y m a g a j zuycia czterech bajtw. Powyszy schemat ma spor przewag nad standardem Unicode, ktry polega na zapisywaniu k a d e g o z n a k u w postaci d w c h b a j t w . K o d o w a n i e U T F - 8 p o z w a l a na bogatszy zestaw z n a k w , a r o z m i a r w i k s z o c i t e k s t w nie w z r a s t a z n a c z c o . P o n i e w a litery aciskie k o d o w a n e s w postaci j e d n e g o bajta, teksty w j z y k a c h z a c h o d n i o e u r o p e j s k i c h (a take niektrych r o d k o w o e u r o p e j s k i c h , np. p o l s k i m ) m a j rozmiar p o r w n y w a l n y z tekstami zakodowanymi systemami j e d n o b a j t o w y m i \ przy czym tekst zapisany w ten sposb nie jest ograniczony do j e d n e g o j z y k a . Wszystkie n o w e w y d a n i a Joomla! z a w i e r a j pen obsug wielu j z y k w , a take tekstw pisanych od p r a w e j d o lewej. Jeli p l a n u j e s z obsug z n a k w spoza alfabetu aciskiego, sprawd czy Joomla! i serwer M y S Q L zostay odpowiednio skonfigurowane, aby korzysta z kodowania UTF-8.

Np. ISO 8859-2 i CP1250, dwoma popularnymi systemami kodowania znakw na polskich stronach internetowych przed rozpowszechnieniem UTF-8 przyp. tum.

Rozdzia 11. Prowadzenie profesjonalnej strony

289

utomatyczne cenzurowanie treci


Jeli strona pozwala na publikowanie treci napisanych przez uytkownikw, warto zastosowa narzdzia, ktre u s u w a j c w u l g a r y z m y i inne n i e p o d a n e treci, z a p o b i e g n u r a e n i u pozostaych odwiedzajcych. Wiele z narzdzi opisanych w rozdziale 10. (w tym ksigi goci) m a w b u d o w a n e f u n k c j e automatycznej cenzury niepodanych sw. Warto zainteresowa si take r o z s z e r z e n i e m Foul Filter, ktre u k r y w a w s z y s t k i e sowa z listy okrelanej przez administratora. U k r y w a n i e m o e o d b y w a si dla tekstw uytkownikw z danych grup lub dla wszystkich. W y b r a n e sowa z o s t a n zastpione g w i a z d k (*). Wtyczka nie zmienia treci a r t y k u w , tylko p r z e c h w y t u j e i z m i e n i a tekst, z a n i m zostanie p r z e s a n y d o p r z e g l d a r k i . T a k i e r o z w i z a n i e p o z w a l a na p o z o s t a w i e n i e o r y g i n a l n y c h materiaw w stanie n i e n a r u s z o n y m , a take na z m i a n zasad (np. d o d a n i e n o w y c h sw do listy cenzurowanych lub rehabilitacja dotychczasowych). Zmiany b d widoczne natychmiast po wprowadzeniu. Rozszerzenie Foul Filter mona znale na stronie: www.girlsgonedumb.com/component/option, funcjileinfo/id, 1 comremos i torv/ltemid,41/

lostrajanie wydajnoci MySQL


Chocia o d p o w i e d n i e ustawienia m o g z n a c z c o p r z y s p i e s z y dziaanie P H P , p r a w d z i w y potencja drzemie w konfiguracji serwera M y S Q L . Poniewa wszystkie materiay Joomla! pobierane s z bazy danych M y S Q L , dostrojenie w y d a j n o c i M y S Q L m o e przynie znaczc popraw szybkoci dziaania strony W W W zwaszcza jeli dziaa ona pod d u y m obcieniem. Dostrajanie wydajnoci MySQL wykracza poza zmian konfiguracji. Jeli korzystasz z rozszerze, ktre wykonuj zapytania do bazy danych, rwnie znaczcy, co optymalna konfiguracja, jest format tabel, sposb pracy z baz danych i oglna konstrukcja zapyta. Dlatego optymalizacja M y S Q L p o w i n n a p r z e b i e g a d w u t o r o w o : z j e d n e j strony n a l e y o d p o w i e d n i o dobra ustawienia serwera, a z drugiej zoptymalizowa aplikacj i struktur bazy danych.

istawianie dysku przechowujcego dane


Serwer M y S Q L pozwala okreli miejsce przechowywania danych. Jeli korzystasz z serwera na platformie W i n d o w s , m o e s z zwikszy w y d a j n o , p r z e c h o w u j c dane na innym dysku ni system operacyjny. Odbieranie i zapisywanie informacji p o w i n n o przebiega szybciej.

290

Joomla!. Profesjonalne tworzenie stron WN 1W

Wybr typu serwera


A p l i k a c j a M y S Q L p o z w a l a a u t o m a t y c z n i e dobra ustawienia, aby uzyska maksymaln wydajno dla danego zastosowania. R a z e m z serwerem instalowane jest narzdzie o nazwie M y S Q L Server Instance Configuration Wizard. Pozwala ono zmieni konfiguracj, by dopasowa j do roli systemu. Uruchom program i wybierz opcj Reconfigure Instance, a nastpnie Detailed Configuration. Ekran Server Type, przedstawiony na rysunku 11.7, umoliwia wybr jednego ze standardowych zada, ktre m a spenia serwer M y S Q L . Oczywistym wyborem na serwerze testowym jest Developer Machine. Ustawienie Server Machine dostosuje MySQL do warunkw serwera, na k t r y m u r u c h o m i o n o kilka usug. O p c j Dedicated MySQL Server Machine stosuje si w przypadku m a s z y n obsugujcych wycznie serwer baz danych. Rysunek 11.7. Wybr typu serwera dopasuje ustawienia pamici, wykorzystanie dysku twardego i pamici podrcznej pod ktem rodowiska
MySQL Server Instance Configuration Wizard
MySQL Server Instance Configuration Choose the configuration for the server instance. Please select a server type. This will influence memory, disk and CPU usage. Developer Machine: | ggggf f This is a development machine, and many other applications will be run on it. MySQL Server should only use a minimal amount of memory.

Server Machine s J| Several server applications will be running on this machine, Choose this option for web/application servers. MySQL will have medium memory usage.

Dedicated MySQL Server Machine ( \ J! This machine is dedicated to run the MySQL Database Server, No other servers, such as a web or mail server, will be run, MySQL will utilize up to all available memory.

U s t a w i e n i a w y k o r z y s t a n i a s e r w e r a baz d a n y c h , z i l u s t r o w a n e na r y s u n k u 11.8, powinny w s k a z y w a w p r z y p a d k u wikszoci s y s t e m w Joomla! d o m y l n o p c j Multifunctional Database. Jeli j e d n a k p r o w a d z i s z stron, ktra nie musi o b s u g i w a d u e j iloci danych w p r o w a d z a n y c h przez u y t k o w n i k w lub sklep internetowy, ktry w y m a g a zachowania spjnoci transakcji, opcja Non-Transactional Database Only zwikszy w y d a j n o serwera. Jeli prowadzisz stron e-commerce, dla ktrej spjno transakcji ma najwysze znaczenie, najlepszym w y b o r e m bdzie p r a w d o p o d o b n i e Transactional Database Only. Ekran ustawie pocze, p r z e d s t a w i o n y na r y s u n k u 11.9, pozwala okreli oczekiwan liczb jednoczesnych pocze. Dla wikszoci instalacji Joomla! ustawienie Decision Support (DSS)/OLAP bdzie dobrym wyborem. Wybr opcji Online Transaction Processing (OLTP) spowoduje zuycie wikszej czci zasobw, poniewa zostan zarezerwowane na wypadek w y s z e g o obcienia. Kolejne ekrany p o z w a l a j dostawa opcje zwizane z protokoem sieciowym, trybem strict i innymi. Nie zmieniaj domylnych ustawie, chyba e ze wzgldu na zapor sieciow musisz z m i e n i n u m e r portu M y S Q L . N i e p o w i n i e n e w p r o w a d z a z m i a n na ekranie wyboru domylnego zestawu znakw (zobacz rysunek 11.10), chyba e planujesz ponown instalacj Joomla!. Zestaw z n a k w bazy danych powinien zosta ustawiony przed instalacj Joomla!, aby instalator odpowiednio dopasowa procedury skadowania w bazie danych.

Rozdzia 11. Prowadzenie profesjonalnej strony 291

sunek 11.8. ona ograniczy py baz danych -) wielofunkcyjnyc baz danych, sz wycznie Usugujcych ansakcje i baz ez obsugi ansakcji

MySQL Server Instance Configuration Choose the configuration for the server instance, Please select the database usage. C Multifunctional Database General purpose databases. This will optimize the server for the use of the fast transactional InnoDB storage engine and the high speed MylSAM storage engine. Transactional Database Only Optimized for application servers and transactional web applications, This will make InnoDB the main storage engine. Note that the My 15AM engine can still be used. * fSon-Transactional Database Only! Suited for simple web applications, monitoring or logging applications as well as analysis programs. Only the non-transactional MylSAM storage engine will be activated.

Ksunek 11.9. 1stawienia ocze serwerem ptymalizuj lySQL pod ktem czekiwanego bcienia

MySQL Server Instance Configuration Wizard MySQL Server Instance Configuration Choose the configuration for the server instance. Please set the approximate number of concurrent connections to the server, Decis;ionSupport(DSS)/OLAP: a jjk m$r Select this option for database applications that will not require a high number of concurrent connections. A number of 20 connections will be assumed.

Online Transaction Processing (OLTP) j* / jk Choose this option for highly concurrent applications that may have at any one time up to 500 active connections such as heavily loaded web servers.

Manual Setting "r'i Please enter the approximate number of concurrent connections. Concurrent connections:

ysunek 11.10. Vybierz opcj lest Support for Aultilingualism UTF8), jeli ilanujesz obsug nnych jzykw li angielski

MySQL Server instance Configuration W i z a r d MySQL Server Instance Configuration Choose the configuration for the server instance. Please select the default character set. Standard Character Set fHeio!) Makes Latin 1 the default charset. This character set is suited for M k t , . E n g l i s h and other West European languages.

Best Support For Multilingualismi


M a ke

UTF8 the default character set, This is the recommended character set for storing text in many different languages. Manual Selected Default Character Set / Collation 4T ? j Please specify the character set to use. Character Set: utf8

< Back

j I

Next >

Cancel

292

Joomla!. Profesjonalne tworzenie stron WN 1W


P o z o s t a e u s t a w i e n i a to k w e s t i a o s o b i s t y c h p r e f e r e n c j i , nie m a j o n e d u e g o znaczenia dla konfiguracji Joomla!. Jeli jednak zmienisz haso dostpu do serwera baz danych, musisz o d p o w i e d n i o z m i e n i plik configuration.php, aby a p l i k a c j a m o g a p o p r a w n i e czy si z serwerem baz danych.

rdo problemw
Baza danych Joomla! zostaa zaprojektowana pod ktem oglnego wykorzystania, dlatego istniej sposoby, aby poprzez zmian j e j struktury uzyska w y s z wydajno. Na dodatek tabele, ktre tworzysz na potrzeby wasnych rozszerze, take m o n a zoptymalizowa.

Optymalizacja indeksw
Jednym z gwnych obszarw odpowiedzialnych za problemy z wydajnoci s indeksy tabel w y k o r z y s t y w a n e p r z e z s e r w e r b a z d a n y c h ( w a n i e m a n i p u l a c j a indeksami jest rdem n a j w i k s z y c h z y s k w w y d a j n o c i ) . D a n e w b a z i e d a n y c h p r z e c h o w y w a n e s w lunym p o r z d k u (s n i e p o s o r t o w a n e ) . N a przykad dla tabeli p r z e c h o w u j c e j dane o kontaktach rekord dla nazwiska Zieliski" m o e zosta zapisany j a k o pierwszy, a rekord dla nazwiska A d a m c z y k " na s a m y m kocu. U t w o r z e n i e p o s o r t o w a n e j listy wszystkich nazwisk, ktre zaczynaj si na liter B", wymagaoby powicenia duej czci zasobw i czasu procesora. A b y p r z y s p i e s z y f u n k c j e w y s z u k i w a n i a i s o r t o w a n i a , s e r w e r baz d a n y c h w y k o r z y s t u j e i n d e k s y , tj. list o d w o a d o r e k o r d w p o s o r t o w a n w p e w i e n s p o s b . W r a z z danymi na serwerze zapisywany jest take indeks. W naszym przykadzie zapytanie spowodowaoby odwoanie si do indeksu dla pola nazwisko. Indeks w bazie danych gra tak rol jak skorowidz w ksice p o z w a l a s z y b k o o d n a l e o d p o w i e d n i stron (lub rekordy w przypadku bazy danych). Indeksy naley utworzy dla wszystkich pl (lub ich kombinacji) czsto wykorzystywanych w z a p y t a n i a c h . N a r y s u n k u 11.11 z i l u s t r o w a n o f u n k c j p r o g r a m u M y S Q L Administrator, ktra p r z e d s t a w i a list i n d e k s w bazy danych J o o m l a ! . P r z y k a d o w o tabela jos content posiada siedem powizanych indeksw, co umoliwia szybkie sortowanie danych po wartoci pl, takich j a k access, catid, section itd. Kiepski dobr indeksw jest jednym z gwnych powodw problemw z wydajnoci. Indeksy r z a d k o u y w a n e (lub n i g d y n i e u y w a n e ) nie p r z e o si na znaczcy wzrost wydajnoci. Wrcz przeciwnie m o g spowolni prac serwera, poniewa w y m a g a j zapisywania d o d a t k o w y c h danych przy wstawianiu n o w y c h lub m o d y f i k o w a n i u istniejcych rekordw.

Zastosowanie indeksw kompozytowych


P r o s t e i n d e k s y o d w o u j si w y c z n i e d o j e d n e g o p o l a np. n a z w i s k a . Istniej take indeksy, ktre o d w o u j si d o kilku pl, np. n a z w i s k a i imienia. Indeksy tego typu nosz n a z w indeksw kompozytowych. P r z y k a d o w o i n d e k s o n a z w i e nazwisko_imie m g b y w s k a z y w a na d w a pola nazwiska i imienia.

Rozdzia 11. Prowadzenie profesjonalnej strony


ysunek 11.11. ista indeksw 'tworzonych IIa bazy danych oomla! / programie /lySQL idministrator
Schema Tables Schema Indices Views Sloied procedures

293

ODiiila15 All loomlal 5 indices Table Name jos_contact_details ios_fb_messages ~ ~ jos_newsfeeds jos_sb_categories ~ | jos_sb_messages ~ jos_sb_moderation jos_weblinks ~J| jos_sb_categories Fin! os_categories osjnenu jos_comment jos_users jos_users i s _'h_users Type BTREE BTREE BTREE BTREE BTREE BTREE BTREE BTREE BTREE BTREE BTREE BTREE BTREE BTREE BTREE BTREE UNIQUE NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL UNIQUE Unique Not Nu NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL

Index Name > 3 cslf j catid * > 3 > 3 i catid catid catid catid ^ catid catpaient

M ca,-idx y components " 3 com_contentid 3 email j j gid_block J groupJd

3 group_id_aro_id_groups_ar ~ y jos_core_acl_gtoups_aro_r BTREE ~ 3 jos_fb_messages jos_sb_messages

" 3 hold time

<

>

Jednym i najczstszych z bdw, ktre niwecz zysk wydajnoci, jest porzdek pl tworzonego indeksu. Podczas tworzenia indeksu odwoania sortowane s w e d u g kolejnych pl, tzn. dla indeksu nazwisko_imie wpisy sortowane s najpierw w e d u g nazwiska, a nastpnie w e d u g imienia. Z tego p o w o d u w y s z u k i w a n i e rekordw w e d u g nazwiska bdzie korzysta z tego indeksu, natomiast zapytanie o d w o u j c e si wycznie do pola imienia nie zyska na zastosowaniu indeksu, poniewa nieoczekiwany wynik zapytania nie p o k r y w a si z zaoeniami indeksu w bazie danych.

nlkatowe wartoci indeksowanego pola


M o e si w y d a w a , e zastosowanie indeksw zawsze przynosi wzrost wydajnoci. Nie jest to prawd, p o n i e w a serwer baz d a n y c h p r z e p r o w a d z a a u t o m a t y c z n i e w i e l e operacji, aby zoptymalizowa w y k o n y w a n e zapytanie. J e d n y m z etapw procesu optymalizacji jest okrelenie, czy zapytanie zostanie przetworzone z w y k o r z y s t a n i e m indeksw, czy nie. Jedn z metod okrelenia, czy zastosowa indeks, jest sprawdzenie, czy wicej ni 30 procent i n d e k s o w a n y c h pl m a u n i k a t o w e wartoci. P r z y k a d o w o baza k o n t a k t w m o e z a w i e r a pole wojewodztwo. Jeli 90 procent osb wprowadzonych w bazie danych mieszka w Zachodniopomorskiem, zastosowanie indeksu podczas wykonywania zapytania wywoaoby skutek odwrotny do zamierzonego. Serwer baz danych musiaby w tym przypadku sprawdzi indeks, wybra pasujce rekordy, wczyta j e i w kocu pobra w a c i w e dane. Jeli j e d n a k indeks zostaby z i g n o r o w a n y , w y s t a r c z y o b y p o b r a rekord, sprawdzi, czy w a r t o pola wojewodztwo jest odpowiednia, i zwrci dane j a k o wynik. Dlatego indeksy pl lub kolumn, ktrych unikatowo rekordw wynosi mniej ni 30 procent, s automatycznie ignorowane, a serwer o p e r u j e b e z p o r e d n i o na d a n y c h z b a z y . W takiej sytuacji zastosowanie indeksu kompozytowego (np. wojewodztwo_nazwisko) mogoby spowodowa znaczcy wzrost wydajnoci zapyta w y m a g a j c y c h obu tych informacji.

294

Joomla!. Profesjonalne tworzenie stron WN 1W


Poniewa dla wikszoci baz danych charakterystyka zawartoci zmienia si wraz z rozwojem bazy, strategie indeksowania pl naley regularnie rewidowa i sprawdza, czy wczeniejsze zaoenia nadal m a j pokrycie w praktyce.

Usuwanie nadmiarowych indeksw


Kady dodatkowy indeks wydua czas potrzebny na zapisanie rekordu w tabeli. Po dodaniu nowych lub zmodyfikowaniu istniejcych rekordw trzeba przebudowa wszystkie indeksy, aby ich posortowanie odpowiadao porzdkowi danych. Dlatego nadmiarowe indeksy przyc z y n i a j si d o spowolnienia systemu. Chocia nie musi to by p r o b l e m e m dla tradycyjnej strony J o o m l a ! , strona e - c o m m e r c e z d u l i c z b transakcji lub p o p u l a r n e f o r u m moe w y m a g a usunicia niepotrzebnych opnie. Pierwszym krokiem podczas usuwania nadmiarowoci jest sprawdzenie, czy proste indeksy nie p o k r y w a j si z indeksami k o m p o z y t o w y m i . Jeli przykadowo dla tabeli utworzono indeks nazwiskojmie, indeks nazwisko jest cakowicie zbdny, poniewa M y S Q L wykorzysta indeks kompozytowy podczas wyszukiwania danego pola. Podobnie indeks nazwisko_imie_drugieimie wyklucza konieczno stosowania indeksu nazwiskojmie. Zwaszcza podczas pracy g r u p o w e j m o e zdarzy si sytuacja, e zostan dodane indeksy, k t r y c h f u n k c j e si p o k r y w a j . D l a t e g o z a w s z e s p r a w d z a j , czy b a z a d a n y c h nie zawiera nadmiarowych indeksw. Eliminacja ich m o e poprawi w y d a j n o .

Wykorzystuj najmniejszy moliwy typ danych


Konstruujc tabele dla rozszerzenia, nad ktrym pracujesz, powiniene zwrci szczegln u w a g na d o b r w a c i w y c h t y p w d a n y c h dla pl lub k o l u m n . Projektanci baz danych czsto u l e g a j pokusie przeprojektowywania tabel, szczeglnie po dowiadczeniach zwiz a n y c h z z a p i s e m roku 2 0 0 0 (rok p r z e c h o w y w a n y by w bazach d a n y c h w postaci dwch cyfr, co mogo stanowi szczeglny problem przy przejciu do nowego tysiclecia). Pomijajc to, w a r t o p a m i t a , e o g r a n i c z e n i e r o z m i a r u d a n y c h m a z a z w y c z a j p o z y t y w n y w p y w na wydajno, poza tym nie warto take przejmowa si bliej nieokrelonymi trudnociami, ktre m o g y b y wystpi w przyszoci. Przykadowo jeli masz zamiar zapisywa n u m e r dnia w danym roku, zastosuj typ SMALLINT ( k t r e g o z a k r e s siga o k o o 32 0 0 0 ) z a m i a s t s t a n d a r d o w e g o INT ( k t r e g o z a k r e s siga 2 miliardw, ale ktrego zapis z a j m u j e dwa razy tyle miejsca). Chocia taka oszczdno moe w y d a w a si z n i k o m a , j e j poytek staje si j a s n y w w i k s z e j skali. W y o b r a sobie strat 2 b a j t w na polu, pom to przez 8 pl, pomn to przez 30 u y t k o w n i k w podczas jednej sesji, pomn to przez 2 0 0 0 odwiedzajcych w cigu godziny i zobacz, ile niepotrzebn y c h d a n y c h z o s t a o p r z e t w o r z o n y c h w bazie d a n y c h . A to p r z e c i e strata tylko dwch b a j t w dla j e d n e g o pola. Wyobra sobie teraz najgorszy moliwy scenariusz, tabela zawiera pole typu CHAR o okrelonej dugoci 200, zamiast pola typu VARCHAR. Ilo zmarnowanego miejsca i przesyanych danych bdzie stale wzrasta, znaczco ograniczajc wydajno systemu. W tabeli 11.1 umieszczono list typw danych, ktre mona wykorzysta w M y S Q L , wraz z ograniczeniami, jakie nakadaj, a take informacjami o miejscu z a j m o w a n y m w bazie danych. Zawarto tabeli powinna by p o m o c n a w okrelaniu n a j m n i e j s z e g o typu danych, ktry odpowiada danej sytuacji.

Rozdzia 11. Prowadzenie profesjonalnej strony


bela 11.1. Tabela Typy danych MySQL yp danych
INYINT MALL I NT EDIUMINT NT IGINT

295

Opis Liczba cakowita z zakresu - / + 127 Liczba cakowita z zakresu - / + 32.767 Liczba cakowita z zakresu - / + 8.388.607 Liczba cakowita z zakresu - / + 2.147.483.647 Liczba cakowita z zakresu - / + 9.223.372.036.854.775.807 Liczba zmiennoprzecinkowa o pojedynczej precyzji Liczba zmiennoprzecinkowa o podwjnej precyzji Liczba zmiennoprzecinkowa o dokadnoci okrelanej przez uytkownika Cig znakw o okrelonej dugoci Cig znakw o zmiennej dugoci z narzuconym limitem Tekst o zmiennej dugoci Tekst o zmiennej dugoci Tekst o zmiennej dugoci Dane binarne Dane binarne Dane binarne Data zapisana zgodnie ze standardem ISO 8601 4

Liczba bajtw i 2 3 4 8 4 8 Zmienna Okrelona dugo, do 255 Zmienna (do 65.535) Zmienna (do 65.535) Zmienna (do 16.777.216) Zmienna (do 4.294.967.295) Zmienna (do 65.535) Zmienna (do 16.777.216) ' Zmienna (do 4.294.967.295) 3 3 8 4 1 1 lub 2 od 1 do 8

LOAT DOUBLE DECIMAL

;HAR /ARCHAR

rEXT 1EDIUMTEXT _0NGTEXT

3L0B
1EDIUMBL0B _0NGBL0B DATE TIME 1ATETIME

Czas zapisany zgodnie ze standardem ISO 8601 3 czony zapis daty i czasu w formacie yyyy-ddmmhh:mm:ss czony zapis daty i czasu w postaci liczby sekund od 1 stycznia 1970 roku Rok w formacie YYYY Lista predefiniowanych wartoci, z ktrej mona wybra jedn Lista predefiniowanych wartoci, z ktrej mona wybra zero, jedn lub wicej

TIMESTAMP

YEAR ENUM

SET

Opisywanym take jako yyyy-mm-dd, np. zapis 2008-12-11 odpowiada zapisowi 11 grudnia 2008 roku przyp. tum. Oznaczanym take jako hh:mm:ss, np. 23:59:59 p r z y p . tum.

296

Joomla!. Profesjonalne tworzenie stron WN 1W


P a m i t a j , e kiedy t w o r z y s z indeks, p r z e c h o w y w a n e s nie tylko o d w o a n i a do wybran y c h k o l u m n z a p i s y w a n e s t a k e a k t u a l n e d a n e tych k o l u m n . D l a t e g o utworzenie i n d e k s u k o l u m n y , k t r e j typ u s t a w i o n o na char(200), o z n a c z a , e k a d y indeks bdzie zawiera d o d a t k o w o 200 b a j t w dla kadego rekordu. A b y oszczdza miejsce i ogranicza p r z e t w a r z a n i e i n d e k s w , staraj si u n i k a i n d e k s o w a n i a k o l u m n z a w i e r a j c y c h wiksze porcje danych.

Pobieraj wycznie to, czego potrzebujesz


Wielu pocztkujcych programistw wykorzystuje zapytania p o d o b n e do poniszych:
SELECT * FROM joc_contact_details

Dziki d o k a d n e m u okreleniu, ktre pola w y m a g a n e s przez aplikacje, czas przesyania danych zostanie znaczco ograniczony:
SELECT name, telephone FROM jos_contact_details

P o d c z a s k o n s t r u o w a n i a z a p y t a p o b i e r a j t y l k o n i e z b d n e d a n e . N i e z a p o m i n a j , e pola w y k o r z y s t y w a n e w klauzuli WHERE nie m u s z b y d o c z a n e d o z w r a c a n y c h w y n i k w . O z n a c z a to, e m o e s z zoptymalizowa zapytanie j e s z c z e bardziej:


SELECT name, telephone FROM jos_contact_details WHERE postcode = '92107'

Stosowanie komendy EXPLAIN


Jednym z najefektywniejszych sposobw optymalizacji zapytania jest analiza wyniku instrukcji EXPLAIN. Umieszczenie komendy EXPLAIN przed waciwym zapytaniem spowoduje zwrcenie informacji o zapytaniu zamiast waciwych danych:
EXPLAIN SELECT * FROM jos_contact_detan1s

Poniej umieszczono list k o l u m n zwracanych po w y k o n a n i u instrukcji EXPLAIN: Kolumna select type Okrela typ w y k o n a n e g o zapytania. W a r t o simple o z n a c z a , e z a p y t a n i e nie z a w i e r a o p o d z a p y t a ani o p e r a t o r a UNION. Primary oznacza gwne zapytanie (jeli zastosowano podzapytania). Union, Dependent Urn on i Union Result o d w o u j si d o z a p y t a z o p e r a t o r e m UNION. Subquery, Dependent Subquery, Uncacheable Subquery i Derived w s k a z u j e podzapytanie. Kolumna type Opisuje, w jaki sposb wykonywane s zapytania czone. Wartoci system i const odpowiadaj wyszukiwaniu najwyej po jednym kluczu. Inne moliwe wartoci to eq_ref, ref, ref_or_nul1, index_merge, unique_subquery, index_subquery, range i index. Warto all oznacza, e podczas wykonywania zapytania dane z tabeli w y k o r z y s t a n o bezporednio, z pominiciem indeksw. Kolumna possi bl e_keys Lista p o t e n c j a l n y c h i n d e k s w , ktre m o g y b y zosta w y k o r z y s t a n e podczas uruchamiania zapytania. Kolumna key W s k a z u j e n a z w indeksu M y S Q L , ktry zosta wykorzystany podczas uruchamiania zapytania.

Rozdzia 11. Prowadzenie profesjonalnej strony

297

Szczeglnie polecam zapoznanie si z sekcj Optimizing Queries with EXPLAIN" w podrczniku MySQL (frttp://dev.mysql.com/doc/refman/5.0/en). Komenda E X P L A I N to najpotniejsze i najuyteczniejsze narzdzie do optymalizacji zapyta. Zwr szczegln uwag na kolumn type, poniewa jej warto najczciej podpowiada, jakie dziaania naley podj.

ptymalizacia istniejcego systemu


Po uruchomieniu strony Joomla! nie koczy si praca zwizana z j e j optymalizacj. W r c z o d w r o t n i e , d o s t r a j a n i e na p o d s t a w i e o b s e r w a c j i p r a w d z i w e g o s y s t e m u d a j e d u o lepsze rezultaty ni optymalizacja oparta na zaoeniach. W systemie M y S Q L badanie w y d a j n o c i i okrelanie sabych punktw jest szczeglnie proste. Profilowanie jest j e d n z metod diagnozowania dziaajcego systemu i okrelania jego sabych p u n k t w . J e d n y m z d o s k o n a y c h n a r z d z i d o t e g o celu j e s t dziennik powolnych zapyta (ang. slow queries log). D z i e n n i k ten p r z e c h o w u j e w s z y s t k i e z a p y t a n i a S Q L , k t r y c h uruchamianie trwao duej ni warto parametru long_query_tlme. Domylnie warto tej zmiennej ustawiona jest na 10 sekund. Funkcj rejestrowania powolnych zapyta mona uaktualni dziki opcji Startup Variables aplikacji M y S Q L Administrator. W zakadce Log files w c z o p c j Slow Queries Log, j a k przedstawiono to na rysunku 11.12, a w pole tekstowe obok w p r o w a d nazw pliku. Jeli nie wprowadzisz adnej nazwy, dziennik zostanie zapisany w pliku host_name-slow.log. Aby nowe ustawienia zaczy obowizywa, musisz ponownie uruchomi serwer M y S Q L . ysunek 11.12. Vlcz opcj Slow Queries Log, i w pole tekstowe vprowadz nazw Iziennika
InnoDB Parameter Security Performance Advanced

langes will have no effect until you restait the server.


0 Slow Queries Log: : >< . " J w u l " , l Enter a name for (he slow query log Otherwise a default name will be used.

Option File: c:\xampp\mysql\bin\my.cnf Apply changes j j Discard changes [

R e j e s t r o w a n i e z a p y t a m o n a w c z y take z p o z i o m u w i e r s z a p o l e c e , u r u c h a m i a j c M y S Q L komend:
mysqld - -1og-siow-querles=joomlaSlowQLog

298

Joomla!. Profesjonalne tworzenie stron WN 1W


Po zarejestrowaniu zapyta w dzienniku moesz wygenerowa podsumowanie, uruchamiajc z wiersza polece instrukcj:
mysql dumpsl ow <ci eka-do-pli kw-dzienni ka-MySQL>/joomlaSlowQLog

Przecznik - help wywietli list parametrw k o m e n d y dump. Dane na temat wydajnoci zapyta MySQL moesz uzyska, take stosujc modu myshow. Nie jest to atwe narzdzie, zarwno w zakresie konfiguracji, jak i uruchamiania. Dlatego najpierw warto zapozna si z informacjami na stronie domowej programu (http://jfontain.free.fr/myshow/myshow.htm), aby okreli, czy spenia ono Twoje potrzeby.

Powiniene nie tylko o b s e r w o w a w y d a j n o zapyta M y S Q L , ale take analizowa ogln wydajno systemu. Narzdzie MyTop (http://jeremy.zawodny.com/mysql/mytop) przypomina funkcjonalnoci program Top w systemie Linux, jednak odnosi si do monitorowania wtkw i o g l n e j w y d a j n o c i serwera M y S Q L . M o l i w e j e s t o b s e r w o w a n i e lokalnych i zdalnych serwerw. Program dostpny jest dla systemw W i n d o w s , Linux i MacOS.

Administracja
Dziki J o o m l a ! a d m i n i s t r a c j a staa si b a r d z o prosta. J e d n a k e w r a z z r o z r o s t e m strony z a r z d z a n i e materiaami i u w i e r z y t e l n i a n i e m u y t k o w n i k w oraz p o r z d k o w a n i e systemu w celu usunicia nieaktualnych danych staje si uciliwym zadaniem. Ale istniej metody radzenia sobie z tymi problemami, w gwnej mierze dziki zastosowaniu otwartych standard w w systemie Joomla! i kompatybilnoci z wieloma technologiami. P r z y k a d o w o uwierzytelnianie m o n a u s p r a w n i dziki z a s t o s o w a n i u LDAP (Lightwieght Directory Access Protocol), co pozwala globalnie zarzdza kontami uytkownikw. Zarzdza menu, u y t k o w n i k a m i i starymi materiaami m o n a z a r w n o z poziomu interfejsu administratora, jak i poprzez bezporedni manipulacj bazy danych Joomla! za p o m o c narzdzi M y S Q L . W i k s z o zada z w i z a n y c h z z a r z d z a n i e m , n a w e t w p r z y p a d k u duych stron Joomla!, m o n a w y k o n a bez drogich i zoonych narzdzi.

Uwierzytelnianie LDAP
L D A P jest standardem, ktry okrela sposoby scentralizowanej autoryzacji dostpu. Zamiast oddzielnego konta w k a d y m systemie, z ktrego korzysta uytkownik, mona zastosowa centraln autoryzacj za p o m o c katalogu L D A P , ktry umoliwia uwierzytelnianie uytk o w n i k a w d o w o l n y m systemie. P r z y k a d o w o s e r w e r L D A P m g b y zawiera informacje o uwierzytelnianiu niezbdne dla serwera W W W , FTP, CMS, poczty itd. Oznacza to, e pojedyncze konto uytkownika przechowywane na centralnym serwerze LDAP pozwala na dostp do wszystkich pozostaych serwerw.

Rozdzia 11. Prowadzenie profesjonalnej strony

299

Na szczcie do Joomla! doczona jest wtyczka, ktra obsuguje uwierzytelnianie L D A P . C h o c i a nie da si z a p i s a p r z y n a l e n o c i d o g r u p y (np. R e d a k t o r , A d m i n i s t r a t o r itd.) na serwerze L D A P , mona p r z e c h o w y w a tam n a z w uytkownika i haso.

odateK LDAP
A b y wczy f u n k c j o n a l n o L D A P w systemie Joomla!, u r u c h o m o p c j Dodatki z m e n u Rozszerzenia w panelu administratora. W a c i w e rozszerzenie nosi n a z w Authentication LDAP. Kliknij jego nazw, aby wywietli list parametrw, jak przedstawiono to na rysunk u 11.13. U s t a w warto parametru Opublikowany na Tak, p o n i e w a d o m y l n i e dodatek jest wyczony. ysunek 11.13. 'aramei/y iodatku LDAP imoliwiaj iokan (onfiguracj iostpu 1o serwera LDAP
Jodatek: pmien]

yt
Pi efet elicie Ustawienia dodntku

y'

Tvp authentication NI. O M i * * n i "LE2SLS O O T. n i*

(Lekki protok dostp

Jeli dany serwer L D A P obsuguje opcj s z y f r o w a n y c h pocze, ustaw warto parametru Negocjacja TSL na Tak. To spowoduje szyfrowanie poczenia z serwerem LDAP, co chroni przesyane dane przed przechwyceniem. W pole oznaczone Podstawowa DN wprowad nazw wyrniajc serwer L D A P (powinna by n i e p o w t a r z a l n a ) . P a r a m e t r o w i Szukaj wyraenia n a l e y p r z y p i s a cig s t o s o w a n y przy w y s z u k i w a n i u n a z w y u y t k o w n i k a . P r z y k a d o w o w a r t o uid=[search] s p o w o d u j e w y s z u k a n i e n a z w y u y t k o w n i k a w k o l u m n i e uid. Pole DN uytkownika wykorzystywane jest w y c z n i e przy b e z p o r e d n i c h p o w i z a n i a c h , j e g o u s t a w i e n i e s k u t k u j e w y s a n i e m d o d a t k o w y c h danych podczas logowania, lista powinna zosta rozdzielona rednikami ( : ) , np. uid=[username];dc=mojafi rma:dc=com. Pola Uytkownik poczenia i Haso poczenia powinny pozosta puste, o ile dostp do serwera jest a n o n i m o w y . Parametry m a j c e w n a z w i e w y r a z M a p u j p o z w a l a j okreli, ktre pola na serwerze L D A P b d zawiera dane niezbdna dla systemu logowania Joomla!.

300

Joomla!. Profesjonalne tworzenie stron WN 1W

OpenLDAP
Jeli chcesz u r u c h o m i w a s n y serwer L D A P , m o e s z w y k o r z y s t a aplikacj O p e n L D A P , darmow implementacj standardu LDAP. Program dostpny jest dla systemw Linux, UNIX, M a c O S i BeOS, m o n a go pobra ze strony d o m o w e j ( w w w . o p e n l d a p . o r g ) . Jeli korzystasz z systemu Windows, aplikacj moesz pobra ze strony ILEX (http://download.bergmans.us/ openldap). Zwr uwag, e wikszo sieci opartych na platformie Windows wykorzystuje usug Active Directory, ktra wspiera standard L D A P . W celu przetestowania serwera LDAP moesz zastosowa dowoln, nowoczesn przegldark. W y s t a r c z y w p r o w a d z i prefix / d a p w m i e j s c e t r a d y c y j n e g o http, w p i s u j c adres podobny d o poniszego: ldap://ldap. itd. umich. edit

Jeli wykonujesz wiele czynnoci zwizanych z L D A P , warto rozway instalacj programu Luma, ktry jest narzdziem do przegldania i testowania LDAP. Moesz pobra go za darmo na stronie d o m o w e j (http://luma.sourceforge.net). Konfiguracja serwera LDAP nie naley do zada prostych. Dlatego jeeli nie masz dowiadczenia z LDAP. to powiniene zapozna si z jedn z wielu doskonaych publikacji opisujcych t technologi. Wiele cennych informacji znajdziesz w ksice Marka Wilcoksa Implementing LDAP.

Obsuga
Obsuga strony jest rwnie wana, jak waciwa instalacja. C M S w wielu aspektach przypomina o g r d , p o n i e w a n a l e y w y r y w a c h w a s t y , e k s t e r m i n o w a s z k o d n i k i i p r z y c i n a nawet najwspanialsze kwiaty. Dziki utrzymywaniu systemu w dobrym stanie zachowasz dobr wydajno. Dopuszczenie d o tego, aby n i e p u b l i k o w a n e artykuy przytaczay system lub konta nieaktywnych uytk o w n i k w zachcay hakerw, m o e zniweczy wysiki podczas instalacji systemu.

Czyszczenie systemu
Baza danych Joomla! m o e z czasem ulec zamieceniu z p o w o d u iloci niepublikowanych artykuw, nieuywanych menu, nieaktywnych kont uytkownika itd. Czyszczenie systemu mona rozpocz w interfejsie administratora Joomla!. Sporo zada zwizanych z czyszczeniem s y s t e m u z a j m u j e z b y t w i e l e c z a s u , jeli j e s t p r z e p r o w a d z a n y c h z panelu administratora. C z z nich mona w y k o n a szybko, bezporednio manipulujc b a z M y S Q L . Zanim zabierzesz si do rcznego czyszczenia systemu, sprawd koniecznie, czy w katalogu rozszerze Joomla! ('extensions.joomla.org) istnieje rozszerzenie, ktre wykonuje dane zadanie. Rozszerzenia pozwalaj obej wiele ogranicze

Rozdzia 11. Prowadzenie profesjonalnej strony


systemu. Na przykad Joomla! uniemoliwia usunicie kategorii, dopki wszystkie przypisane do niej artykuy nie zostan usunite. Zamiast rcznie usuwa wszystkie artykuy, a nastpnie kategori, moesz posuy si rozszerzeniem, ktre wykona to automatycznie.

301

Wykorzystywanie opcji Artykuy do znalezienia niepublikowanych artykuw


O ile to moliwe, p o w i n i e n e w p r o w a d z a wszelkie z m i a n y lub u s u w a treci w y c z n i e z poziomu interfejsu administratora Joomla!. Dziki temu w p r o w a d z o n e zmiany b d miay wpyw na sie odnonikw wewntrz strony. Zostaniesz take powiadomiony o problemach, ktre m o g w y s t p i w s k u t e k danej akcji, np. wskutek s p a d k u w y d a j n o c i , jeli w c z y s z rejestrowanie zapyta wyszukiwania. W opcji Artykuy w panelu administratora znajduje si lista wyboru, ktra pozwala ograniczy wywietlane artykuy do niepublikowanych pozycji. Badanie listy niepublikowanych artykuw p o w i n n o by p r z e p r o w a d z a n e regularnie (np. raz na sze miesicy), w t e d y m o n a mie pewno, e baza danych nie jest zamiecona niepotrzebnymi treciami. Aby wygenerowa list, wybierz pozycj Niepublikowany, jak przedstawiono to na rysunku 11.14. Na ekranie pozostan wycznie te artykuy, ktre nie zostay opublikowane. Rysunek 11.14. Wybierz pozycj Niepublikowany z rozwijalnej listy po prawej stronie ekranu

Bezporedni dostp do MySQL


Poniewa wszystkie dane p r z e c h o w y w a n e s w bazie M y S Q L , m o e s z take bezporednio m a n i p u l o w a materiaami. M o l i w e jest take (chocia nie j e s t to zalecana opcja) rczne w y c z y s z c z e n i e b a z y d a n y c h . N i e k t r e z a d a n i a ( s z c z e g l n i e te z w i z a n e z u s u w a n i e m rozszerze, ktre w y m a g a j u s u n i c i a p l i k w ) p o w i n n y b y p r z e p r o w a d z a n e w y c z n i e z poziomu interfejsu administratora. Inne zmiany, zwaszcza te dotyczce duej liczby wpisw lub usunicia poszczeglnych tabel, mona przeprowadzi wycznie za p o m o c M y S Q L . Bezporednie modyfikowanie bazy danych Joomla! moe by bardzo niebezpieczne, jeli nie rozumiesz w peni wprowadzanych zmian. Jeli masz wtpliwoci zwizane z dan modyfikacj nie przeprowadzaj jej. Pamitaj, aby przed wprowadzeniem dowolnych zmian zrobi kopi zapasow caej bazy. W przypadku katastrofalnej pomyki bdziesz w stanie przywrci baz i ponownie uruchomi stron.

302

Joomla!. Profesjonalne tworzenie stron WN 1W

Wyszukiwanie starych materiaw


Lista artykuw posortowana wedug dat ostatnich modyfikacji pozwala zlokalizowa artykuy, ktre d a w n o nie byy uaktualniane. Dziki temu m o e s z w p r o w a d z i zmiany w ich treci albo usun j e ze strony. M o e s z w y s z u k a stare artykuy, u r u c h a m i a j c ponisze zapytanie S Q L i zmieniajc dat w klauzuli WHERE:
SELECT * FROM jos_content WHERE modified < '2007-01-01'

Wyszukiwanie nieaktywnych uytkownikw


W systemie Joomla! p r z e c h o w y w a n a jest data ostatniego logowania wszystkich zarejestrowanych uytkownikw. Odpowiednie zapytanie wzgldem tabeli uytkownikw wygeneruje list u y t k o w n i k w , ktrzy od p e w n e g o czasu nie odwiedzali strony. Jednym z najlepszych sposobw zagospodarowania tej listy jest wysanie e-maili w celu przypomnienia im o stronie i zaproszenia do powrotu na ni. List nieaktywnych u y t k o w n i k w moesz w y g e n e r o w a , uruchamiajc ponisze zapytanie S Q L i zmieniajc dat w klauzuli WHERE:
SELECT * FROM jos_users WHERE lastvisitDate < '2007-01-01'

Wyszukiwanie pustych metadanych


J e d n y m z istotnych e l e m e n t w w p y w a j c y c h na p o z y c j T w o j e j strony w r a n k i n g a c h w y s z u k i w a r e k i n t e r n e t o w y c h s pola z a w i e r a j c e m e t a d a n e . D w a z nich (opis artykuu i sowa k l u c z o w e ) s n a j w a n i e j s z e dla r o b o t w internetowych. Proste zapytanie M y S Q L pozwoli Ci stworzy list artykuw, dla ktrych nie ustawiono metadanych, po to, by naprawi problem. Aby wygenerowa list artykuw, dla ktrych nie ustawiono metadanych, uruchom ponisze zapytanie SQL:
SELECT * FROM jos_content WHERE metakey = " or metadesc = ''

Wyszukiwanie niepublikowanych artykuw i menu


ledzenie niepublikowanych elementw moe stanowi spore wyzwanie na duej, popularnej i d o j r z a e j stronie Joomla!. Czsto artykuy u s t a w i a n e s j a k o niepublikowane, poniewa nie w i a d o m o , czy nie b d p o t r z e b n e w przyszoci. Po u p y w i e p e w n e g o czasu element (czy to menu, czy artyku) prawdopodobnie nie bdzie ju wykorzystywany. W tym momencie najlepiej usun go z bazy danych, aby zwikszy wydajno. M o e s z znale niepublikowane elementy, uruchamiajc ponisze zapytania SQL:
SELECT * FROM jos_content WHERE state = 0 SELECT * FROM josjnenu WHERE published = 0 SELECT * FROM jos_plugins WHERE published = 0

Rozdzia 11. Prowadzenie profesjonalnej strony


SELECT * FROM jos_components WHERE enabled = O SELECT * FROM jos_modules WHERE published = 0

303

Wyszukiwanie najnowszych gosw w sondzie


Istnieje grupa zapyta, ktr moesz wykorzysta, aby okreli niedawn dziaalno uytkownikw na stronie. Przykadowo moesz chcie zobaczy gosy nadesane w cigu ostatnich 10 dni, aby stwierdzi, czy n a j n o w s z a sonda jest popularna. W y k o n a n i e tego zapytania w MySQL nie jest trudne. Najpierw musisz znale interesujcy rekord w tabeli pol Is i zanotowa jego id:
SELECT * FROM jos_polls

Ponisze zapytanie spowoduje wywietlenie gosw wysanych w cigu ostatnich 10 dni:


SELECT * FROM jos_poll_date WHERE DATE_SUB(CURDATE(). INTERVAL 10 DAY) <= date:

Wyszukiwanie pustych sekcji i kategorii


Badajc organizacj strony, dobrze jest okreli, ktre sekcje i kategorie s niewykorzystywane. Nastpnie mona j e usun lub poczy z innymi, aby poprawi organizacj strony. Moesz znale nieuywane sekcje, uruchamiajc ponisze zapytanie SQL:
SELECT * FROM jos_sections LEFT JOIN jos_content ON jos_content.sectionid = jos_sections.id WHERE jos_content.sectionid IS NULL and jos_sections.published=l

Aby znale puste kategorie, uruchom:


SELECT * FROM jos_categories LEFT JOIN jos_content ON jos_content.catid = jos_category.id WHERE jos_content.catid IS NULL and jos_categories.published=l

Podsumowanie
Zarzdzajc profesjonaln stron Joomla!, musisz pamita, e T w o j e dziaania powinny odpowiada zaoeniom przedsiwzicia. W tym rozdziale opisano sposoby konfiguracji i instalacji Joomla!, a w szczeglnoci: Testowanie fragmentw kodu za pomoc interfejsu tekstowego PHP. Podstawy tworzenia i przywracania kopii zapasowych systemu Joomla!. Tworzenie wirtualnych serwerw w aplikacji Apache. Dostrajanie MySQL w celu najlepszej wydajnoci, w zalenoci od typu instalacji Joomla!.

304

Joomla!. Profesjonalne tworzenie stron WN 1W


Stosowanie uwierzytelniania LDAP dla cznego zarzdzania kontem uytkownika dla rnych usug (np. poczta). Uruchamianie zapyta M y S Q L w celu wygenerowania listy niepublikowanych artykuw, nieaktywnych uytkownikw, starych materiaw, nieustawionych metadanych itd.

Gwnym punktem tego rozdziau byo zarzdzanie materiaami na stronie. Joomla! zawiera jednak take funkcje czce z zewntrznymi zasobami. W rozdziale 12. opisano sposoby czenia i pozyskiwania treci zewntrznych od kanaw RSS, po screen scraping.

12
czenie z zasobami zewntrznymi
a d n a strona W W W nie p o w i n n a by s a m o t n w y s p . Dziki J o o m l a ! szczeglnie atwo moesz poczy witryn z zewntrznymi zasobami, np. kanaami RSS, transakcjami e C o m merce, za porednictwem technologii EDI (Electronic Data Interchange) czy bazami danych, pobierajc dane w formacie X M L . Stworzono dosownie dziesitki rozszerze, ktre su do wykorzystania zewntrznych zasobw. Jeli nie moesz znale rozszerzenia, ktre m a wymagane moliwoci komunikacyjne, lub musisz skorzysta z niestandardowego protokou, platforma programistyczna Joomla! uatwia stworzenie wasnej aplikacji. W tym rozdziale dowiesz si, jak skonfigurowa stron Joomla!, aby pobiera treci zewntrzne, a take j a k u t w o r z y w a s n y k a n a R S S . D o w i e s z si, j a k u z u p e n i J o o m l a ! , dziki zastosowaniu rozszerze, o programy partnerskie. W kocu, wykorzystujc nabyte umiejtnoci programistyczne, stworzysz wasne rozszerzenia, ktre wykorzystuj dostpne API (implementacja Google Maps) lub interfejs oparty na formacie X M L (usuga wyszukiwania k o d w zip USPS), a take napiszesz prosty program typu screen scraper, ktrego zadaniem bdzie pobranie danych umieszczonych na innej stronie w formacie H T M L .

Pobieranie zewntrznych materiaw


Moesz wzbogaci tre wasnych artykuw na stronie Joomla!, czc j e z zewntrznymi materiaami i k a n a a m i R S S na i n n y c h s t r o n a c h . I n f o r m a c j e p o j a w i a j c e si w k a n a a c h automatycznie uzupeniaj artykuy na T w o j e j stronie.

Kanay RSS
J e d n z technologii, ktra w n a j w i k s z y m s t o p n i u w p y n a na a u t o m a t y z a c j w y m i a n y i n f o r m a c j i , s kanay RSS. U y t k o w n i k o d w i e d z a j c y d a n stron (np. www.CNN.com) m o e p r z e g l d a d o s t p n e m a t e r i a y , o ile j e s t p o d c z o n y d o internetu. Jeli na stronie dostpny jest kana RSS, o d w i e d z a j c y m o e s u b s k r y b o w a go, co s p o w o d u j e p o b i e r a n i e podobnych treci.

306

Joomla!. Profesjonalne tworzenie stron WN 1W


Po klikniciu o d p o w i e d n i e g o o d n o n i k a ( c z s t o o p i s a n y j a k o R S S F e e d " , R S S X M L " lub Atom Feed") zostaje uruchomiona aplikacja na komputerze uytkownika, ktra nosi nazw agregator. P r o g r a m o w i p r z e k a z y w a n y j e s t adres w s k a z u j c y na plik w f o r m a c i e X M L , ktry gra rol spisu artykuw umieszczonych na stronie. Oprcz nagwkw mog znajdowa si w n i m f r a g m e n t y lub cae a r t y k u y . W z a l e n o c i od u s t a w i e agregatora m o e on a u t o m a t y c z n i e pobiera n o w e materiay. Tre kanau jest z a p i s y w a n a na dysku twardym komputera, dlatego mona przejrze j pniej. Jak przedstawiono na rysunku 12.1, klient poczty Mozilla Thunderbird ma funkcje agregatora, kanay RSS wywietlane s w podobny sposb jak konta e-mailowe. Aby doda nowy kana R S S , w y b i e r z Plik/Nowy/Konto, a p o u r u c h o m i e n i u Kreatora Kont z a z n a c z o p c j RSS: Aktualnoci i bogi. Z o s t a n i e d o d a n y n o w y f o l d e r , n o s z c y n a z w Aktualnoci i bogi, d o k t r e g o m o e s z d o d a w a k a n a y R S S . P r o g r a m m a kilka p a r a m e t r w w p y w a j c y c h na obsug kanaw (czstotliwo uaktualnie, sposb prezentacji itd.).

Rysunek 12.1. Klient poczty Thunderbird wywietla kanay RSS iv formie przypominajcej przegldanie listw elektronicznych

4* Gazeia.pl Plik
4

artykuy Widok

Thunderbird Wiadomo Narzdzia Pomoc

H H K 3 3 D . X

Edycja

Przejd

Pobierz

. /

Napisz

Adresy t' y Temat


F r a n c j a p o t p i a d e c y z j Iz... ; P r e z y d e n c j a UE: O p e r a c j a I... I z r a e l s k i e w o j s k a w Strefie... U Putin i Miedwiediew poszli... ' S t r o n a z p o r n o g r a f i zami... T r u d n e w a r u n k i na drogac...

Usu Data
03:27 03:27 03:27 03:27 03:27 03:27

Wszystkie foldery
+ Poczta A k t u a l n o c i i bogi

S Nadawca
Gazeta.pl - a r t y k u y Gazeta.pl - a r t y k u y Gazeta.pl - a r t y k u y . Gazeta.pl - a r t y k u y Gazeta.pl a r t y k u y Gazeta.pl artykuy

f | Kosz
+ fi^y L o k a l n e f o l d e r y

Witamy

Thunderbirdz

pm
f

te

fev-

Program p o c z t o w y Mozilla Thunderbird ma wicej moliwoci ni kiedykolwiek wczeniej. Teraz jeszcze atwiej jest zarzdza wiadomociami w w y g o d n y i bezpieczny sposb.

x B 2
p r

MB

Nieprzeczytane: 8

Razem: 8

SL8TR [IDLE]

T a k e przegldarka Mozilla Firefox zawiera p e w n e e l e m e n t y agregatora. Jeli na stronie, ktr odwiedzasz, dostpny jest kana RSS, na pasku adresu zostanie wywietlona symbolizujca to ikona (co zilustrowano na rysunku 12.2). W tej sytuacji wystarczy klikn ikon i w y b r a opcj subskrypcji za p o m o c dynamicznych zakadek, a nowe wpisy b d pobierane automatycznie.

Format kanaw RSS


Istniej dwa popularne standardy kanaw na stronach W W W : RSS (Really Simple Syndication) i A t o m . O b a f o r m a t y o p a r t e s na X M L - u , k a n a y A t o m m a j rozszerzenie ,xml (np. atom.xml), a kanay RSS m o g mie rozszerzenie .xml lub .rss. Przez dugi czas popularno obu formatw bya porwnywalna. Ostatecznie jednak okazao si, e kanay R S S stay si d o m i n u j c y m r o z w i z a n i e m , a wiele stron obsugujcych oba f o r m a t y porzucio kanay Atom.

Rozdzia 12. czenie z zasobami zewntrznymi


Rysunek 12.2. Jeli na stronie dostpny jest kana RSS, na pasku adresu w przegldarce Firefox zostanie wywietlona ikona, ktrej kliknicie uruchamia opcj subskrypcji

307

Plik

Edycja -

Widok ?

Historia - ',"'!

Zakadki $

Narzdzia

Pomot

http://ioomiajumpstart.com/

> -

g-;

iySQl :; SeiectaMinor

MAIN MENU

Joomla Tutorial - Extensions Part 2: Installing Components

i . w h y do ! need Joomla? 2. How is Joomla! organised? . 3- Joomla! Presentation . F r e q u e n t l y Asked Questions (FAQs) B e g i n n i n g Joomla! < Zakoczono \ In F a r t l . y o u installed a m o d u l e to the Joornla s y s t e m . Part 2 will t a k e y o u ...through the q u i c k a n d simple process of installation a n d c o n f i g u r a t i o n o f a i ^ j ^ ^ j ^ c o m p o n e n t . Components a r e the d o m i n a n t t y p e of extension a n d form the backbone of m u c h of t h e extensible f u n c t i o n a l i t y a v a i l a b l e to t h e Joomla CMS.

' R E A D MORE...

Joomla Extensions -- Diqg This!

Probing the Joomla!


* O

Poniej umieszczono przykadowy adres kanau R S S dla w i a d o m o c i w portalu Gazeta.pl: http://rss.gazeta.pl/pub/rss/wiaclomosci.xml Nagwek i kilka przykadowych wpisw kanau RSS w y g l d a j tak:
<?xml version="1.0" encoding="utf-8"?> <rss xmlns:taxo="http://purl .org/rss/l.O/modules/taxonomy/" channel> <title>Gazeta.pl - artykuy</title> version="2.0">

<1 i nk>http: //serwi sy.gazeta.pl /rss/0.54825,3686466.html</li nk> <description>Najnowsze artykuy z Gazeta.pl</description> <1anguage>pl</1anguage> <copyright><![CDATA[Copyright &amp;#169: Agora SA All rights reserved]]></copyright> <dc:1anguage xmlns:dc="http://purl.org/dc/elements/1.1/">pl</dc:1anguage> <dc:rights xml ns:dc="http://purl.org/dc/el ements/1.1/"><![CDATA[Copyright &amp;#169: Agora SA All rights reserved]]></dc:rights> <image> <title>Gazeta.pl</title> <url>http://www.gazeta.pl/i mg/w/l/gazeta.gi f</url> <11nk>http://www.gazeta.pl</i nk> </image> <item> <title><![CDATA[Biesiadowali w ekskluzywnej restauracji i nie zapacili]]></title> <1 i nk>http://wiadomosci.gazeta.pl /Wi adomosci/1.80277.6063047.Bi esi adowali_w_ekskluzy wnej_restauracji_i_ni e_zapl aci 1 i.html?skad=rss</li nk> <description><![CDATA[Dwudziestu studentw biesiadowao w jednej z najbardziej ekskluzywnych restauracji w Wenecji, a nastpnie po zakoczonym przyjciu opucio lokal nie zapaciwszy rachunku w wysokoci ponad 2000 euro.]]></description> <pubDate>N, 14 gru 2008 20:46:00 GMT</pubDate> <guid>http://wi adomosci.gazeta.pl /Wiadomosci/1.80277.6063047.Bi esi adowali _w_ekskluzy wnej_restauracji_i_nie_zaplaci1 i.html</guid> <dc:date </item> xmlns:dc="http://purl.org/dc/elements/1.1/">2008-12-14T20:46:00Z</dc:date>

308

Joomla!. Profesjonalne tworzenie stron WN 1W


<item> <title><![CDATA[Obfite opady niegu we Francji. Dwie ofiary miertelne]]></ti11 e> <1 i nk>http ://wi adomosci. gazeta. pl /Wi adomosci /1.80277,6063045. Francja_obfi te_opady_ dwi e_ofi ary_smi ertel n e _ d o m y . html ?skad=rss</1 i nk> <description><![CDATA[Obfite opady niegu i deszczu w centrum i na poudniowym wschodzie Francji pozbawiy dzi prdu ponad 110.000 domostw i przyczyniy si do mierci dwch osb: turysty i automobil istki.]]></description> <pubDate>N. 14 gru 2008 20:45:00 GMT</pubDate> <guid>http: //wi adomosci. gazeta. pl /Wi adomosci /1.80277.6063045. Francja_obfite_opady_ dwi e_of i ary_smi ertel n e _ d o m y . html </gui d> <dc:date </i tem> xmlns:dc="http://purl,org/dc/elements/l.l/">2008-12-14T20:45:00Z</dc:date>

Na pocztku pliku z n a j d u j si informacje n a g w k o w e dotyczce kanau RSS. Poniej jest sekcja zawierajca banner reprezentujcy kana RSS. Ostatecznie wewntrz elementu <item> s informacje o artykuach, ktre wywietlane s w agregatorze. Kanay RSS staj si coraz bardziej zaawansowane. Podcasty (kanay RSS dla plikw audio) i vodcasty (kanay RSS dla plikw wideo) wykorzystuj praktycznie identyczne pliki jak standardowe kanay. Popularne agregatory multimedialne (np. Times firmy Apple) wykonuj dokadnie te same operacje (np. sprawdzanie kanau pod ktem nowych treci, pobieranie nowych materiaw), ktre wykonuj standardowe czytniki kanaw RSS.

Modu subskrypcji kanaw RSS w Joomla!


M o d u Feed u m o l i w i a wstawienie zawartoci kanau RSS bezporednio na T w o j e j stronie J o o m l a ! . R y s u n e k 12.3 przedstawia m o d u z a t y t u o w a n y N a j n o w s z e w i a d o m o c i . Modu wywietla list n a j n o w s z y c h wiadomoci opublikowanych na portalu Gazeta.pl, na stronie gwnej witryny Joomla!. Z a kadym razem, kiedy uytkownik wchodzi na stron zawierajc m o d u Feed, z e w n t r z n y plik k a n a u R S S j e s t p o b i e r a n y , p r z e t w a r z a n y , a nastpnie w y w i e t l a n y w o d p o w i e d n i m miejscu. Rysunek 12.3. Wstawienie na stronie moduu Feed powoduje automatyczne wywietlanie nowych pozycji natychmiast po dodaniu ich do kanau RSS

Joomla! makes it easy to launch a Web site of any kind. Whether you want a brochure site or you are building a large online community, Joomla! allows you to deploy a new site tn minutes and add extra functionality as you need it The hundreds of available Extensions will help to expand your site and allow you to deliver n e w services that extend your reach into the Internet A b o u t Jooml.i: Featuie: llM$ The Community

Najnowsze wiadomoci
Horn Joomla? L i t e M o i e about Jooml.i! FAO The Hews Web Link Hews Feeds * Sonda: 52 proc cila K ' i wzrost poparcia dia SL.D Gdyby wybory odbyty si dzi, PO zdobyaby 52 proc. gosw - wynika z sondau TNS OBOP dla programu Forum w TYP Info F;onie te poparcie dla SLD, ktry mgby liczy na 12-procentowe poparcie. Bus zderzy 7 ,1'Rh -k"j!->a o--.ot-a ztinA. .^t ranni Bus, ktrym jechay cztery osoby w tym dziecko, zderzy si z samochodem osobowym w woj. pomorskim. Jedna osoba zgina, osiem zostao rannych.

Popular

Wyprosili muzumanw z samolotu Tylko rozmawia;.

Muzumaska r odzina zostaa wyproszona z samolotu po tym jak wsppasaerowie usyszeli ich rozmow o najbezpieczniejszym miejscu na pokadzie - informuje CNN. Linie lotnicze odmwiy rodzinie przebukowania biletw mimo e agenci FBI uznali spraw za nieporozumienie. I I i

i I 1

J o o m l a Home Joomla! Forums * J o o m U : Hei

Welcome to the Frontpage

Rozdzia 12. czenie z zasobami zewntrznymi

309

Aby aktywowa modu Feed, otwrz panel administratora i wybierz opcj Moduy. Z n a j d pozycj oznaczon Feed Display i kliknij j. Zostan wywietlone aktualne ustawienia m o d u u przedstawiono to na rysunku 12.4. lysunek 12.4. Jstawienia rioduu okrelaj, ctry kana RSS iraz w jaki iposb bdzie wywietlany

M Podgld

' O

Modul:

[Zmie]

V*1 Zapitz Pi efei erwje

V Zastosuj

Zamknij

Typ. moduu: mod_Feec T.*tu Najnowsi Poka tytu Wazony O Nie (?) Q ^ 0

P.<uneliy moduu Przyrostek klasy moduu .,(..; > ar:V'; http /Ass gazeta pl/pub/rssAjiac K.mt I O O T * i.

Tak i ? Ni. Tak Nie

E S B S S Zastrzelony Specjalny

;Vik,

O Tak Ni.

, O Ni. Pi ypisjiiie menu Wszystkie O Biak C :

PiM metr yriozsz) zoite

Konfiguracj moduu naley rozpocz od ustawienia tytuu moduu, ktry bdzie pojawia si nad list w p i s w . W t y m p r z y k a d z i e u s t a w i o n y zosta tytu Najnowsze wiadomoci. Z m i e p o z y c j m o d u u , aby nie p o j a w i a si w l e w e j k o l u m n i e , p o d i n n y m i m o d u a m i . Moesz wybra pozycj right, aby wpisy pojawiay si w prawej kolumnie. W tym przykadzie zostaa ustawiona pozycja userl, aby nagwki byy wywietlane w grnej r o d k o w e j czci strony. D o d a t k o w e u s t a w i e n i a , u m i e s z c z o n e w p a n e l u Parametry moduu, p o z w a l a j w p y w a na wywietlanie kanau. O p c j o n a l n y p a r a m e t r Przyrostek klasy moduu p o z w a l a ustawi przyrostek dla stylw CSS (dodawanych np. do t a b l e . m o d u e t a b l e ) , w ten sposb m o e s z wpyn na wygld moduu niezalenie od reszty strony. Kolejny parametr pozwala wprowadzi adres kanau RSS. W pole oznaczone Adres kanau w p r o w a d dowolny, p o p r a w n y adres URL, ktry w s k a z u j e kana w formacie R S S lub Atom. Odnoniki do rnych kanaw m o e s z z n a l e w k a t a l o g u RSS. List n a j p o p u l a r n i e j s z y c h k a t a l o g w z n a j d z i e s z na stronie R S S Specifications (www.rss-specijications.com/rss-directory.htm). Poniewa p r z y k a d o w y w t e k z a w i e r a w p i s y w j z y k u p o l s k i m , nie m a p o t r z e b y w c z a n i a opcji Kana RTL (right-to-left od prawej do lewej), ktra jest przydatna dla kanaw w jzykach takich jak mandaryski. Wycz opcje Tytu i Wprowadzenie. Odpowiadaj one za wywietlanie informacji doczonych przez publikujcego kana, przez co nie masz nad nimi kontroli. W przypadku kanau duego portalu, jakim jest Gazeta.pl, nie powiniene martwi si, e na stronie pojawi si niepodane treci, jednak w przypadku niewielkich, niekomercyjnych kanaw RSS (pomimo ciekawych materiaw) ryzykujesz pojawienie si na stronie obraliwych komunikatw. Z w r uwag, e opcja Tytu nie w p y w a na wywietlanie tytuu moduu (na ktrego tre m a s z wpyw).

310

Joomla!. Profesjonalne tworzenie stron WN 1W


M o e s z take wybra, czy chcesz, aby na stronie pojawia si obrazek symbolizujcy kana. W wikszoci przypadkw opcja Grafika pozostanie wyczona, poniewa czsto powoduje wywietlenie logo autora kanau, co m o e wzbudzi wtpliwoci u niektrych odwiedzajcych T w o j stron. Poza tym niektre kanay RSS obsugiwane s przez powolne serwery, co wydua czas wywietlania Twojej strony. Dlatego jeli chcesz skrci czas wywietlania moduu Feed, wycz to ustawienie. Parametr ilo wiadomoci pozwala okreli liczb wywietlanych pozycji. W tym wypadku, p o n i e w a lista m a by wywietlana w centralnej czci strony gwnej, liczb ograniczono do trzech. Opcja Wstpy pozwala okreli, czy wywietlane b d wycznie nagwki, czy take krtki opis (np. skrcona tre artykuu). Ustawienie Ilo sw pozwala ograniczy wywietlan liczb sw ze wstpu. Domylne ustawienie (0 zero) oznacza, e cay wstp zostanie umieszczony pod nagwkiem. Aby jedynym moduem wywietlanym w centralnej czci strony byl modu wiadomoci, naleao ukry modu Lastest News, poniewa jest on domylnie do pozycji userl, i z tego powodu zajmuje cenne miejsce na stronie. Najnowsze przypisany

T o by byo na tyle! Z a kadym razem, kiedy uytkownik otworzy stron gwn, na stronie pojawi si najnowsze wpisy z ustawionego kanau RSS wraz z odnonikami do waciwych artykuw (w zalenoci od ustawie m o g pojawi si te wstpy). Funkcjonalno zwizana z kanaami RSS w Joomla! nie jest ograniczona wycznie do odczytywania kanaw. Z a p o m o c Joomla! moesz udostpni wasny kana.

Modu publikacji kanaw RSS


System Joomla! zawiera linkcj, ktra pozwala Ci udostpni wasny kana RSS. W ten sposb u y t k o w n i c y m o g by powiadamiani o dodaniu nowych materiaw. Po uruchomieniu opcji Moduy wybierz pozycj opisan Syndication, aby wywietli aktualne ustawienia. U p e w n i j si, e m o d u zosta o p u b l i k o w a n y i przypisany do lewej kolumny. W p a n e l u p a r a m e t r w w p r o w a d w p o l e Tekst krtki opis, ktry p o j a w i si przy ikonie k a n a u R S S p r z e d s t a w i o n o to na r y s u n k u 12.5. M o e s z take w y b r a f o r m a t kanau, c h o c i a zalecane jest p o z o s t a w i e n i e d o m y l n e g o ustawienia RSS 2.0. Zapisz ustawienia moduu. O d tego m o m e n t u T w o j a strona zawiera kana RSS! Jeli przejdziesz teraz na stron gwn, zauwaysz, e pojawia si na niej ikona symbolizujca kana RSS wraz z odnonikiem. Jak pokazano na rysunku 12.6, w przegldarce Firefox i n f o r m a c j a o tym, e strona zawiera kana R S S , w y w i e t l a n a jest take na pasku adresu. Kana RSS ma odnoniki do artykuw przypisanych do strony gwnej, uporzdkowanych w e d u g daty ( n a j n o w s z e wpisy p o j a w i a j si j a k o pierwsze). Pamitaj, aby po umieszczeniu kanau RSS na stronie zarejestrowa go przynajmniej w j e d n y m katalogu (lista na http://www.rss-specifications.com/rss-directory.htm). W przeciwiestwie do wyszukiwarek takich jak Google, ktre w y s z u k u j nowe treci pojawiajce si na stronie, katalogi kanaw RSS w y w i e t l a j n o w e informacje dla tych stron, ktre wczeniej zostay

Rozdzia 12. czenie z zasobami zewntrznymi


lysunek 12.5. parametry moduu Syndication wpywaj na kana RSS

311

TiliriilllHMiaiiiMi 38 P d l d * og 0 ii

Modul: [Zmie]
referencje Typ moduu. mod_syndicate Ty!ul r-:ia twtoi -.-:j Kanal RSS {*} Nie O Tak

*
> Parametry n o t iu td l

Wzn Q coy

Nje

Tak

36 Wywietla graficzne odnoniki do generatorw kanau informacyjnego RSS Twojej witryny. Umoliwia pobieranie i wywietlanie na innych stronach nagwkw wiadomoci z Twojej uuitryny. Pi zypisAiiie m e n u menu' (*) Wszystkie { ) B.ak Wszystl<le Zaznaczone

Rysunek 12.6. Ikona symbolizujca kana RSS wywietlana jest przez modu Syndication, pojawia si take na pasku adresu

Wecome lo the Frontpage - Mozilla Firefox

i pi y j W d k ysoi Zkak N r z a Pomoc lk d c a i o itra adi a z d i


.

ht:/oahs/oma/ tp/lclotjol2
With a library of hundreds of free Exteoiflorrs, you can add what you need site grows Don"! wait, look throughittle Joomla! Extensions library today.

4 Jo0mla!
About Joomla!

The Community

Najnowsze wiadomoci
Sonda: 52 proc- da PO i wzrs popaicia dla SLD Gdyby wybory odbyt/ si dzi, PO zdobyaby 52 proc. gosw - wynika z sondau TNS OBOP dla programu Forum w TVP Info. Ronie te poparcie dla SLD, ktry mgby liczy na 12-procentowe poparcie Bus zderzy -;i z auch Jedna o-:-oba zgina, s ranni Bus, ktrym jechay cztery osoby w tym dziecko, zderzy si z samochodem osobowym w yyoi. ponflHffdm. ^tedna osoba zgjnpjp. yflpnych, .,

Popular

zarejestrowane. Zanim jednak umiecisz stron w katalogu, upewnij si, e kana zawiera przyzwoit ilo materiaw, ktre s regularnie uaktualniane. Wikszo katalogw pozwala uytkownikom ocenia kanay RSS, dlatego jeli Twj kana bdzie kiepski, inni uytkownicy szybko si o tym dowiedz.

Rozszerzenie Auto Articles 3000


Kwesti sporn stanowi pytanie, czy strona zyskuje na pozycji w rankingach wyszukiwarek dziki umieszczeniu treci pochodzcych z kanaw RSS. Wielu ekspertw od SEO (search engine optimizatiori) twierdzi, e roboty internetowe rozpoznaj treci pobierane z kanaw RSS i ignoruj je. Jeli jest to prawda, to wpisy pochodzce z kanaw RSS nie s traktowane jako cz strony, a w konsekwencji nie s indeksowane przez roboty internetowe.

312

Joomla!. Profesjonalne tworzenie stron WN 1W


Jednym ze sposobw uzupenienia treci strony (i zdobycia lepszej pozycji w rankingach wyszukiwarek) jest zastosowanie rozszerzenia o nazwie Auto Article 3000, ktrego dziaanie zilustrowano na rysunku 12.7. Rozszerzenie to pobiera artykuy na dane tematy z archiwum artykuw ezine (electonic magctzine elektroniczny magazyn), a nastpnie umieszcza je w Twojej bazie danych Joomla!. W przeciwiestwie do wtku, ktry dynamicznie pobiera zewntrzne materiay, artykuy pobrane za pomoc Auto Article 3000 zapisywane s na Twoim serwerze, a take uaktualniane, jeli zostanie znaleziona nowsza wersja.

Rysunek 12.7. Rozszerzenie Auto Articles 3000 wywietla pobrane artykuy, przechowywane w bazie danych Joomla!

C o m p u t e r s and T h e Internet

L e g a l Mattel s

more. Public Relations and the Internet CCMP / BSCI Exam Tutorial: IP Version 6 Zero Compression Cisco CCNACCMP Home Lab Tutorial: Cabli g Your Access Server
Site P r o m o t i o n

more. Calling a Lawyer Should Be a Private Home Sellers First Move The Lemon Law In Florida - Stating The Law As It Affects Consumers The Motion Picture Association Of America And Copyrights
Wei) Development

more. SEO 1 ,2,3 for Dummies Using Your Rotator Site as an Online Secrets ry increase Your Traffic For Free
W i iting

more Dedicated Server Is Better Than Shared Server Finally, Someone Made The Web Design Process Easy To Understand The Power of Effective Brochures

more. Building A Rock Solid Query Letter Publishers Are Standing In Line To Publish Yc u What Is In An Article That Makes It Good Powered by : Free Eine Aticles
Search:: | s e a r c h now... j

Auto Articles 3000 to pakiet komponentw (jeden dla czci frontowej, drugi dla panelu administratora) oferowany jako darmowa usuga firmy Elerion, Ltd. Podstawowa instalacja powoduje wprowadzenie 230 artykuw do bazy danych Joomla!. Nowe s automatycznie pobierane w regularnych odstpach czasu (domylnie jest to 30 minut). Rozszerzenie Auto Articles 3000 moesz pobra na stronie: www. articles3000. com

Moesz okreli tematyk pobieranych artykuw, korzystajc z odpowiedniej opcji w panelu administratora, jak to przedstawiono na rysunku 12.8. Niestety, artykuy pobrane za pomoc komponentu nie s przechowywane w ten sam sposb, jak zwyke artykuy, w tabeli jos_content. Oznacza to, e nowe materiay s niedostpne dla wikszoci funkcji Joomla! (np. wyszukiwania), a take innych rozszerze (np. tych odpowiedzialnych za tworzenie mapy strony). Rozszerzenie przechowuje pobrane artykuy w tabeli jos_a3000_articles, w bazie danych Joomla!. Pamitaj jednak, e j e d n z cudownych cech open source jest jego otwarto! Masz peny dostp do kodu rdowego i danych wikszoci rozszerze. W tym przypadku oznacza to, e moesz rcznie skopiowa artykuy pobrane przez komponent Auto Articles 3000 do tabeli jos_content zawierajcej normalne artykuy Joomla!. Musisz tylko pamita, eby odpowiednio dopasowa warto niektrych pl, takich jak ID sekcji i kategorii (odpowiednio sectionid i catid), aby artykuy zostay odpowiednio zapisane. Kopiowanie artykuw mona wykona, stosujc instrukcj MySQL INSERT INTO. Informacje, jak skonstruowa odpowiednie zapytanie, znajdziesz na stronie: http: //dev. mysql. com/doc/refman/5.0/en/insert-select, html

Rozdzia 12. czenie z zasobami zewntrznymi


lysunek 12.8. N czci administracyjnej ozszerzenia vona wybra "ematyk pobieranych artykuw
Categories manager j Category A u t o and Trucks Business and Finance : Computers and T h e Ir Education Family Fod and Drink Gadgets and Oremos Health Current Status J R e q u i r e d status

313

Q Q 0 O
9

Q Q

Leg3i Matte Marketing

Kolejnym sposobem ingerencji w funkcjonalno rozszerzenia jest zmiana czstotliwoci pobierania artykuw. Moesz tak j ustawi, aby artykuy byy pobierane czciej ni co 30 minut. Nie jest to moliwe z poziomu interfejsu administratora. Zmiana tego typu wymaga ingerencji w kod rdowy. Otwrz plik zawierajcy kod komponentu w edytorze tekstu, moesz go znale (wzgldem gwnego katalogu Joomla!) w: 1 components \com_a3000\a3000.php

Poszukaj w pliku linii, ktra przypomina ponisz:


if ( t i m e O - $last_checked > 1800) {

Warto parametru time zwracana jest w sekundach, wic warto 1800 odpowiada 30 minutom. Zmie t liczb wedug upodoba.

Urzdzanie programami partnerskimi


Programy partnerskie to najpopularniejszy sposb zarabiania na prowadzeniu strony W W W . Webmaster podpisuje umow z dan firm, np. Google lub Amazon, przez co zgadza si na wywietlanie reklam na swojej stronie. Za kadym razem, kiedy odwiedzajcy kliknie reklam lub kupi jaki przedmiot, webmaster otrzymuje wynagrodzenie. Programy tego typu s na tyle dochodowe, e due strony zarabiaj dosownie tysice dolarw miesicznie wycznie z programw partnerskich. Joomla! moe obsugiwa wikszo popularnych programw partnerskich za p o m o c rozszerze, ktre wstawiaj niezbdny kod (HTML, czsto take JavaScript) w treci strony. Aby uruchomi na stronie dany program partnerski, wystarczy zainstalowa odpowiednie rozszerzenie, ustawi jego parametry, aby odpowiaday usudze, a na kocu wybra miejsce na stronie, gdzie powinny pojawia si reklamy.

314

Joomla!. Profesjonalne tworzenie stron WN 1W

Program partnerski Google AdSense


Jednym z najpopularniejszych programw partnerskich w internecie jest AdSense firmy Google. Usuga polega na umieszczeniu na stronie kodu, ktry wywietla reklamy powizane z treci strony. Za kadym razem, kiedy uytkownik kliknie ktr reklam, waciciel strony dostaje pewn kwot. cznie moe uzbiera si z tego spora suma, jeli strona jest wyjtkowo popularna lub reklamy zwizane z tematyk strony s szczeglnie drogie. Aby skorzysta z reklam AdSense, musisz si najpierw zarejestro www.google, com/adsense

Po pierwszym uruchomieniu konta Google bd wywietlane wycznie spoeczne ogoszenia (zobacz rysunek 12.9), dopki pracownik Google nie zbada Twojej strony. Po potwierdzeniu zgodnoci z warunkami umowy (brak pornografii, nielegalnych materiaw itd.) zostan wywietlone patne reklamy. Rysunek 12.9. Zanim tre strony zostanie zweryfikowana przez pracownikw Google, bd wywietlane wycznie ogoszenia spoeczne

m
Today
Help Rebuild Lives & Communities in Hurricated States

Have you heard about the Nuts and Bolts Filmmaking book from Focal Press? This book opens the world of professional moviemaking to guerilla filmmakers everywhere. Not only Is the book full of Hollywood techniques, most of the equipment shown in the book can be constructed for under $30. Click on the above link

Program AdSense mona take konfigurowa, np. czy materiay w oddzielne kanay", co pozwala monitorowa reklamy w rnych czciach strony. Zarzdzanie kontem odbywa si z poziomu strony W W W , co zilustrowano na rysunku 12.10. Rysunek 12.10. Ekran administracyjny Google AdSense przedstawia podsumowanie wywietle, przychodw i innych danych
Today's Earnings: $4527.50
View payment history View 1 Today >j Page im ressions
A d S e n s e for C o n t e n t top channels

;.iick$

Page Cid

Page eCPM f?j

Earnings 54325.25

A d S e n s e for S e a r c h

C Sicks Referrals top products

CTR

Sign-tips

Conversions [21

Earnings S200 50

A d S e n s e for M o b i l e C o n t e n t - G e t started

Total Earnings

$4527.50

Rozdzia 12. czenie z zasobami zewntrznymi

315

W panelu administratora AdSense moesz wygenerowa kod, ktry powiniene wstawi na stron. Jest to fragment napisany w jzyku JavaScript, ktry przypomina poniszy:
<script type="text/javascript"><!-google_ad_client = "pub-xxxxxxxxxx": google_ad_width = 728: google_ad_height = 90; google_ad_format = "728x90_as": google_ad_type = "textjmage": google_ad_channel //--></scnpt> <script type="text/javascr1pt" src="http://pagead2.googlesyndi cati on.com/pagead/show_ads.js "> </script> ="xxxxxxxxxx":

Aby wstawi kod wywietlajcy reklamy AdSense na stronie Joomla!, moesz wykorzysta rozszerzenie o nazwie Mod HTML (http://fijiwebdesign.com). Jest to nieskomplikowany modu, ktry pozwala wywietli dowolny kod HTML lub JavaScript na stronie Joomla!. Domylnie, po zainstalowaniu moduu, tworzony jest jeden egzemplarz o nazwie Htm! Module. Moesz zmieni jego ustawienia, korzystajc z opcji Rozszerzenia/Moduy w panelu administratora pokazano to na rysunku 12.11. ysunek 12.11. kran edycji arametrw loduu Mod ITML pozwala /prowadzi 'owolny kod ITML, ktry ostanie /ywietlony a stronie

Ustaw tytu moduu, aby odpowiada treci (np. GoogleOl, poniewa jest to pierwszy modu zawierajcy reklamy google). Wycz wywietlanie tytuu, wcz pokazywanie moduu na stronie i wybierz pozycj. Waciwy kod wprowad w pole HTML box. Wreszcie kliknij przycisk Zapisz (w prawej grnej czci ekranu), a reklamy Google automatycznie pojawi si w wybranym miejscu. Aby utworzy kolejny egzemplarz moduu wywietlajcego reklamy Google, kliknij przycisk Nowy na stronie Moduy. Zaznacz HTML Module jako typ moduu (zobacz rysunek 12.12), kliknij przycisk Dalej. Od tego momentu konfiguracja przebiega identycznie jak we wczeniejszym przykadzie.

316

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 12.12. Tworzc nowy egzemplarz moduu, wybierz typ HTML Module

/ c w u t l . . m hi, m cieka pokotu O Wyswi e l j t ^ ^ ^ ^ ^

Moduty O Reklama Owtasnykod HTML O Stopka ONajnowsze wiadomoci

OL,,..,. O NjjjEciej tzsrana O Ankieta Ol-,,*.. O 3*4.

o,., OMU,*. OoiaOu OtaMI O Saytk ttsyi whoVs Online

Ota,
O Wpirijtz

Program partnerski firmy Amazon


Podobnie jak Google, Amazon rwnie udostpnia program partnerski (,http://affiliateprogram.amazon.com/gp/associates/join). W przeciwiestwie do Google Amazon paci wycznie za te kliknicia odnonikw, ktre zakoczyy si sprzeda. Nie ma znaczenia tutaj, czy kupiony zostanie akurat reklamowany przedmiot, liczy si, czy uytkownik przychodzcy z danej strony dokona dowolnego zakupu. Amazon umoliwia wstawienie reklam rnego typu na stronie od listy konkretnych produktw, po reklamy kontekstowe. Na rysunku 12.13 przedstawiono kilka z nich, ktrych kod mona wygenerowa w panelu programu partnerskiego. Kliknij przycisk Add obok interesujcego typu reklam, a zostanie wygenerowany may fragment kodu JavaScript, ktry nastpnie powiniene wstawi na swoj stron. Rysunek 12.13. Program Amazona pozwala wybra z kilku typw reklam

Link to a specific product on A m a z o n . c a and show some information about t h a t p r o d u c t . T h e Product Links tool lets y o u build customised T e x t Links, T e x t and Image links, a n d Image only links to A m a z o n p r o d u c t s . Y o u r links will include your A s s o c i a t e tag and y o u will be paid for qualifying revenues coming through this link. Use Product Previews t o e n h a n c e y o u r Product Links. A d d Product Links n o w

t
amaxonmp3
Link to A m a z o n product c a t e g o r i e s and promotions using our stylish graphical banners. Many standard banner sizes and shapes available. S h o w special graphics for special A m a z o n . c a promotions s u c h as Back to School or Mothers Day. Easy t o add, Earn referrals o f up t o 15% o f sales. A d d Banners N o w

J&M
f amazonconi

W panelu programu partnerskiego (zobacz rysunek 12.14) moesz znale informacje na temat skutecznoci reklam, tzn. ile klikni zakoczyo si sprzeda. Warto zwrci szczegln uwag na list produktw, aby okreli, ktre z nich trafiaj w zainteresowania odwiedzajcych, a ktre nigdy nie s wybierane.

Rozdzia 12. czenie z zasobami zewntrznymi ysunek 12.14. V panelu arzdzania najduj si iformacje a temat lopularnoci skutecznoci eklam

317

Earnings S u m m a r y T o t a l items s h i p p e d Referral R a t e ( I n c r e a s e this t o Referral F e e s Gift C e r t i f i c a t e / C a r d Earnings Kindle S u b s c r i p t i o n E a r n i n g s Prime S u b s c r i p t i o n Earnings 6.00% b y referring 7 more items)

Jul! report ; 0 4.00% $0.00 $0.00 $0.00 $0.00

Glossary

Click here to view the referral rate tier chart,

fait repoit j O r d e r e d items Clicks Conversion Glossary 0 0 N/A

I Link T y p e R e p o r t Link Tvce (Glossary 1 P r o d u c t Links E n h a n c e d Display A.iilH m m

'J&zs&j
Conversion

0.00%

Do zarzdzania reklamami Amazona moesz wykorzysta jedno z dostpnych rozszerze Joomla!. Moesz zdecydowa si na Mod HTML, ktry zademonstrowano w ramach opisu programu Google AdSense, lub wybra rozszerzenie stworzone specjalnie dla programu partnerskiego Amazona.

Dzszerzenie Amazon Associates


Rozszerzenie Amazon Associates jest dodatkiem, ktry umoliwia wstawienie reklam z programu partnerskiego bezporednio w treci artykuu. Dodatek wsppracuje poprawnie z wikszoci wariantw jzykowych programu, np. Amazon.com, Amazon.co.uk, Amazon.de i Amazon.fr. Rozszerzenie moesz pobra z: http://extensions.joomlaspan.com/view-document-details/159-amcizon-associates.html Po zakoczeniu instalacji musisz wprowadzi numer ID programu partnerskiego w ustawieniach dodatku (zobacz rysunek 12.15). Parametr Amazon ID jest kluczowy, poniewa na jego podstawie naliczane s zyski Twojej strony. Inne z ustawie wpywaj na wygld prezentowanych reklam. Musisz zna ID produktw, ktre zamierzasz umieci na stronie. ID produktu mona odczyta z jego adresu na stronie Amazona, dlatego musisz najpierw znale wybrany przedmiot. Adres przedmiotu bdzie przypomina poniszy (ID produktu zostao wyrnione): http://www.amazon.co.uk/Sandisk-Player-Sansa-feature-incliided/dp/B000W3QTBE/ ref=sr_l _1 ? ie=UTF8&selectronics&qid=1229625364&sr=8-1 Aby wstawi odnonik do danego przedmiotu i okreli, w jaki sposb bdzie opywany przez tekst (opcjonalne, moliwe ustawienia to L E F T i RIGHT), wprowad w tre artykuu nastpujcy tekst:
{amazon id='B000W3QTBE' align='LEFT'}

318

Joomla!.

Profesjonalne tworzenie stron WN 1W

Rysunek 12.15. Konfiguracja rozszerzenia Amazon Associates

S'ryb Z!

i Pdld og

O O

wg yoi ,'

Dodatek: [zmie]

com (United States) co.uk (United Kingdom) V.

0 Rerwszy

FFFFFF

Use {amazon \i='itm#itiHtr aligns***'} where the id i the amaze s id of the product.<br/> You can find the id by searching amazon.com for a product and looking at the uil.<br /><br /> The ui will look something l k this:<br !> http:/Awi*Ai.amazon.com ie /gp/produ ctf<fo nt co I o r r d > B00005RIY5 <Ho nt>/ief= p d_ka r_giAj_1 = e /002-5997680-7114400?%5 Fencoding=UT F8&v= g I a n ce&n= 130 < b r br /> The highligi

000 000
0000FF

iwMi' jest wolnym oprogramowaniem dostpnym na licenoji i l l U OPL

Moesz wstawi dowoln liczb odwoa, ale pamitaj, e kada reklama jest oddzielnie pobierana z serwerw Amazona. W praktyce oznacza to, e dziaanie Twojej strony moe zosta spowolnione, jeli pracuje ona na czu o niskiej przepustowoci lub serwer Amazona * jest przeciony. Jeli produkt nie jest poprawnie wywietlany, sprbuj wyczy na chwil edytor WYSIWYG, a nastpnie ponownie wprowad kod odpowiedzialny za reklamy w tre artykuu. Niektre edytory WYSIWYG niepoprawnie odczytuj kod reklam, co doprowadza do bdw zapisu.

Amazon Products Feed Brigde


Duo potniejszy, od przedstawionego wczeniej rozszerzenia, jest pakiet Amazon Products Feed (APF). Jest to aplikacja open source, stworzona z zastosowaniem biblioteki PERL, poczona z API usug sieciowych Amazona. Umoliwia wywietlanie aktualnych produktw Amazona na Twojej stronie. Za p o m o c rozszerzenia APF Brigde moesz poczy system APF z Joomla!. Amazon Products Feed Bridge to pakiet moduw, komponentw, a take dodatek, ktry pozwala Ci stworzy wirtualny sklep Amazona na Twojej stronie. Na rysunku 12.16 przedstawiono przykadow stron Joomla! zawierajc funkcj wyszukiwania produktw i wywietlajc ksik wraz z opisem, cen, zdjciem okadki i innymi informacjami. Aplikacj APF moesz pobra na stronie: www. mrrat. com/aws Pakiet APF Bridge dla Joomla! dostpny jest na stronie: www. deanmarsha. co. uk/demo/apf bridge

Rozdzia 12. czenie z zasobami zewntrznymi ysunek 12.16. mazon Products eed Brigde czy tron Joomla! ezporednio e sklepem mazon Message from Dean - May 8th 2007
! a m currently testing out a new version of the APF Bridge Component - If you notice any errors within this demo store please drop me a line

319

Books > Subjects > Science Fiction & Fantasy


Ciment Store: US World Stole

U K Store I Canadian Store I French Store I German Store

Books : Categories
Only within this Category v Search

P i eakitKi D a w n tTtm 1 witttttit Saua. Book 41 by. Steahenie Meyer August 02, 2008

List Pt ice: Atn.tzori.coin's Pi ice: 112.64 V o n S a w : $10.35 (45%) Pricsi subject to change.

Buy from Amazon.com

Pakiet APF Brigde skada si z kilku rozszerze, ktre odpowiadaj za rne funkcje. Poszczeglne rozszerzenia to: Komponent APF Bridge czy bibliotek APF Perl z Joomla!. Dodatek mosAPF_05.b3 We wsppracy z komponentem przeszukuje tre artykuu i wstawia w miejsce znacznikw APF informacje ze sklepu Amazon. Dodatek mosAPF_button Dodaje przycisk do edytora WYSIWYG Joomla!, ktry pozwala wstawi poszczeglne znaczniki APF Brigde. Stosowanie tego rozszerzenia oszczdza czas i zmniejsza ryzyko bdw spowodowanych niepoprawnym wprowadzeniem. Modu modapfsearch Wywietla pole wyszukiwania, ktre umoliwia przeszukiwanie sklepu Amazon w danym kraju.

System APF napisano w Perlu w oparciu o bibliotek cURL, ktr zastosowano do przesyania plikw. Jeli na Twoim serwerze nie zainstalowano biblioteki cURL, nie bdziesz mg uruchomi APF.

[omunikacja biznesowa z zastosowaniem EDI


Rozrost e-commerce w cigu ostatniej dekady jest zaskakujcy. Transakcje warte miliardy dolarw przeprowadzane s za porednictwem sieci Web i zwizanych z ni technologii. W rozdziale 4. wspomniano, e system Joomla! mona wzbogaci o funkcje eCommerce ukierunkowane na klientw, takie jak sklep internetowy. Jednak wikszo transferowanych przez internet pienidzy zwizana jest z transakcjami typu Business to Business (B2B). Za pomoc odpowiednich rozszerze moliwe jest zarzdzanie takimi transakcjami w Joomla!.

320

Joomla!. Profesjonalne tworzenie stron WN 1W EDI (Electronic Data Interchange elektroniczna wymiana danych) to zbir standardw stosowanych przy elektronicznej wymianie informacji midzy organizacjami. Mimo braku rozgosu format ten jest gwnym standardem wykorzystywanym przy wikszoci oglnowiatowych elektronicznych transakcji. Ze wzgldu na gwnym obszar zastosowania (B2B) wikszo implementacji EDI pozostaje ukryta", w przeciwiestwie do spopularyzowanych formatw, takich jak XML. Dziki odpowiednim rozszerzeniom moesz zmieni Joomla! w serwer EDI.

Dokumenty EDI
EDI stosowany jest czsto do automatyzacji realizacji transakcji. Dokumenty EDI mog by przesyane w dowolny sposb, np. przez FTP, HTTP, MIME, bezporednio poczony modem, AS2, AS2 lub VAN. Value Added Network (VAN) to rodzaj zabezpieczonej, prywatnej sieci, oferowanej przez firmy, takie jak INOVIS, GXS i BT*EDINET. Coraz czciej stanowi take warstw zabezpiecze w przypadku przesyania danych przez internet, co zmniejsza koszty i daje wiksze moliwoci przesyu. Korporacja Wal-Mart stosuje standard Applicability Statement 2 (AS2), ktry narzuca model klient-serwer w komunikacji EDI. Standard nakrela list wymaga (np. statyczny adres IP serwera bazowego), ktre ograniczaj ryzyko kompromitacji systemu. Protok AS2 opisano w dokumencie RFC 4130, dostpnym pod adresem: www.ietf.org/rfc/rfc4130. txt

Wikszo dokumentw EDI odpowiada treci oryginalnym, papierowym materiaom, ktre zastpuje. Standardowy format dokumentw okrelono dla wielu bran, np. przemysu maszynowego (plany konstrukcyjne, harmonogram pracy itd.), przemysu medycznego (dane o pacjentach, wyniki bada laboratoryjnych itd.), transportu (faktury, zamwienia itd.). Opisy kilku standardw dokumentw EDI znajdziesz na stronie: http://rapidnet.org/Default.aspx?tabid=486

Standardy EDI
Istniej dwa gwne standardy EDI. Standard ANSI ASC Xl2 (najczciej nazywany po prostu AT/2) jest gwn implementacj wykorzystywan w Stanach Zjednoczonych. W Europie stosowany jest standard United Nations/Electronic Data Interchange For Administration, Commerce, and Transport (UN/EDIFACT), popierany przez ONZ. Standardy dla dokumentw X12 dla rnych bran pogrupowano w kategorie przedstawia je (z odpowiednimi skrtami) tabela 12.1.

Rozdzia 12. czenie z zasobami zewntrznymi


abela 12.1. Kategorie formatw dokumentw standardu Kategoria Zamwienia (ORD) Co zawiera X12

321

Standardy okrelajce rne pozycje, w tym porozumienia o wsppracy reklamowej, powiadomienia o bonach, faktury/zlecenia kupna/zmiany zlece kupna artykuw spoywczych, faktury, utrzymanie artykuw, bony producentw i wykup bonw, katalogi handlowe, zlecenia zakupu i potwierdzenia tych zlece, charakterystyki kont, powiadomienia i potwierdzenia zwrotw, listy przewozowe oraz powiadomienia o wysyce i zafakturowaniu. Standardy zwizane z ewidencj zasobw, zapytaniami o artykuy, reklamacj materiaw, badaniem zobowiza materiaowych, statusem i zatwierdzaniem cen, informacj o cenach, zatwierdzaniem (lub wycofaniem zatwierdzenia) produktw probami o oferty cenowe, zamwieniami oraz odpowiedziami na oferty cenowe. Definicje dotyczce kont firmowych, elektronicznej rejestracji formularzy podatkowych i potwierdze ich zoenia, rozlicze dochodw i aktyww, zawiadcze o stanie zatrudnienia, powiadomie o upowanieniach udzielonych penomocnikom, oceny lub korekty nalenoci podatkowych, owiadcze o uzyskanych dochodach, informacji statystycznych oraz wymiany informacji podatkowych. Standardy okrelajce sposb raportowania o odwiedzonych klientach, raporty z analiz dedukcyjnych, przydzia funduszy rozwojowych, odpowiedzi na oferty przetargowe, powiadomienia o korektach stanu magazynowego, powiadomienia o przewozach magazynowych, zamwienia przewozu, powiadomienia 0 odbiorze przekazanego towaru do magazynu oraz powiadomienia o wysyce towaru z magazyn li. Definicje dotyczce analizy kont, ich rozdziau i informacji oraz obsugi i statusu, informowania o obcieniach, kontroli oglnego obcienia, raportowania sprzeday komisowej, wycigw z konta/faktur dotyczcych usug skonsolidowanych, korekt po stronie winien" i ma", zatwierdzania obcie, raportw finansowych, zawiadomie o zwrotach finansowych, faktur przewozowych, podsumowania dziaalnoci operacyjnej, faktur, depozytw, sprawozda z wydatkw operacyjnych, wnioskw o uniewanienie patnoci oraz zawiadomie o zleceniach zakupu 1 przelewach. Standardy dotyczce podmiotw gospodarczych, nakazw sdowych i egzekucyjnych, wnioskw sdowych, elektronicznej rejestracji potwierdze zoenia formularzy podatkowych, wnioskw o przyznanie koncesji przez Federaln Komisj cznoci, rekompensat okresowych, sprawozda zwizanych z opatami licencyjnymi, informacji statystycznych, powiadomie o stawkach podatkowych, informacji o stawkach podatkowych lub zwrocie podatku z tytuu ubezpieczenia od utraty pracy, okrelenia jednolitych kodw handlowych oraz informacji o rejestracji wyborcw. Standardy dotyczce raportowania danych o kosztach zwizanych z wykonawcami, potwierdze lub korekt dostawy/zwrotu, zapisu bazowego dostaw/zwrotw, zapyta/informacji o towarach, zapyta o statusie zamwienia, raportw o statusie zamwie, planowania harmonogramu z uwzgldnieniem moliwoci wydania towarw, danych na temat funkcjonowania produktw, korygowania zapisu transferu produktw, raportw o odsprzeday i transferze produktw, kolejnoci produkcji, odbioru potwierdzenia (akceptacji) certyfikatu oraz odpowiedzi w sprawie korekty zapisu transferu produktw.

Obsuga materiaw (MAT)

Usugi podatkowe (TAX)

Magazyny (WAR)

Finanse (FIN)

Urzdowe (GOV)

Produkcja (MAN)

322

Joomla!. Profesjonalne tworzenie stron WN 1W

Tabela 12.1. Kategorie formatw dokumentw standardu X12 cig dalszy Kategoria Dostawy (DEL) Co zawiera Standardy dotyczce przydziau zada zwizanych z transportem, rachunkw i faktur przewozowych, informacji zbiorczych na temat bezporednich dostaw do sklepw, zamwie na usugi logistyczne, odpowiedzi od usugodawcw logistycznych, zbiorczego zestawienia adunku dla przewonikw, dokumentacji zlecenia usugi transportowej, odpowiedzi na przydzia zada transportowych, instrukcji zwizanych z tras i przewonikiem, zgoszenia adunku (manifest przewozowy), powiadomie o wysyce i zafakturowaniu, informacji o rozbienociach w dostawie wysanego towaru, informacji wysykowych orazhannonogramu przewozu. Standardy dotyczce klauzul i postanowie umownych, treci czci skadowych, streszcze umw, statusu sfinalizowania umowy, raportw dotyczcych zarzdzania patnociami wynikajcymi z umowy, propozycji cenowych w umowach, raportowania danych o kosztach kontrahentw, pogbiania komunikacji, zmiany przydziaw zada logistycznych, utrzymania zamwie usugowych, historii cen, powiadomie o zaopatrzeniu, zachowania wymiarw produktw, raportowania kosztw projektu, raportowania harmonogramu projektu, specyfikacji (informacji technicznych), charakterystyki partnerw handlowych, przegldu wynikw sprzeday oraz innych informacji. Standardy okrelajce dziaalno rentow, szczegy przegldu pojazdw samochodowych, pobierane korzyci i wiadczenia, zawiadczenia o ubezpieczeniu przewoonego adunku, raporty o stanie roszcze i ledzenie odpowiedzi na wnioski, ledzenie realizacji wiadcze, warunki i zakres przyznawania ich oraz informacje 0 ich wysokoci, zapytania o warunki nabycia wiadcze, zakres i wysoko wiadcze, wiadczenia zdrowotne, zawiadomienia/patnoci dotyczce wiadcze zdrowotnych, powiadomienia o statusie wiadcze zdrowotnych, proby o status wiadcze zdrowotnych, informacje o dostawcy usug medycznych, informacje na temat usug medycznych, wnioski o ubezpieczenie na ycie i przyznanie renty inwalidzkiej, opis systemu ubezpiecze, dane na temat agenta ubezpieczeniowego, raportowanie wymogw ubezpieczeniowych, status wnioskw o ubezpieczenie/rent, wiadczenia dotyczce utraty lub zniszczenia pojazdw samochodowych, zgaszanie wypadkw medycznych, informacje o pacjentach, zawiadomienia o stratach losowych 1 utracie mienia, raporty o zniszczeniu mienia, raporty dotyczce urazw ciaa, chorb i wypadkw losowych, usugi informacji ubezpieczeniowej oraz orzeczenia wypaty. Definiuje komunikaty usug kryptograficznych, ledzenie statusu danych, struktur formularzy elektronicznych, transfer plikw, potwierdzenia funkcjonalne, zapytania oglne, odpowiedzi lub potwierdzenia, potwierdzenia rezerwacji, listy adresowe, anulowanie ustale oraz komunikaty tekstowe. Standardy dotyczce wnioskw o przyznanie wiadcze na podstawie ubezpiecze hipotecznych, informacji o zdolnoci kredytowej, raportw o kredycie hipotecznym, zamwienia raportu o kredycie hipotecznym, statusu domylnego poyczki hipotecznej, wpisu do ksigi wieczystej, powiadamiania o zmianie zapisw dotyczcych wasnoci lub hipoteki, raportu o nieruchomoci, proby o raport o nieruchomoci, inspekcji nieruchomoci, informacji o spacie nieruchomoci, dokumentowania tytuu do nieruchomoci, zamwienia usug ubezpieczenia tytuu do nieruchomoci, wnioskw o poyczk mieszkaniow, wnioskw o ubezpieczenie hipoteczne, odpowiedzi na wniosek o ubezpieczenie hipoteczne, raportu o dodatkowym zabezpieczeniu hipotecznym inwestora oraz przekazania dodatkowej poyczki hipotecznej.

Inynieria zarzdzania i umowy (ENG)

Ubezpieczenia i zdrowie (INS)

Pozostae transakcje (MIS)

Hipoteka (MOR)

Rozdzia 12. czenie z zasobami zewntrznymi


abela 12.1. Kategorie formatw dokumentw standardu X12 cig dalszy Kategoria Serwisowanie produktw (PSS) Co zawiera Definicje dotyczce rejestracji produktu, roszcze serwisowych, odpowiedzi na roszczenia serwisowe, powiadomie o serwisowaniu produktu, informacji 0 pochodzeniu produktu, ogosze promocyjnych oraz zgaszania i autoryzacji zwrotw handlowych.

323

Jako i bezpieczestwo Standardy okrelajce dane toksykologiczne z testw przeprowadzanych na zwierztach, uprawnienia do prowadzenia samochodw dostawczych, (SQQ) wymian informacji na temat uprawnie do prowadzenia samochodw dostawczych oraz ich bezpieczestwa, karty charakterystyk substancji niebezpiecznych, protokoy niezgodnoci, raporty z wynikami testw oraz dania 1 raportowanie wynikw testowych. Informacje dla studentw (STU) Definiuje podania o przyjcie do instytucji edukacyjnych, ewidencj kursw edukacyjnych, podania o stypendium i pomoc finansow, wnioski o wydanie zawiadcze z przebiegu studiw (wycigi), odpowiedzi na wnioski o wydanie zawiadcze z przebiegu studiw (wycigi) i powiadczenia, potwierdzenia przyjcia na studia, wnioski o kredyt studencki, porczenia kredytw studenckich, nakaz zwrotu kredytu studenckiego oraz weryfikacj statusu i spaty kredytu studenckiego.

Europejski standard U N / E D I F A C T zosta z a a k c e p t o w a n y przez ISO j a k o standard 9735. Nie uwzgldniono w nim okrelonego zestawu kategorii jak w X l 2 . Zamiast tego d o k u m e n t y zdefiniowano w formacie wiadomoci identyfikowanych przez skrty przedstawione w tabeli 12.2. abela 12.2. Skrty Metoda Skrt APERAK AUTACK. AUTHOR BANSTA BAPLIE BAPLTE BOPBNK BOPCUS BOPDIR BOPINF CALINF CASINT UN/EDIFACT Opis Znaczenie Bdy transmisji i potwierdzenia Bezpieczne uwierzytelnianie i potwierdzanie Autoryzacja Stan realizacji zlece bankowych Plan rozmieszczenia adunku i wolne miejsca Oglna liczba towarw lub ilo adunku Rozliczenia bankowe i zestawienie transakcji Zestawienie salda patnoci klienta Deklaracja bezporedniego salda patnoci Informacja od klienta na temat salda patniczego Informacja o przybyciu statku Proba o wystpienie na drog sdow w postpowaniu cywilnym

324

Joomla!. Profesjonalne tworzenie stron WN 1W

Tabela 12.2. Skrty UN/EDIFACT cig dalszy Metoda CASRES CHAMAP COARRI CODECO CODENO COEDOR COHAOR COLADV COMDIS CONAPW CONDPV CONDRA CONDRO CONEST CON1TT CONPVA CONQVA CONRPW CONTEN CONTRL CONWQD COPARN COPINO COPRAR COREOR COSTCO COSTOR CREADV CREEXT CREMUL CURRAC CUSCAR Opis Wystpienie na drog sdow w postpowaniu cywilnym Tablica odwzorowa Raport o wyadowaniu (zaadunku) kontenera Raport przyjcia (odprawy) kontenera Powiadomienie o gotowoci do klarowania statku/wyganiciu pozwolenia Raport o stanie kontenerw Zamwienie specjalnej obsugi kontenera Zawiadomienie o dokumentacji Spr handlowy Informacja o pracach do wykonania Oszacowanie patnoci bezporedniej Zarzdzanie plikami planw projektowych Organizacja i struktura planw projektowych Okrelenie warunkw kontraktu Zawiadomienie o przetargu Oszacowanie patnoci Oszacowanie iloci Odpowied na powiadomienie o pracach do wykonania Oferta przetargowa Komunikat kontrolny Okrelenie liczby elementw roboczych Zgoszenie kontenera Zawiadomienie o kontenerze Polecenie wyadowania (lub zaadowania) kontenera Polecenie zwolnienia kontenera Potwierdzenie wyadowania (zaadowania) zawartoci kontenera Polecenie wyadowania (zaadowania) zawartoci kontenera Zawiadomienie o udzieleniu kredytu Szczegowe zawiadomienie o udzieleniu kredytu Wielostronne zawiadomienie o udzieleniu kredytu Rachunek biecy Zgoszenie adunku do odprawy celnej

Rozdzia 12. czenie z zasobami zewntrznymi


Tabela 12.2. Skrty UN/EDIFACT cig dalszy Opis Deklaracja celna Ekspresowa deklaracja celna Raport spedycji celnej Odpowied urzdu celnego Siedzenie danych Zawiadomienie o obcieniu konta Wielostronne zawiadomienie o obcieniu konta Harmonogram dostaw Precyzyjne okrelenie czasu dostawy Zawiadomienie o wysyce Ocena zniszcze wyposaenia i kosztw naprawy Polecenie zapaty Definicja katalogu Zawiadomienie o akredytywie dokumentowej Zawiadomienie o zmianie w akredytywie dokumentowej Informacje o zmianie w akredytywie dokumentowej Proba o zmian w akredytywie dokumentowej Wniosek o akredytyw dokumentow Odpowied na zmian w akredytywie dokumentowej Informacja o wystawieniu akredytywy dokumentowej Wycofanie operacji finansowej Wycig z konta bankowego Komunikat oglny Informacje statystyczne Przygotowanie towaru do transportu Spedycja i konsolidacja Kalkulacja kosztw spedycji i transportu Powiadomienie o materiaach niebezpiecznych Koszty przewozu w transporcie midzynarodowym i inne opaty Lista adunkw niebezpiecznych Powiadomienie o przybyciu przesyki Potwierdzenie rezerwacji

325

326

Joomla!. Profesjonalne tworzenie stron WN 1W

Tabela 12.2. Skrty UN/EDIFACT cig dalszy Metoda ITFMBF IFTMBP IFTMCS 1FTMIN IFTMSC 1FTRIN IFTSAI 1FTSTA IFTSTQ IHCEBI INSPRE INVOIC INVRPT ITRGRP ITRRPT JAPRES JIBILL JINFDE JOBAPP JOBCON JOBMOD JOBOFF MEDADR MEDAUT MEDPID MEDREQ MEDRPT MESGEV MIGRPT MOVINS ORDCHG Opis Rezerwacja staa Rezerwacja tymczasowa Status wykonania instrukcji zawartych w umowie Instrukcja transportowa Spedycja i transport pojedynczej przesyki Informacja o tempie spedycji i transportu Harmonogram spedycji i transportu oraz informacje o dostpnoci towaru Informacja o statusie midzynarodowego transportu multimodalnego Proba o status midzynarodowego transportu multimodalnego Interaktywne zapytania i odpowiedzi na temat uprawnie i wiadcze z tytuu ubezpieczenia zdrowotnego Skadka ubezpieczeniowa Faktura Raport magazynowy Przeadunek na trasie przewozu Szczegowy raport o przeadunku na trasie przewozu Wyniki przegldu poda o przyjcie do pracy Sprawozdanie rozliczeniowe wsplnego udziau Proba o informacje na temat pracy Przedstawienie ofert osb ubiegajcych si o przyjcie do pracy Potwierdzenie zlecenia pracy Modyfikacja zlecenia pracy Zlecenie pracy Niepodane dziaanie leku Wstpna autoryzacja medyczna Identyfikacja osoby Proba o usug medyczn Wyniki badania medycznego Wydarzenie towarzyskie Zgoszenie instrukcji wdraania wiadomoci (MIG, ang. Message implementation guide) Instrukcja rozmieszczenia i zamocowania adunku Proba o zmian zamwienia

Rozdzia 12. czenie z zasobami zewntrznymi


abela 12.2. Skrty UN/EDIFACT cig dalszy Opis Zamwienie Odpowied na zamwienie Informacja adresowa Lista pasaerw Zawiadomienie o potrceniach pacowych Szczegowe polecenie zapaty Wielostronne polecenie zapaty Polecenie zapaty Raport o uszkodzeniach i utracie mienia Katalog lub cennik Dane o produkcie Uzgodnienie wymiany produktw Lista promocyjna Zaplata skadki ubezpieczeniowej Dane jakociowe Oferta cenowa Raportowanie surowych danych Potwierdzenie reasekuracji Potwierdzenie dostawy Wyliczenia reasekuracyjne Ochrona kredytowa Roszczenia reasekuracyjne Awizo przekazu Skadka reasekuracyjna Proba o dokument Proba o ofert cenow Rozliczenie reasekuracyjne Rezerwacja Proba o rezerwacj komunikat interaktywny Odpowied na rezerwacj komunikat interaktywny Reasekuracyjny rachunek techniczny

327

328

Joomla!. Profesjonalne tworzenie stron WN 1W

Tabela 12.2. Skrty UN/EDIFACT cig dalszy Metoda SAFHAZ SANCRT SCRIPT SKDACK SLSFCT SLSRPT SSCLDE SSDREQ SSIMOD SSRECH SSREGW STATAC SUPCOT SU PM AN SUPRES TANSTA TESTEX TESTIM TINREQ TINRSP TRADES TRADIN TRAILS TRALOC TRAREQ TRAVAK TRAVIN VATDEC VESDEP WKGRDC WKGRRE Opis Dane na temat bezpieczestwa i materiaw niebezpiecznych Regulacje prawne dotyczce midzynarodowego przewozu towarw Zapytania i odpowiedzi dotyczce recept komunikat interaktywny Potwierdzenia harmonogramu Prognoza sprzeday Raport sprzeday Decyzja w sprawie wiadczenia z opieki spoecznej Proba o przesanie danych dla opieki spoecznej Zmiana danych identyfikacyjnych Historia ubezpieczeniowa pracownika Powiadomienie o zarejestrowaniu pracownika Wycig z konta Zawiadomienie o skadkach na fundusz emerytalny Obsuga funduszu emerytalnego Odpowied dostawcy Raport o stanie zbiornikw Komunikat testowy w trybie jawnym Komunikat testowy w trybie ukrytym Proba o informacje turystyczne Odpowied na prob o informacje turystyczne Definicje opisu podry i ruchu ulicznego Szczegowe informacje na temat trasy podry lub ruchu ulicznego dotyczce pojedynczego podrujcego Planowanie i wskazwki dotyczce trasy podry i ruchu ulicznego Lokalizacja trasy lub pooenia w ruchu ulicznym Proba o informacje na temat trasy podry lub ruchu ulicznego Potwierdzenie informacji na temat trasy podry lub ruchu ulicznego Informacja o sytuacji na trasie podry lub w ruchu ulicznym Podatek VAT Wypynicie statku Decyzja w sprawie dodatku pracowniczego Proba o przyznanie dodatku pracowniczego

Rozdzia 12. czenie z zasobami zewntrznymi

329

Rozszerzenie Skylark
Za pomoc rozszerzenia Skylark moesz zmieni Joomla! w serwer EDI. Skylark umoliwia zarzdzanie partnerami handlowymi, procesami biznesowymi, protokoami komunikacyjnymi, a take konwerterami formatw dokumentw. Nie ma ogranicze odnonie do typw obsugiwanych dokumentw, przetwarzane s zarwno przychodzce, jak i wychodzce dokumenty. Rozszerzenie Skylark skada si z zestawu komponentw i moduw. Obsugiwane s nastpujce transporty (protokoy komunikacyjne): Generic (oglne, np. FTP, SMTP i POP3), ARI (wykorzystuje HTTP), Honda (wykorzystuje IBM MQ), Stihl (wykorzystuje HTTP).

Obsuguje ponisze translatory: ARI, Briggs, GMI, Honda, Stihl.

Po ukoczeniu instalacji zostanie wywietlony odnonik do wprowadzenia (zobacz rysunek 12.17). Warto zapozna si z jego treci, poniewa wyjania podstawowe zasady dziaania komponentu. Rysunek 12.17. Wybierz Skylark introduction aby zapozna si ? przydatnymi informacjami wprowadzajcymi
SkylaikEDlit>a,lllaIi<msircciissrtll

"

Skylark EDI: Welcome to Skylark EDI

.
Please read the following notes. Before Skylaik EDI can actually be used for anything you will need to i s a l and configure additional Skylaik ntl EDI modules. This can be a ltl involved and so you are strongly advised to read the Skylaik EDI Administration Manual for information on how ite

ble by clicking on the "Help" menu i e t individual pages within Skylark EDI car This i the fourth alpha release of Skylark EDI. An alpha release i a version of the software that i sil in development and probably has features, s s s tl sometimes important features, missing or not woiking. Features that are woiking may be changed without notice, be broken by a future release, or simply be removed. In short, an alpha release i not suitable for a production environment. s I you are upgrading from a previous release then you will need to update your database schema. Update scripts are available to a s s you. but f sit please read the section on updating Skylaik in the Administration Manual for f l instructions. Substantial changes have been made to drivers for ul this release. I you have produced your own drivers for earlier releases of Skylark EDI then you w l need to amend them before they w l work f il il correctly with this release. Refer t the Skylaik EDI Developers Manual and the release notes for further information. o The following shortcuts w l take you directly to specific pages in the help system ( t i not s r c l necessary to c i k on "Continue" at this point). il i s tity lc

330

Joomla!. Profesjonalne tworzenie stron WN 1W

Komunikacja z sieciami zewntrznymi


W poprzednich rozdziaach miae okazj dowiadczy, e stworzenie wasnego, prostego komponentu dla systemu Joomla! nie wymaga duych nakadw pracy. Dziki zastosowaniu platformy Joomla! wikszo elementw interfejsu uytkownika jest ju gotowa, co pozwala Ci skupi si na szczegach implementacji danej funkcji. Z tego powodu komunikacja z sieciami zewntrznymi w Joomla! jest nie tylko praktyczna, ale take tania w porwnaniu z tworzeniem samodzielnej aplikacji internetowej. W tym podrozdziale dowiesz si, jak stworzy rozszerzenia, ktre cz si z zewntrznymi stronami. Pierwsza, prosta aplikacja zostanie zbudowana z zastosowaniem zawartych w PHP funkcji do pobierania danych z serwerw zewntrznych. Dane pobrane w formacie HTML zostan przefiltrowane, a interesujce informacje wywietlone na stronie Joomla!. Drugie rozszerzenie doda nowe materiay na stronie, korzystajc z interfejsu internetowego zdalnego systemu (w tym wypadku jest to AP1 Map Google). Ostatnie rozszerzenie to przykad interakcji ze zdaln baz danych, w odpowiedzi na przesane zapytanie zostan zwrcone dane w formacie XML. Wszystkie zademonstrowane rozszerzenia mona dopasowa, dziki temu uda si sprosta realnym problemom. Przykadowo dowiadczenia zdobyte w komunikacji za porednictwem interfejsu internetowego zdalnego systemu mona wykorzysta przy programowaniu komunikacji z serwisem zewntrznym, a jest to szczeglnie przydatne, biorc pod uwag fakt, e liczba usug posiadajcych internetowe AP1 stale ronie.

Komponent typu screen scraper


System sieci World Wide Web przyczyni si, jak aden inny, do popularyzacji danych w formie tekstowej. Prawie wszystkie strony dostpne w internecie mona odwiedzi zarwno przez przegldark, jak i prosty program pobierajcy wycznie tekst (w tym wypadku zostan wywietlone take znaczniki HTML). Dostpno danych spowodowaa ponowny rozrost popularnoci programw typu screen scraper. Screen scraper pobiera dane, ktre normalnie pojawiyby si na ekranie (lub w oknie przegldarki), a nastpnie filtruje je pod ktem podanych informacji. Tak uzyskane informacje mog zosta zapisane lub ponownie sformatowane i wywietlone.

Krtka historia screen scraperw


Midzy latami siedemdziesitymi XX wieku, ktre cechowaa popularno tekstowych aplikacji opartych na modelu mainframe-terminal, a er przegldarek internetowych XXI wieku miaa miejsce era graficznych interfejsw uytkownika (GUI Graphical User Interface). Producenci oprogramowania, zachceni sukcesem komputerw typu Macintosh, zaczli wzbogaca aplikacje o okna, rozwijalne menu, pola wyboru, a take inne elementy, czego skutkiem bya wiksza elastyczno w porwnaniu z tekstowymi poprzednikami.

Rozdzia 12. czenie z zasobami zewntrznymi

331

Rewolucyjny rozrost popularnoci aplikacji graficznych oznacza spory problem dla organizacji, ktre zainwestoway ogromne iloci czasu i pienidzy w tekstowe programy napisane z myl o komputerach typu mainframe. Nie mino dziesi lat, a aplikacje tekstowe z nowinek technologicznych zmieniy si w zabytek. Niezbdne okazao si przepisanie aplikacji, tak aby korzystay z nowych paradygmatw GUI. Jeszcze wikszym wyzwaniem, ni ogrom pracy programistycznej, bya konwersja danych przechowywanych w tych specyficznych systemach. W czasie projektowania tych systemw nie stosowano oglnych standardw, poniewa nie byy one jeszcze zdefiniowane. W ten sposb zmiana formatu danych staa si wielkim wyzwaniem. Na scenie pojawiy si wtedy screen scrapery. Screen scraper by programem poredniczcym midzy aplikacj tekstow a uytkownikiem lub bardziej zaawansowanym programem pobierajcym dane. W przypadku aplikacji graficznych screen scraper to warstwa porednia midzy interfejsem graficznym, ktry by czci frontow systemu, a waciw aplikacj tekstow, pracujc w tle. Dane byy odczytywane z wydrukw programw tekstowych i przesyane do aplikacji graficznych. W ten sposb uytkownik mg korzysta ze wszystkich nowoczesnych udogodnie, takich jak moliwo cofania, wycinania, kopiowania i wklejania (a take wielu innych). Gdy uytkownik klikn przycisk Zapisz, screen scraper przesya dane do waciwej aplikacji tekstowej, symulujc wprowadzanie danych z klawiatury. Czciej zadaniem screen scraperw byo filtrowanie informacji z wydrukw, generowanych przez aplikacje tekstowe. Otrzymywane dane byy nastpnie przesyane do nowego systemu, np. systemu zarzdzania baz danych (DBMS). Wraz z upywem czasu i spadkiem zastosowania aplikacji tekstowych screen scrapery traciy na znaczeniu i popularnoci. Wikszo organizacji wymienia stare systemy na zgodne ze standardami serwery baz danych, ktre umoliwiay du elastyczno przechowywanych danych. Znikna konieczno stosowania programw typu screen scraper, poniewa zgodny ze standardami system przechowywania danych pozwala na dostp do nich za porednictwem aplikacji middleware dowolnego typu. Wraz z wybuchem popularnoci HTML wszystko si zmienio. Niemale z dnia na dzie udostpniono ocean danych w niezaszyfrowanym, publicznym i atwo dostpnym formacie. Wszystkie informacje publikowane na stronach WWW, dostpne dla przegldarek internetowych, s dostpne take dla programw zbierajcych, ktre przetwarzaj pobrane dane, aby zapisa je lub wywietli w innym formacie. Poniewa PHP posiada wbudowane funkcje zwizane z obsug HTTP, stosunkowo prosto mona napisa program, ktry pobiera kod HTML danej strony internetowej, a nastpnie wyszukuje na niej podane informacje. Implementacja takiego programu w postaci komponentu Joomla! nie sprawia wikszego problemu.

Wady zastosowania screen scrapera


Jeli pobierasz materiay ze zdalnej strony i publikujesz je na swojej witrynie, powstaje spora liczba problemw techniczne, prawne i etyczne. Powiniene je rozway, zanim zastosujesz aplikacj typu screen scraper.

332

Joomla!. Profesjonalne tworzenie stron WN 1W Problemem technicznym zwizanym z wykorzystaniem screen scrapera jest brak standardowego API, ktre umoliwia dostp do danych. W praktyce oznacza to, e kada zmiana na stronie zewntrznej moe spowodowa, e Twj program przestanie dziaa, poniewa zakada, e dane pojawi si w okrelonym formacie. W przeciwiestwie do czowieka, ktry jest w stanie odczyta informacje poprawnie, niezalenie od tego, czy wywietlono je w trzech, czy czterech kolumnach, program musi kierowa si cisymi reguami przy zbieraniu informacji. Z tego powodu screen scraper moe dzisiaj dziaa bezbdnie, a jutro nie dziaa wcale. Zastosowanie aplikacji tego typu wymaga cigego nadzoru. Kolejny aspekt techniczny zwizany jest z dziaaniami dcymi do zablokowania scrapera. Niektre organizacje aktywnie zwalczaj aplikacje tego typu, poniewa pobieraj informacje, marnotrawic cze internetowe i inne zasoby. Dodatkowo ich zastosowanie eliminuje potrzeb odwiedzenia strony, na ktrej pojawiy si materiay, zapobiegajc np. wywietleniu reklam, ktre s rdem zysku dla waciciela. Biorc pod uwag problemy prawne, moe si okaza, e zwielokrotnianie informacji ze zdalnej strony na Twojej witrynie jest nielegalne, chocia informacje s publicznie dostpne. Dziaa tutaj ta sama zasada, jak przy kopiowaniu artykuw i twierdzeniu, e jest si ich autorem to plagiat. Dla materiaw dostpnych w sieci kwestie zwizane z prawem autorskim s bardzo niejasne. Niektre strony s kompilacj informacji z innych rde, co utrudnia ustalenie oryginalnego rda. Ponowna publikacja w zmienionym formacie dodatkowo utrudnia cay proces. Dodatkowym problemem natury prawnej mog by warunki korzystania z danej strony. Google na przykad zabrania korzystania z aplikacji typu screen scraper, o czym pisze w dokumencie Warunki korzystania z serwisw spki Google". Mimo e bardzo atwo mona pobra informacje udostpniane w Google, jest to dziaanie nielegalne. Chocia moesz by w stanie pobra informacje i opublikowa je na swojej witrynie bez konsekwencji prawnych, moe by to dziaanie nieetyczne. Bez adnych wtpliwoci program, ktry automatycznie pobiera dane z danego serwera WWW, zuywa jego zasoby. Mona take zaoy, e waciciel tej strony nie zamierza opublikowa informacji, aby byy one dostpne dla programu, a nastpnie ponownie wykorzystane w nieznanym celu. Obok tych niejednoznacznych sytuacji istnieje sporo zastosowa, dla ktrych screen scraping jest szalenie uyteczn technik. Wiele rzdowych stron WWW zawiera informacje, ktre s dostpne za darmo i do dowolnych zastosowa. Ich powszechno finansowana jest z pienidzy podatnikw (np. komunikaty ministerstwa zdrowia). Czsto informacje te umieszczane s w trudno dostpnych miejscach lub s podane w tak niejasnej formie, e ponowna publikacja w zmienionym formacie moe by zaklasyfikowana jako suca dobru publicznemu. Pamitaj, e nawet publiczne bazy danych zawieraj czasem ostrzeenia przed automatycznym pobieraniem danych. Przykadowo Warunki korzystania z usug Google zawieraj poniszy fragment, ktry wyklucza nieautoryzowane zastosowanie screen scrapera: Uytkownik zgadza si nie uzyskiwa dostpu do usug Google inaczej ni za porednictwem interfejsu oferowanego przez Google w celu uzyskiwania dostpu do usug Google z wyjtkiem przypadkw wyranie dozwolonych w osobnej umowie na pimie.

Rozdzia 12. czenie z zasobami zewntrznymi

333

Chocia opisana w tym rozdziale technologia moe suy do pobierania informacji praktycznie z dowolnych stron, czyli take z tych, ktre tego zabraniaj, powiniene szanowa wol ich wacicieli i nie stosowa aplikacji typu screen scraper w takich wypadkach.

odstawowy kod rdowy komponentu


Aby skonstruowa screen scrapera, ktry dziaa efektywnie w roli middleware'a, projekt komponentu musi uwzgldnia cztery zadania: Otrzyma danie lub zapytanie od uytkownika Najczciej zapytanie wprowadzane jest przez uytkownika w pole formularza HTML, wywietlonego przez komponent. Uytkownik przesya danie do komponentu, klikajc przycisk Submit po zakoczeniu wprowadzania danych. Pobra dane z zewntrznej strony To zadanie jest kluczowym punktem programu, jest to typowy element scrapera. Do pobrania danych w formacie HTML zostanie wykorzystana biblioteka PHP do obsugi gniazd sieciowych. Przetworzy pobrane dane Dziki potdze wyrae regularnych mona atwo przetworzy ogromne iloci danych tekstowych. Sformatowa uzyskane informacje i zwr je do uytkownika W przypadku systemu Joomla! mona zastosowa jedn z kilku rnych metod, ktre wypeniaj to zadanie. Czsto najlepsz metod jest zapisanie danych w formacie X M L i wykorzystanie dokumentu XSLT, ktry posuy do formatowania. Aby nie komplikowa niepotrzebnie przykadu, przedstawiony komponent wywietli dane w postaci tabeli HTML.

Po wyszczeglnieniu najwaniejszych punktw komponentu moemy przej do fazy konstrukcji, aby uzyska efekt przedstawiony na rysunku 12.18. Rysunek 12.18. Screen Scraper wywietli na stronie sformatowane informacje oobrane z zewntrznego rda

Oto wyniki Twojego zapytania


Zapytanie Hemingway

i 1. Hemingway
Category: book By: Lynn, Kenneth Schuyler Published: 1987 Language: English Details Check Availability

]
mmJ>

2. 2, Hemingway
Category: book By. McDowell, Nicholas Published: 1989 Series. Life and works Language. English Check Availability i

3. 3. Hemingway in his own country


Category: book

334

Joomla!. Profesjonalne tworzenie stron WN 1W

Plik deskryptora
Plik deskryptora w tym przypadku jest prymitywny, suy wycznie do zarejestrowania komponentu w systemie. Wprowad poniszy kod w edytorze tekstu i zapisz go pod nazw comscrape.xml:
<?xml version="1.0" encoding="utf-8"?> type="component"> install version="1.5.0" <name>Scrape</name> <author>Dan Rahmel</author> <creationDate>July 2007</creationDate> <copyright>(C) 2007 Dan Rahmel. Wszystkie prawa zastrzeone.</copyright> <authorEmail>admin@joomlajumpstart.org</authorEmai1> <authorllrl >www.jooml a jumpstart. org</authorUrl > <versi on>l.0.0</versi on> <description>Pobiera warto pola z formularza, wykonuje zapytanie na zdalnej stronie i zwraca odczytane <fi les> <filename </files> <admini stration> <menu>Scrape</menu> <fi les> <fi lename </files> </admini stration> <params> <param name="url" type="text" default".gov" label="Strona zewntrzna" description="Adres strony, z ktrej zostan pobrane informacje." /> </params> </i nstal1> component="com_scrape">scrape.php</filename> component="com_scrape">scrape.php</filename> informacje.</description>

Kod komponentu Scraper


Zadaniem komponentu jest wyszukiwanie na zewntrznym portalu ksiek, ktrych tytu zawiera podan przez odwiedzajcego fraz. Z pobranych danych zostanie usunity kod HTML, a uzyskane informacje, po ponownym sformatowaniu, bd przesiane do przegldarki uytkownika odwiedzajcego Twoj stron. Wprowad poniszy kod i zapisz go pod nazw\scrape.php\
<?php /** * @version $Id: scrape.php 5203 2007-06-15 02:45:14Z DanR $ * @copyright Copyright (C) 2007 Dart Rahmel. Wszystkie prawa zastrzeone. * @package ScreenScrape * Pobiera warto pola formularza, wyszukuje na stronie zewntrznej odpowiednie * i zwraca sformatowany wynik */ // Zablokuj definedt bezporedni dostp 'Brak dostpu' )

informacje

'_JEXEC' ) or die(

Rozdzia 12. czenie z zasobami zewntrznymi


// Sprawd warto parametru task i uruchom waciw funkcj
switch( JRequest::getVar( case 'query': doExecuteQueryt); break; default: displayQueryEntryO; break; 'task' )) {

335

// Przetwrz dane przestane w formularzu


function doExecuteQueryt) {

// Pobierz warto pola query


SfldQuery = JRequest::getVar('query') :

// Usu wszystko, co mogoby by kodem HTML itp.


SfldQuery = preg replace("/f^a-zA-ZO-9 .?!$()V\"]/", "", SfldQuery): //" SmyData = doScrapeiSfldQuery); echo "<hl>0to wyniki Twojego zapytania</hl>"; echo "<p>Zapytanie: " . SfldQuery . "<p>"; echo "<hr />"; echo SmyData; echo "<a href=index.php?option=com_scrape>" . "Wr do Scrape</a>";

function doScrape(SqueryStr) { Smyllrl = "www.chipublib.org"; SmyPath = "/search/results/terms/" . SqueryStr . "/";

SmyGet = "": SmyAgent = "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1:" " en-US: rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n"; SmyApp = "Content-Type: appl ication/x-www-form-urlencoded"; Sfp = fsockopen(SmyUrl. 80. SerrNum. Serrstr. 30): if (!Sfp) { return "Bd #". SerrNum . "przy pobieraniu strony.<br />\n"; } else { Sout = "GET " . SmyPath . " HTTP/1.0\r\n": Sout .= "Host: ". SmyUrl . "\r\n"; Sout .= SmyAgent . SmyApp . "\r\n"; Sout .= "Connection: Close\r\n\r\n"; fwrite($fp, Sout); while (!feof($fp)) { SmyGet .= fgets(Sfp, 128); } fclose(Sfp); Spattern = "/<ol class=\"result\">(,*)<\/ol>/s": preg_match(Spattern. SmyGet. Smatches): return SmatchesEO]:

// Wywietl formularz
function displayQueryEntryO { ?> <hl class="contentheading">Formularz zapytania</hl>

336

Joomla!. Profesjonalne tworzenie stron WN 1W


<form id="forml" name="forml" method="post" acti on="i ndex.php?opti on=com_scrape&task=query "> <p>Wprowad poszukiwany tytu:<br /> <textarea name="query" cols="60" rows="l" </p> <p> id="query"></textarea>

<input type="submit" name="Submit" value="Wywietl wyniki" /> </p> </form> <?php } ?>

Umie oba pliki w archiwum o nazwie com_scrape.zip i zainstaluj komponent w systemie Joomla!. Zadaniem tego kodu jest po prostu wycicie fragmentu zawierajcego wyniki i wstawienie go na Twojej stronie. W przypadku zmiany strony musisz dopasowa wyraenie regularne przekazywane funkcji preg_match(), aby pobierany by waciwy fragment kodu HTML.

Komponent Joomlamap
Google udostpnia darmow usug, ktra pozwala webmasterom wstawi na swoich stronach zdjcie satelitarne lub map (lub oba elementy jednoczenie) danej okolicy. Poniewa mapa pobierana jest z serwera Google (informuje o tym stosowny komunikat), zawiera odpowiednie znaki wodne, ale take dodatkowe dane. Jest to rekompensata dla Google za to, e usuga jest darmowa. Chocia dostpny jest ju komponent, ktry czy API Map Google z systemem Joomla!, samodzielna implementacja takiego rozszerzenia ma wysok warto dydaktyczn, pozwala Ci zrozumie, jak funkcjonuje komunikacja ze zdalnym API. Interfejs komponentu pozwoli uytkownikowi wprowadzi adres w pole tekstowe, jak przedstawiono to na rysunku 12.19. Rysunek 12.19. Wprowad adres w pole adresu komponentu Joomlamap

Formularz wyszukiwania mapy


Wprowad adres Gryf ino|

ViVswlGt lokalizacj

Gdy uytkownik kliknie przycisk Wywietl lokalizacj, komponent zostanie przeadowany, tym razem warto parametru task bdzie ustawiona na goto. Komponent odczyta warto z formularza, za pomoc procedury geokodowania przetumaczy podany adres na dugo oraz szeroko geograficzn i wywoa API Map Google w celu wywietlenia odpowiedniej mapy, jak przedstawiono to na rysunku 12.20.

API Map Google


Google udostpnia bardzo dobre i darmowe API, za pomoc ktrego Twj program moe pobiera mapy z serwerw Google. Kompletn list funkcji API (wraz z przykadowym kodem) znajdziesz na: www.google.com/apis/maps

Rozdzia 12. czenie z zasobami zewntrznymi ysunek 12.20. Component oomlamap przedstawiajcy sidok satelitarny siatk ulic

337

Twoja lokalizacja
Lokalizacja Gryfino

El

]
i

C i i O L ^ ^ a r t o mapy 2008 PPWK Tete Atlas * Wr do Joomlamap Copyright 2009 Open Source Matters Wszelkie prawa zastrzeone. Joornlal jest wolnym oprogramowaniem dostpnym na licencii GNU GPL.

Aplikacja internetowa Mapy Google tworzy obiekt map, ktry mona manipulowa za pomoc kodu JavaScriptu, aby ustawi takie parametry, jak lokalizacja, zblienie, typ widoku (widok ulic, satelitarny, hybrydowy) i inne.

ejestracja w systemie
Kada strona, ktra korzysta z API Map Google, musi mie przypisany unikatowy klucz. Jeli klucz wysany wraz z daniem mapy bdzie niewaciwy, mapa nie zostanie zwrcona. Oznacza to, e musisz mie oddzielny klucz dla serwera testowego i serwera produkcyjnego. Dodatkowo system Google rozrnia wielko liter w adresie, dlatego klucz przypisany stronie www.przyklad.com/mapa nie zadziaa na stronie www.przyklad.com/Mapa. Aby zdoby klucz, musisz zarejestrowa si na poniszej stronie: www.google, com/apis/maps/signup.html

lik deskryptora
Plik deskryptora w tym przypadku jest prymitywny, suy wycznie do zarejestrowania komponentu w systemie. Wprowad poniszy kod w edytorze tekstu i zapisz go pod nazw com Joomlamap.xml:
<?xml version="1.0" encoding="utf-8"?> <instal1 version="1.5.0" type="component"> <name>Joomlamap</name> <author>Dan Rahmel</author> <creationDate>July 2007</creationDate> <copyright>(C) 2007 Dan Rahmel. Wszystkie prawa zastrzeone.</copyright> <authorEmai1>admi n@joomlajumpstart.org</authorEmai1> <authorUrl>www. joomlajumpstart .org</authorllrl> <versi on>l.0.0</versi on> <description>Komponent wywietla map odpowiadajc adresowi wprowadzonemu w pole tekstowe</descri pti on> <files> <fi1ename </files> component="com_joomlamap">joomlamap.php</fi1ename>

338

Joomla!. Profesjonalne tworzenie stron WN 1W


<admini stration> <menu>Joomlamap</menu> <files> <fi 1 enarne component="com_jooml amap">jooml amap. php</fi 1 ename> </fi 1es> </admini stration> <params> <param name="key" type="text" default"" label="Klucz Map Google" description="Wprowad klucz zarejestrowany dla tej strony." /> </params> </i nstal1>

Kod komponentu Joomlamap


Zadaniem komponentu jest wywietlenie na stronie dwch elementw: skryptu wywietlajcego i znacznika rezerwujcego miejsce dla mapy. Wprowad poniszy kod w edytorze tekstu i zapisz go pod nazwajoomlamap.php-.
/**

<?php * @version $Id: joomlamap.php 5203 2007-06-15 02:45:14Z DanR $ * @copyright Copyright (C) 2007 Dan Rahmel. Wszystkie prawa zastrzeone. * @package Joomlamap * Komponent czcy z usug Map Google, wywietla map dla wprowadzonego */

adresu

// Zablokuj defined( // Sprawd

bezporedni

dostp

'_JEXEC' ) or die( Brak dostpu' ): warto parametru task i uruchom 'task' )) { waciw funkcj

switch( JRequest::getVar( case 'goto': gotoLocation(); break: default:

displayAddressEntryO; break;

// Przetwrz

dane przesane

w {

formularzu

function gotoLocation()

SuserKey = $params->get('key', 0); // Pobierz warto poa location z formularza IfldLocation = JRequest::getVar('location') : // Usu wszystko, co mogoby by kodem HTML itp. $fldQuery = preg_replace("/[^a-zA-Z0-9 //" echo "<hl>Twoja ?> lokalizacja</hl>": . "<p>": echo "<p>Lokalizacja: " . SfldLocation

.?!$()\'\"]/", "", SfldQuery)-

<script src="http://maps.google.com/maps?fi1e=api&amp:v=2&amp;key=" iuserKey . " type="text/javascript"></script> <scri pt type="text/javascript">

Rozdzia 12. czenie z zasobami zewntrznymi


//<![CDATA[ var map = nul 1: var geocoder = nul 1: function l o a d O { if (GBrowserlsCompatibleO) { map = new GMap2(document.getElementById("map")); map.setCenter(new GLatLng(37.4419. -122.1419). 13): geocoder = new GC1ientGeocoder():

339

function showAddresstaddress) { if (geocoder) { geocoder,getLatLng( address. function(point) { if (!point) { alertiaddress + " not found"): } else { map.setCenter(point. 13); var marker = new GMarker(point); map.addOverlay(marker); marker.openlnfoWindowHtml(address); map.addControl (new GSmalIZoomControl O):

);

i //]]> loadO; showAddress('<?php echo ifldLocation; </script> <?php echo "<a href=index.php?option=com_joomlamap>" . "Wr do Joomlamap</a>": ?>'):

}
// Wywietl formularz do wprowadzania adresu
function displayAddressEntryO { ?> <hl class="contentheading">Formularz wyszukiwania mapy</hl> <form id="forml" name="forml" method="post" acti on="i ndex.php?opti on=com_joomlamap&task=goto"> <p>Wprowad adres:<br /> <textarea name="location" cols="60" rows="l" </p> <p> <input type="submit" name="Submit" value="Wywietl lokalizacj" /> id="location"></textarea>

</p>
</form> <?php } ?>

340

Joomla!. Profesjonalne tworzenie stron WN 1W

Utwrz archiwum zawierajce oba pliki pod nazw comjoomlamap.zip i zainstaluj w systemie Joomla!, korzystajc z opcji Rozszerzenia/Instalator. Po przejciu do ustawie komponentu moesz ustawi klucz dostpu do Map Google.

Wyszukiwanie adresw z zastosowaniem XML


USPS (U.S. Postal Service) udostpnia darmow usug pozwalajc na zautomatyzowane pobieranie danych adresowych 1 . Informacje zwracane s w formacie X M L i zawieraj adres oraz kod ZIP. Konstrukcja rozszerzenia, ktre czy si z aplikacj tego typu, jest doskonaym przykadem interakcji z zastosowaniem protokou XML. Zanim rozpoczniesz, musisz zaoy konto na stronie USPS.com, ID uytkownika. Rejestracja odbywa si pod adresem: https://secure.shippingapis.com/registration/ Formularz rejestracyjny wymaga wprowadzenia podstawowych informacji, co przedstawiono na rysunku 12.21. Po wypenieniu i przesaniu formularza otrzymasz e-mail, ktrzy bdzie zawiera Twoje ID uytkownika, niezbdne do korzystania z usugi. Rysunek 12.21. Formularz rejestracyjny na stronie USPS wymaga wprowadzenia danych osobowych Kim POSTAL SERVICE UNITED STATES

aby uzyska unikatowe

Registration for USPS W e b Tools


Please fill in the followiiifj infoi motion (^Required fields) * First Name * Last Name * Company Name * Address 1 Address 2 * City * State Select One Urbanization * ZIP Code * Country UNITED STATES * Email Address * Business Phone What is the Web site address (URL) of the site that will be hosting the USPS Web Tools? How will you be using the USPS Web Tools? Exclusively on my Web site ((Puerto Rico Only)

W wiadomoci e-mailowej, ktr otrzymasz, znajdzie si take adres serwera testowego. Adres ten moe przyj posta http://testing.shippingapis.com/ShippingAPlTest.dU lub https://secure.shippingapis.com/ShippingAPITest.dll (adresy mog si rni). Intencj USPS jest dopuszczanie do gwnej bazy wycznie dokadnie przetestowanych aplikacji. Tym sposobem oszczdzane s zasoby USPS, ktre zostayby zmarnowane, jeli diagnostyka byaby przeprowadzana z uyciem gwnego serwera.
1

Narzdzie USPS pozwala wyszukiwa adresy na terenie Stanw Zjednoczonych, dane na temat pastw europejskich s niedostpneprzyp. tum.

Rozdzia 12. czenie z zasobami zewntrznymi

341

amodzielne testy
Jeli dysponujesz ju ID uytkownika, moesz samodzielnie sprawdzi dziaanie serwera i przekona si, czy Twoja przegldarka wywietli pobrane dane. Poniej znajduje si (wzity z podrcznika na stronie USPS) adres sucy do testw:
http: //NAZHASERWERA/ShippingAPITest. dl 1 ?API=Z1pCodeLookup&XML= <Zi pCodeLookupRequest%20USERID="IDUZYTKOUNIKA"> <Address ID="0"><Addressl></Addressl> <Address2>6406 Ivy Lane</Address2> <City>Greenbelt</City><State>MD</State> </Address></ZipCodeLookupRequest>

Adres zosta zapisany w kilku wierszach, aby atwiej byo go odczyta, pamitaj jednak, e przy wprowadzaniu musisz poda cay cig jako jedn lini. Nie zapomnij take wstawi w miejsce NAZWASERWERA i ID U YTKO WNIKA informacje, ktre otrzymae w wiadomoci potwierdzajcej rejestracj. Po wprowadzeniu adresu i naciniciu klawisza Enter Twoja przegldarka powinna pobra informacje i wywietli j e w postaci drzewa X M L (zobacz rysunek 12.22). irsunek 12.22. obrane lformacje zostan ywietlone ' przegldarce ' postaci rzewa XML
<?xml version="1.0" ?> <ZipCodeLookupResponse> Address ID="0"> <Address2>6406 IVY LIM</Address2> <City>GREENBELT</City> <State>MD</State> <Zip4>HBk/Zip4> </Address> </ZipCodeLookupResponse>

W przypadku bdu pobierania informacji upewnij si, czy wprowadzie poprawn nazw serwera i ID uytkownika. Jeli bd nadal wystpuje, poszukaj informacji w podrczniku na stronie USPS, poniewa format adresu mg si zmieni. Zauwa, e zwrcony kod ZIP zosta zamaskowany, poniewa pochodzi z serwera testowego penego dostpu do systemu waciwe informacje pobierane s z gwnej bazy danych po tym, jak aktywujesz w peni swoje konto'.

nplementacja strony testowej w PHP


Po upewnieniu si, e dysponujesz poprawnym ID uytkownika, nadesza pora na stworzenie prbnego kodu PHP, a nastpnie przeksztacenie go we waciwe rozszerzenie. Zawsze zalecam ten krok poredni w przypadku implementacji zewntrznego interfejsu. Joomla! to zoony system, dlatego duo prociej jest sprawdzi dziaanie poczenia poza systemem. Do poprawnego dziaania rozszerzenia wymagane jest PHP 5, zainstalowane na serwerze. PHP 5 ma ustandaryzowane funkcje do odczytywania i przetwarzania formatu XML. S one niezbdne do poprawnej obsugi systemu USPS. Jeli Twoja strona dziaa na serwerze z PHP 4, moesz zainstalowa obsug XML w postaci moduu PHP.

E-mail wysyany po rejestracji w systemie zawiera dokadne informacje, jakie kroki naley podj, aby uzyska dostp do gwnej bazy danych przyp. tum.

342

Joomla!. Profesjonalne tworzenie stron WN 1W Wprowad poniszy kod i zapisz go pod nazw ziptest.php w gwnym katalogu serwera testowego:
<html><meta http-equiv="Content-Type" content="text/html; <hl>Test Wyszukiwarki kodw ZIP</hl> <?php $myWTID= "MOJE ID": SmyAddress = "6406 Ivy Lane": SmyCity = "Greenbelt": SmyState = "MD": SmyUrl = "http://testing.shippingapis.com/ShippingAPITest.dll?" "API=ZipCodeLookup&XML=<ZipCodeLookupRequest "<Address ID='0'><Addressl></Addressl>" . "<Address2>" . SmyAddress . "</Address2>" . . SmyState . "</State>" . "<City>" . SmyCity . "</City><State>" "</Address></Zi pCodeLookupRequest>": echo SmyUrl: echo "<hr />"; try { @Sdoc = DOMDocument::load($myUrl); } catch(DOMException $e) { echo '<p>': printr(Se): echo '</p>': USERID='" . charset=utf-8"><body>

. SmyWTID .'">" .

// Wywietl pobrane dane na stronie


echo html special chars($doc->saveXML()): echo "<hr />"; Sparams = Sdoc->getElementsByTagName('Address');

foreach (Sparams as Sparam) { echo "ID=" . Sparam ->getAttribute('ID').'<br>'; echo "<hr />"; Sparams = Sdoc->getElementsByTagName(* Zi p5'): foreach (Sparams as Sparam) { echo "Zip 5=". Sparam ->textContent .'<br>': // getAttrlbuteC'ID')

Sparams =

Sdoc->getElementsByTagName('Zip4'):

foreach (Sparams as Sparam) { echo "Zip 4=". Sparam ->textContent ,'<br>': // getAttributet'ID') } ?> <h2>Gotowe.</h2> </body> </html>

Rozdzia 12. czenie z zasobami zewntrznymi

343

Nie zapomnij przypisa zmiennej $myWTID waciwego ID uytkownika. Jeli otworzysz ten plik w przegldarce 3 , powinna zosta wywietlona strona podobna do tej, ktra jest przedstawiona na rysunku 12.23. Jeli prba zakoczya si powodzeniem, w dolnej czci powiniene znale odpowiednie wartoci Zip 5 i Zip 4. ysunek 12.23. ikrypt ziptest.php 'obiera z serwera ISPS kod ZIP 'la ustalonego dresu

Test Wyszukiwarki kodw ZIP


http//testing.shlppifigapis com/SbippingAPITest dU?./LPI=ZipCodeLookup&XML= 6406 Ivy LaneGreenbeltMD c?xral version'10"?> <ZipCodeLookupResponse><AddressIB=''0''><Address2>6406 IVY LN</Address2> <City>GREENBELT</Crty><Statc>MD</State><Zip53^BH</Zip5><Zip4>1440</Zip4></Address> </ZipCodeLookupResponse> ID=0 Zip Zip 4=1440

Gotowe. Jeli test zakoczy si niepowodzeniem, to dziki komunikatom na ekranie powiniene wiedzie w przyblieniu, gdzie wystpuje problem. Test rozpoczyna si od wywietlenia adresu serwera wraz z przesanym daniem. W kolejnym kroku pojawia si pena odpowied serwera (format XML), a nastpnie wyniki przeszukiwania drzewa XML trzy wartoci. W przypadku bdu moesz porwna otrzymany wydruk z poprawnym, zilustrowanym na rysunku 12.23, aby znale rnice.

lik deskryptora
Plik deskryptora jest bardzo prosty i suy do instalacji komponentu w systemie. Wprowad poniszy kod w edytorze tekstu i zapisz go pod nazw comzipfinder.xmt
<?xml version="1.0" encoding="utf-8"?> <install version="1.5.0" type="component"> <name>zi pfi nder</name> <author>Dan Rahmel</author> <creationDate>July 2007</creationDate> <copyright>(C) 2007 Dan Rahmel. Wszystkie prawa zastrzeone.</copyright> <authorEmail>admi n@joomlajumpstart.org</authorEmai1 > <authorllrl>www. jooml ajumpstart. org</authorllrl> <version>1.0.0</version> <description>Pobiera dane w formacie XML z wykorzystaniem parametru.</description> <fi les> <fi 1ename component="com_zi pfi nder">zi pfi nder.php</fi 1ename> </files> <administration> <menu>Zip Finder</menu> <files> <fi1ename component="com_zi pfi nder">zi pfi nder.php</fi 1ename> </files> </administration>

Plik naley uruchomi za porednictwem serwera WWW, wpisujc przykadowo http://loca!host/ziptest.php przyp. tum.

344

Joomla!. Profesjonalne tworzenie stron WN 1W


<params> <param name="accessid" type="text" default="" label="ID uytkownika USPS" description="Wprowad ID uytkownika, aby skorzysta z usugi UPSP." /> </params> </install>

Kod komponentu
Komponent Zipfinder wywietli formularz pozwalajcy wprowadzi adres, miasto i stan. Wartoci tych pl umieszczane s w daniu wysyanym do serwera USPS, ktry zwraca wyniki w formacie XML. Wprowad poniszy kod w edytorze tekstu i zapisz go pod nazw\zipfinder.php\
<?php /** * @version SId: zipfinder.php 5203 2007-06-15 02:45:141 DanR $ * @copyright Copyright (C) 2007 Dan Rahmet. AU rights reserved. * @package ZipFinder * Odczytuje warto parametru, nastpnie wysya danie do zdalnego * pobiera i wywietla sformatowany wynik */ // zablokuj defined( bezporedni dostp 'Brak dostpu' ); funkcj

serwera,

'_JEXEC' ) or dieC

// W zalenoci od parametru task wywoaj waciw switch( JRequest::getVar( 'task' j) { case 'query': doExecuteQuery(); break: default: displayQueryEntryO: break:

// Przetwrz dane pobrane z formularza function doExecuteQuery() { // Pobierz przesiane dane ifldAddress = JRequest::getVar('address') : ifldCity = JRequest::getVar('city') ; ifldState = JRequest::getVar('state') : // Usu ponisze 3 linie po zakoczeniu testw ifldAddress = "6406 Ivy Lane"; ifldCity = "Greenbelt": ifldState = "MD"; // Usu wszystkie niepodane znaki ifldAddress = preg_replace("/ra-zA-Z0-9 .?!i()\'\"]/". "", ifldAddress); ifldCity = preg_replace("/ra-zA-Z0-9 .?!$()\'\"]/". "". ifldCity); ifldState = preg_replace("/[ A a-zA-Z0-9 .?!i()\'\"]/". "". ifldState): imyData = getZIp($fldAddress. ifldCity. ifldState); echo "<hl>Znaleziony kod ZIP</hl>": echo "<p>Dla adresu: " . ifldAddress . "," . ifldCity . "," . ifldState . "</p> echo "<h2>Zip+4: " . imyData . "</h2>"; echo "<a href=index.php?option=com_zipfinder>" . "Powrt do wyszukiwarki</a>";

Rozdzia 12. czenie z zasobami zewntrznymi


function getZip(SmyAddress, SmyCity, SmyState) { SmyWTID= "MYID": SmyUrl = "http://testing.shippingapis.com/ShippingAPITest.dll?" "API=ZipCodeLookup&XML=<ZipCodeLookupRequest USERID='" "<Address ID='0'><Addressl></Addressl>" . "<Address2>" . SmyAddress . "</Address2>" . . SmyState . "</State>" . "<City>" . SmyCity . "</City><State>" "</Address></Zi pCodelookupRequest>"; try { @Sdoc = DOMDocument::load(SmyUrl): } catch(DOMException Se) { echo '<p>' . print_r(Se) . '</p>'; .

345

. SmyWTID .'">" .

}
Szip5 = ""; Szip4 = "": Sparams = Sdoc->getElementsByTagName('Zi p5'); foreach (Sparams as Sparam) { if (strlen(Szip5) > 0) Szip5 .= ". ": Szip5 .= Sparam ->textContent:

}
Sparams = Sdoc->getElementsByTagName('Zi p4'): foreach (Sparams as Sparam) { if (strlen(Szip4) > 0) Szip4 .= ". "; Szip4 .= Sparam ->textContent :

}
return Szip5 . "-" . Szip4;

}
// Wywietl formularz wyszukiwania
function displayQueryEntry() { ?> <hl class="contentheading">Formularz wyszukiwania kodu ZIP</hl> <form id="forml" name="forml" method="post" acti on="i ndex.php?opti on=com_zi pfi nder&task=query"> <p>Wprowad adres: <INPUT type="text" name="address" size="80" ><BR> <p>Wprowad miasto: <INPUT type="text" name="city" size="30" ><BR> <p>Wprowad skrcon nazw stanu: <INPUT type="text" name="state" size="2" ><BR> </p> <p> <input type="submit" name="Submit" value="Znajd kod ZIP" /> </p> </form> <?php } ?>

Utwrz archiwum zawierajce oba pliki i korzystajc z opcji Rozszerzenia/Instalator, w panelu administratora, zainstaluj komponent w systemie. Uruchomienie komponentu spowoduje wywietlenie formularza, ktry naley wypeni, wprowadzajc poprawny

346

Joomla!. Profesjonalne tworzenie stron WN 1W

adres. W zaprezentowanej wersji adres jest ignorowany, zamiast tego wykorzystywany jest adres wprowadzony na stae w kodzie rdowym, a danie wysyane jest do serwera testowego. Otrzymany adres ZIP wywietlany jest na stronie, jak to pokazano na rysunku 12.24. Rysunek 12.24. Komponent Zipfinder wywietla kod ZIP dla przykadowego adresu

Znaleziony kod ZIP


Dla adresu: 6406 Ivy Lane,Gieenbelt,MD

Zi p+4 : H K i i i i S l l
Powrt do wyszukiwarki

Po przeprowadzeniu penej aktywacji i uzyskaniu dostpu do gwnego serwera USPS powiniene dopasowa adres serwera, a take usun trzy linie kodu narzucajce wyszukiwany adres.

Podsumowanie
Dostp do zasobw zewntrznych z poziomu strony Joomla! rozszerza moliwe zastosowania systemu. W tym rozdziale opisano sposoby interakcji z sieciami zewntrznymi, a w szczeglnoci: Pobieranie zewntrznych materiaw przez kanay RSS i za pomoc rozszerzenia Auto Articles 3000. Stosowanie kanaw RSS wraz z analiz uytego formatu. Publikowanie materiaw na stronie w postaci kanaw RSS lub Atom, dostpnych dla odwiedzajcych. Implementowanie obsugi programw partnerskich Google i Amazon w celu zarabiania na prowadzeniu strony. Adaptowanie rozszerzenia Skylark EDI w celu umoliwienia komunikacji zgodnej z EDI ze stron Joomla! w roli serwera. Programowanie wasnego rozszerzenia typu screen scraper, ktre pobiera dane tekstowe z zewntrznej strony WWW. Wykorzystywanie internetowego API (takiego jak AP1 Map Google) w kodzie komponentu po to, aby doda funkcjonalno usug zewntrznych na stronie Joomla!. Tworzenie komponentu wysyajcego danie w formacie XML do zewntrznego serwera (w tym przypadku jest to USPS). Odpowied, w formacie XML, jest pobierana, przetwarzana, a odczytane informacje wywietlane s na stronie.

Komunikacja z zasobami zewntrznymi moe rozszerzy zakres funkcji Twojej witryny, co moe przeoy si na wzrost popularnoci. Oba te czynniki wpywaj na pozycj Twojej strony na stronach wynikw rnych wyszukiwarek internetowych. W rozdziale 13. opisano kilka innych rozwiza, ktre pomog Ci zoptymalizowa stron pod ktem jak najlepszej pozycji w wynikach wyszukiwania.

13
Pozycjonowanie i marketing w wyszukiwarkach internetowych
Nie ma wikszego sensu utrzymywa strony, ktrej potencjalni uytkownicy nie mog znale. Sprawienie, by bya zauwaalna w wyszukiwarkach internetowych, jest jednym z najwaniejszych aspektw skutecznego zarzdzania ni. Techniki SEO (Search Engine Optimization) sprawi, e Twoja strona bdzie znajdowa si wyej w rankingach wyszukiwarek internetowych. W tym rozdziale opisano rne aspekty pozycjonowania stron zwizane bezporednio z Joomla!. System Joomla! zawiera kilka funkcji, ktre pozytywnie wpywaj na ranking. Wbudowane funkcje uatwiaj robotom internetowym indeksowanie strony, co przekada si na lepsze odzwierciedlenie jej zawartoci. Istnieje take grupa oglnych technik, ktre o ile stosowane s konsekwentnie, wspomagaj pozycjonowanie. W tym rozdziale przedstawiono pokrtce take aspekty marketingu w wyszukiwarkach internetowych (SEM Search Engine Marketing), patnych reklam, ktre wpywaj na wzrost ruchu na Twojej stronie. Techniki SEM s bezporednio zwizane z SEO, jednak due, komercyjne organizacje zatrudniaj najczciej firmy od SEM (np. The Search Agency), ktre zajmuj si wszystkimi kwestiami zwizanymi z wyszukiwarkami internetowymi. Z drugiej strony, mae i niekomercyjne strony kad wikszy nacisk na SEO, ze wzgldu na niski (lub zerowy) koszt implementacji. Poniewa wikszo stron Joomla! jest redniej lub maej wielkoci, w rozdziale przedstawiono gwnie techniki SEO. Pamitaj, e techniki zwizane z pozycjonowaniem stron ulegaj cigym zmianom. Dziaania, ktre dzisiaj winduj ranking strony, jutro mog znaczco straci na znaczeniu. Jednak adna z opisanych w tym rozdziale technik nie wpynie negatywnie na pozycj strony. Dlatego nawet jeli w przyszoci strac one na znaczeniu, cigle warto bdzie je stosowa.

348

Joomla!. Profesjonalne tworzenie stron WN 1W

Ustawienia Joomla!
Programici Joomla! zdaj sobie spraw ze znaczenia pozycjonowania strony. Dlatego system ten zawiera kilka usprawnie, ktre pozytywnie wpywaj na ranking. Jeli powicisz odrobin czasu na dostrojenie konfiguracji systemu, a nowe materiay bdziesz dodawa ze starannoci i dbaoci o szczegy, to korzystajc z wbudowanych funkcji Joomla!, wpyniesz na pozycj strony w wynikach wyszukiwania. Zmiana kilku globalnych opcji ma natychmiastowy wp Z tego powodu implementacja poytecznych funkcj w interfejsie administratora.

cznie kilku klikni

Proste adresy
Domylnie wszystkie odnoniki w ramach witryny Joomla! odwouj si do jednego pliku (,index.php), waciwa strona, menu lub artyku wybierane s za pomoc parametrw w acuchu dania. Przykadowo standardowy adres artykuu wyglda tak: http://www.przyklad.com/index.php?Itemid=27&option=com_content , Taka strategia jest bardzo mylca dla robota internetowego. Robot internetowy (program, ktry indeksuje strony WWW) nie rozpoznaje zbyt dobrze sensu parametrw podanych z acuchu dania. acuch dania z reguy suy do przechowywania parametrw ustawionych przez odwiedzajcego zwizanych z wywietlaniem pewnych treci. Przykadowy adres strony, ktra wykorzystuje acuch dania do tego celu, mgby wyglda tak: http://www.przykad, com ?userid=98239992107& viewsetting=A TVPDKIKXODER Robot internetowy nie powinien zapisywa wartoci tych parametrw. W ten sposb powstaje trudno w rozrnianiu, ktre parametry odnosz si do ustawie uytkownika, a ktre wpywaj na wybr prezentowanych materiaw. Z tego powodu parametry acucha dania s czsto ignorowane przez roboty internetowe, take domylna konfiguracja adresw w systemie Joomla! bardzo negatywnie wpywa na pozycj strony. Na szczcie istnieje rozwizanie tego problemu ustawienie Proste adresy, ktre mona znale na ekranie trzy opcje zwizane z prostymi adresami: Proste adresy, Korzystaj z modrewrite i Adresy z przyrostkiem. Jeli aktywujesz opcj Proste adresy, adres danego artykuu w systemie Joomla! bdzie przypomina poniszy: http://www.przyklad.com/index.php/tytid-artykidu Powyszy przykad dokadnie spenia wymagania, pozwalajc robotowi internetowemu poprawnie zaindeksowa stron WWW. Jest to nowa technika wprowadzona w Joomla! 1.5. Powyszy adres powoduje uruchomienie pliku index.php w nim znajduje si kod odczytujcy cay adres, na podstawie ktrego zwracana jest odpowiednia strona. Rozwizanie to dziaa zarwno w przypadku serwera Apache, jak i IIS.

Rozdzia 13. Pozycjonowanie i marketing w wyszukiwarkach internetowych fsunek 13.1. / Joomla ostpne s a ekranie onfiguracji ''iobainej trzy stawienia wizane prostymi dresami

349

Konfiguracja globalna

X
" " t - 1 " > > a :

*"

'S N. O Tk i i

.y*>y=k-

O t m l z c a d a wyszukiwarek pyaiaj l W O . T k , i Ni. O

,,,.. 0Tlk

Nar.ra v/itr-ny P o e s o a Joomla! rfsinl

Onl*w< Editor-TinyMCE2.0 o\nl Fowiwlifai* 2 V 0 w a o o c RS5 ,0 V idmi

Jedynym wymaganiem do poprawnego dziaania tej funkcji na serwerze Apache jest wczona (ustawienie On) dyrektywa AcceptPathlnfo. Wicej informacji na temat tej dyrektywy moesz znale na stronie dokumentacji Apache: http://httpd.apache.Org/docs/2.0/mod/core.html. Jeli powysza dyrektywa zostaa wyczona (niektrzy dostawcy usug internetowych wybieraj tak konfiguracj), pozostaje Ci aktywacja opcji Korzystaj z mod rewrite, ktra powoduje tworzenie odnonikw w postaci: http://www.przyklad.com/home/44-pierwszy-artykul-w-joomla W przeciwiestwie do poprzedniej opcji (wywoanie pliku index.php, ktry interpretuje przekazany adres) ustawienie Korzystaj z mod rewrite opiera si na funkcjonalnoci moduu serwera Apache o nazwie mod_rewrite. Jego dziaanie polega na tumaczeniu adresw, tzn. na podstawie regu zdefiniowanych w pliku .htaccess wywoywane s odpowiednie pliki. Do poprawnego dziaania tej funkcji niezbdna jest zmiana nazwy pliku htaccess.txt, ktry znajduje si w gwnym katalogu Joomla! na .htaccess. Jeli korzystasz z systemu Windows i sprbujesz przeprowadzi t operacj za p o m o c Eksploratora, zostanie wywietlony komunikat o bdzie. Rozwizaniem tego problemu jest uycie komendy ren z wiersza polece, ktra suy do zmiany nazwy pliku. Pamitaj, e odpowiednie opcje naley wczy, zanim zarejestrujesz stron w wyszukiwarkach internetowych. Jeli aktywujesz nowe funkcje po zaindeksowaniu strony (lub po tym, jak na innych stronach pojawiy si ju odnoniki do Twojej witryny), strona moe straci w rankingu, poniewa zaindeksowane wczeniej adresy nie s j u dostpne. Jeli dotychczas korzystae ze starszej wersji Joomla! z wczonym rozszerzeniem SEF, upewnij si, e po uaktualnieniu korzystasz z tego samego dodatku. Schemat tworzenia adresw w Joomla! 1.5 rni si pewnie od tego stosowanego przez stare rozszerzenie, dlatego wszystkie odnoniki wedug starego schematu spowoduj wystpienie bdu 404 strona nieznaleziona, co ma bardzo destrukcyjny wpyw na pozycj danej witryny. Jeli przenosisz materiay ze statycznej witryny do systemu Joomla!, a wczeniejsza wersja strony zostaa ju zarejestrowana przez roboty internetowe, wykorzystaj jedno z rozszerze do tworzenia prostych adresw (np. OpenSEF) zamiast wbudowanych funkcji Joomla!. Inne rozszerzenia pozwalaj Ci samodzielnie okreli, pod jakim adresem bd dostpne poszczeglne artykuy i kategorie. Moesz w ten sposb stworzy take taki zestaw regu dziki ktremu nowe adresy bd odpowiaday strukturze starej, statycznej wersji strony, a to z kolei sprawi, e cay proces konwersji bdzie niezauwaalny dla robotw internetowych.

350

Joomla!. Profesjonalne tworzenie stron WN 1W

Metadane
Jednym z najwaniejszych i niewidocznych aspektw SEO s odpowiednie metadane, czyli informacje o informacjach. W przypadku stron W W W metadane zawieraj opis artykuu, list sw kluczowych i informacje o stronie, ktre pozostaj niewidoczne dla odwiedzajcych, odczytywane s jednak przez roboty internetowe. Jeli otworzysz stron w edytorze tekstu, to w czci nagwkowej znajdziesz znaczniki przypominajce ponisze:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="description" content="Ministerstwo Sprawiedliwoci - urzd administracji powoany przez Prezesa Rady Ministrw w celu obsugi urzdujcego Ministra Sprawiedliwoci." /> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="keywords" content="Ministerstwo Sprawiedliwoci, wymiar sprawiedliwoci, sprawiedliwo, sdownictwo, sdy. Prokuratura Krajowa, prokuratura. Minister Sprawiedliwoci. Prokurator Generalny, Prokurator Krajowy, justice, judiciary, sd apelacyjny, sd okrgowy, sd rejonowy, prokuratura apelacyjna, prokuratura okrgowa, prokuratura rejonowa, zwalczanie przestpczoci, przestpczo, wiziennictwo, notariat, notariusze, adwokatura, adwokaci, komornicy, radcy prawni, rejestr zastaww, zastaw rejestrowy. Krajowy Rejestr Sdowy, Krajowy Rejestr Karny. Centralny Zarzd Suby Wiziennej, prawa ofiary" /> <meta name="ProgId" content="FrontPage.Editor.Document">

W kodzie HTML umieszczono znaczniki metadanych, ktre zawieraj informacje o danej stronie. Znacznik z atrybutem name ustawionym na description zawiera krtki opis strony. Znacznik z atrybutem name ustawionym keywords zawiera list sw kluczowych, ktre najlepiej odpowiadaj treci strony. Znaczniki z atrybutem name ustawionym na GENERATOR i ProgID zawieraj informacje o programie wykorzystanym do tworzenia strony (bardzo rzadko wykorzystywane przez roboty internetowe). Wszystkie te dane zapisywane s przez robota internetowego podczas indeksowania i wykorzystywane w rnym stopniu do wyliczenia pozycji danej strony.

Metadane dla caej strony


Metadane dla caej witryny mona ustawi na ekranie Konfiguracji globalnej. Ramka Metadane, przedstawiona na rysunku 13.2, pozwala ustawi warto pl description i keywords. Te informacje pojawiaj si na kadej stronie, ktra nie wywietla artykuu. Odpowiednie ustawienie tych danych jest wane, poniewa dostarcza oglnych informacji na temat caej strony. Rysunek 13.2. Ekran Konfiguracji Globalnej zawiera ramk z opcjami metadanych
Wt>HIOHKKif.f i 10 v

Opis

tttyt 1 y

Joomla ! - dynamiczny system portalowy i zarz,dz>i, c r . i c i .

system

'.t..., H . | . -. .-.- j o o m l a .

Polskie

Centrum

Joomla!

Tytuy i m t a b w e l l a,no, I M * ! * *

. O

Nfe

Tak

Me

Tak

Rozdzia 13. Pozycjonowanie i marketing w wyszukiwarkach internetowych

351

etadane artykuu
W systemie Joomla! kady artyku ma wasne metadane, ktre mona ustawi w panelu Metadane przy wprowadzaniu treci artykuu (zobacz rysunek 13.3). Dostpne pola to Opis (description), Sowa kluczowe (keywords), Roboty (robot) i Autor (author). Zostan one umieszczone w sekcji <head> wygenerowanego dokumentu HTML dla danego artykuu. tsunek 13.3. ariel Metadane, o prawej stronie dytora artykuw, moliwia prowadzenie pisu, sw luczowych, stawie robotw iternetowych informacji autorze
II

Opublikowane Strona startowa Kategoria

ID aitykuhi: Status

19 Opublikowane

Odsony 146 Wyczy Postawiony 13 razy l l t w o i z o n y poniedziaek, 09 padziernik 2006 07 4 Poprawiony niedziela, 04. listopad 2007 16:50 P a r a m e t r y : artyku P a r a m r y : ro; Metad systemu z i t r e c i Joomla 1 ruchu open soui

S Mes - v - Foi mat -

c f

t * ystem cj

t?

jood news! 3oomlal 1.5 s free, It Is released under an Open Source s v 2.0. H^d y o y I iri a mainstream. commercial alternative, >ur walet arK! to a i d new functionality w o j d probably mean taking out ited something addhgl

dels rbr content management software For a start, It's r for everybody, and lybody can develop It further. I ; free, software s u ; a r up, MySQL, and Apache

W przeszoci tekst zawarty w sekcji keywords mia bardzo due znaczenie, poniewa sowa kluczowe suyy robotom internetowym do kategoryzowania stron. Zmienio si to, poniewa spamerzy naduywali tej funkcji tak intensywnie, e aktualnie wiele robotw internetowych zupenie ignoruje metadane. Niektre wyszukiwarki nadal jednak zapisuj te informacje, dlatego warto powieci odrobin czasu i uzupeni odpowiednie pola. Najwaniejszym polem dla kadego artykuu jest Opis. Chocia znaczenie pola keywords (Sowa kluczowe) spado, wikszo wyszukiwarek nadal respektuje opis strony. Czsto ta informacja wykorzystywana jest j a k o krtki opis strony w wynikach wyszukiwania. Przykadowo wspomniane wczeniej metadane s dla Google opisem strony (zobacz rysunek 13.4). Dlatego zawarto pola description mona traktowa j a k o dodatkow zacht dla odwiedzajcych.

kty wacja moduu Breadcrumbs


Nawigacja okmszkowa (ang. Breadcrumbs) uatwia odwiedzajcym poruszanie si po stronie i zapoznanie si z jej hierarchiczn struktur. Jeli uytkownik wejdzie na stron z pominiciem strony gwnej, nawigacja okruszkowa pozwoli mu dotrze do wyszych poziomw. Dodatkowym atutem tej techniki jest uatwienie zadania robotom internetowym, poniewa uwydatnia ona struktur strony. Jak przedstawiono na rysunku 13.5, system Joomla! zawiera modu Breadcrumbs, ktry automatycznie wywietla nawigacj okruszkow na kadej stronie. Kady szablon, ktry ma odpowiednie odwoanie, umoliwia wstawienie nawigacji okruszkowej na stronie Joomla!.

352

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 13.4. Metaznacznik description wykorzystywany jest przez wyszukiwarki przy wywietlaniu opisu strony na licie wynikw wyszukiwania

Grafika

Wiadomoci

Wideo

Grupy dyskusyjne

Gmaii

wiece) '

Zlgi aou

Nuts and Bolls Filmmaktng 0 Szukaj w Internecie O

Szukaj Szukaj na stronach kategorii jzyk polski

Wyniki 1 - 1 0 spord okoto 46.200 dla zapytania Nnts alul Bolls Fllmmaking. (Znaleziono w 0.08 sek.)

Filmmaking is a site focused on Nuts .mil Bolts Filiiim<ikiiitj including storytelling , shooting tips, motion graphics, film technology, 3D rendering, ... > www cvisual.com/ - 36k - f-opm - F'odobne stiony - Filtr

Filmmaking - Nuts arid Bolts arid Guerilla, your source for Nuts and in-II'Mii ]

Linki sponsorowane

Nuts,standard and special


Send us your inquiries The producers will contact you

Nuts and Bolts Filmmaking, the book, by Dan Pahrnel - [ .. ] :


Main page containing Nuts and Bolts Filmmakimj book information i n c h i n g tableof-contents, book description, and additional resources. www , u<l i ' i r iiiin t i r l t o'.p 9k Kopia Podc

Nuts and Bolts Filmmaking - Elsevier Nuts <m<l Bolts Filmmaking, an ideal book for the rapidly growing number of low- budget filmmakers, provides how-to information on the day-to-day techniques ... www.else--ier.com/vvps/product/cvvs_hom8/702196 - 31k - hopi* - Podobne irony - Filtr

Writers Store. Nuts and Bolts Filmmaking Practical Techniques ... - [ Hum

Rysunek 13.5. Joomla! ma wbudowan funkcj nawigacji okruszkowej, ktra wpywa na pozycj strony

J o o m l a !
Joomla! Overview

Yesterday all servers iri the U.S. went out on strii more R A M and better CPUs. A spokes person sa for better R A M was due to some fool increasing t speed. In future, buses will be told to slow down i motherboards. News T h e Community Szukaj...

Popular iKiffl I Home I


I Joomla! Extensions i Joomla! License Guidelines 1 Welcome to Joomla! 1 What's New in 1.5?
1

Overview

Modu Breadcrumbs znajdziesz, wybierajc z menu w interfejsie administratora opcj Rozszerzenia/Moduy. Ekran ustawie tego moduu zilustrowano na rysunku 13.6. Modu ma kilka ustawie, np. moliwo ustawienia Znaku rozdzielajcego. Domylnie symbol rozdzielajcy stanowi dwa znaki wikszoci ( ) . Rysunek 13.6. Moesz zmieni ustawienia moduu Breadcrumbs w interfejsie administratora Modu:
Szczegy y p moduu: mod_bi e.idcrumbs Tytu; Bteadcrumbs Poka tytu: Wtoczony: Pozycja: Kolejno: Poziom dostpu: [Zmie]

Preferencje Parametry moduu Poka element startowy O Nie Ta

O O

Nie

'S' Tak
v

Tekst elementu startowego Home Znak rozdzielajcy Pt zyr ostek klasy moduu Parametry: rozssersone

Nie > Tak

breadcrumb

0::Breadcrumbs v Zastizeony Specjalny

ID: 35 Opis: Wywietla ciek powrotu. Przypisanie m e n u Pozycje menu: Poycie wybrane: Wszystkie O Brak O Zaznaczone A

Rozdzia 13. Pozycjonowanie i marketing w wyszukiwarkach internetowych

353

Kapa strony
Im bardziej elementy nawigacyjne uatwiaj poruszanie si po stronie, tym lepsz pozycj bdzie miaa witryna w rankingach wyszukiwarek. Mapa strony stanowi narzdzie, ktre pozwala zarwno wyszukiwarkom, jak i uytkownikom odnale wszystkie materiay na stronie. Map strony mona traktowa jak gwny spis treci, odnonik do niej znajduje si zazwyczaj jako jedna z ostatnich pozycji w menu nawigacyjnym. Na szczcie istnieje spora liczba rozszerze, ktre automatycznie generuj mapy strony w Joomla!.

ozszerzenie Joomap
Spord wielu rozszerze do generowania mapy strony (poszukaj na extensions.joomla.org) najpopularniejsze i najczciej stosowane jest rozszerzenie Joomap. Cech rozszerzenia jest korzystanie z arkusza stylw odpowiedniego dla aktualnie ustawionego szablonu, dlatego wygld mapy strony odpowiada reszcie witryny, jak pokazano to na rysunku 13.7. lysunek 13.7. Rozszerzenie loomap wywietla nap strony, korzystajc ' arkusza stylw istawionego szablonu
Site Map

About SASSussex Membe i p Oontaet Ur . ;se * f Lr \ i

Joomap tworzy map strony, ktra zawiera normaln struktur menu, list sekcji i kategorii, a nawet list kategorii Virtuemart (o ile zainstalowano to rozszerzenie). Dodatkow funkcj jest tworzenie mapy strony w formacie XML, ktrego wymaga usuga Google. Istniej take wtyczki dla Joomap, ktre pozwalaj na indeksowanie elementw innych aplikacji internetowych, np. Gallery2.

ioogle Sitemaps
Google udostpnia internetow usug, ktra polega na automatycznym tworzeniu mapy strony i zarzdzaniu ni. Wikszo komponentw (take Joomap) wykorzystuje API Google do poczenia z usug Google Sitemaps. Rejestracja w tym systemie poprawia indeksowanie strony przez robota Google. Wicej informacji na temat usugi znajdziesz na stronie: https://www.google.com/webmasters/tools/sitemaps

354

Joomla!. Profesjonalne tworzenie stron WN 1W

Oglne techniki
Aktywacja kilku funkcji Joomla! poprawi indeksowanie strony przez roboty internetowe, jednak nie bdzie miaa dramatycznego wpywu na jej pozycj. Ale istnieje grupa technik, ktre mona zastosowa na kadej stronie (nie tylko tych opartych na Joomla!) w celu poprawienia pozycji w wynikach wyszukiwania. Wiele z opisanych sposobw wie si z modyfikacj kodu HTML strony, ktra poprawiaby jej pozycj. Pamitaj jednak, e najwikszy wzrost pozycji zwizany jest ze zdobywaniem odnonikw z innych, popularnych stron. Dlatego powiniene powici najwicej czasu na zdobywanie linkw zewntrznych. Techniki zwizane z pozycjonowaniem stron mog sta si nieaktualne tu po tym, gdy zostan upublicznione. Pamitaj, e Twoim celem jest odwie wyszukiwark od spenienia jej gwnego zadania bezstronnego przedstawiania informacji. Wyszukiwarki internetowe tworzone s w taki sposb, aby jak najlepiej odpowiaday zapytaniu uytkownika i dostarczay najwartociowszych wynikw. Oprcz podstawowych technik, np. ustawiania waciwych tytuw stron, celem SEO jest przedstawienie Twojej witryny jako porzdnej, wartociowej i solidnej. Dlatego programici wyszukiwarek staraj si wyprzedzi " specjalistw stosujcych techniki SEO, aby w wynikach wyszukiwania nie pojawiay si strony, ktre nie s zwizane z danym zapytaniem.

Gwne wyszukiwarki
W czasie, kiedy pisaem t ksik, najwiksz i najpopularniejsz wyszukiwark byo narzdzie firmy Google. Kilka lat wczeniej t pozycj zajmowa produkt Yahoo!. Cofajc si jeszcze o kilka lat, bardzo trudno byoby wyoni dominujcy program. Celem wyszukiwarki jest dostarczenie Ci podanych informacji. Jeli jutro pojawiaby si wyszukiwarka XYZ, ktra dziki unikatowej technologii byaby lepsza od dzisiejszy rozwiza, za kilka lat mogaby opanowa rynek. Obecnie wydaje si, e Google dysponuje efektywn technologi wyszukiwania, ktr trudno powieli, mimo wielu wysikw firm takich k Yahoo!. Natura wyszukiwarek internetowych sprawia, e nowa technologia mogaby atwo zdeklasowa rozwizanie firmy Google. W przeciwiestwie do typowych programw komputerowych, ktrych typow cech s trudnoci przy zmianie aplikacji (gwnie z powodu danych przechowywanych w formacie danego programu), uytkownicy mog zmieni wyszukiwark, wprowadzajc po prostu inny adres. Od zakoczenia prac nad t ksik do dnia, w ktrym Ty j czytasz, sytuacja moga ju si zmieni, poszczeglne produkty mogy uplasowa si na innych miejscach. W czasie, gdy pisaem t ksik, gwnymi wyszukiwarkami (wedug znaczenia) byy: Google, Yahoo!, MSN i Ask Jeeves. Aby uzyska jak najlepsze wyniki technik SEO, warto poszczeglnym wyszukiwarkom powici czas proporcjonalny do ich udziau w rynku.

Rozdzia 13. Pozycjonowanie i marketing w wyszukiwarkach internetowych

355

ladanie stw kluczowych


Jednym z najlepszych sposobw inwestycji czasu podczas pozycjonowania strony jest okrelenie waciwych sw kluczowych, ktrych mog uy ludzie chccy odwiedzi Twoj stron. Odpowiedni dobr sw kluczowych moe znaczco podwyszy pozycj witryny (nawet o kilka stron) w wynikach wyszukiwania. Chocia najwaniejszy jest ukierunkowany dobr sw kluczowych dla strony gwnej Twojej witryny, warto przeprowadzi podobne zabiegi dla najwaniejszych artykuw. Kada strona umieszczona wysoko w wynikach zwiksza ruch na Twojej stronie, a take w konsekwencji prawdopodobiestwo, e odwiedzajcy poszukaj innych materiaw na Twojej stronie.

worzenie wstpnej listy sw kluczowych


Pierwszym krokiem do uzyskania dobrej pozycji w wynikach wyszukiwania jest zapoznanie si z popularnymi sowami kluczowymi zwizanymi z tematyk Twojej strony. Przykadowo jeli Twoja strona powicona jest samodoskonaleniu, to czy ludzie poszukujcy informacji tego typu wprowadzaj samodoskonalenie w wyszukiwarce? Czy moe wprowadzaj raczej rozwj osobisty lub motywacja? Jeli nie zdobdziesz takich informacji, rezultat wikszoci Twoich dziaa zalee bdzie gwnie od szczcia. Przed rozpoczciem bada powi 10 minut na utworzenie listy poj i terminw, ktre najlepiej odpowiadaj treci strony. Aby znale waciwe sowa kluczowe, musisz od czego zacz. Pozostajca przy temacie samodoskonalenia lista mogaby wyglda tak: samodoskonalenie, rozwj osobisty, rozwj duchowy, motywacja, determinacja, grupa wsparcia, produktywno, pomoc duchowa.

Jeli nie wiesz, od czego zacz wyszukiwanie, sprbuj znale dany temat w encyklopedii, np. Wikipedii (http://pl.wikipedia.org/wiki/Strona_gl0wna). Istnieje spora szansa, e znajdziesz terminy zwizane z dan tematyk.

iarzdzie do wyszukiwania sw kluczowych


Po utworzeniu wstpnej listy sw kluczowych powiniene skorzysta z odpowiedniego narzdzia. Moe to by internetowa aplikacja, np. Google Adwords Tools (https://adwords. google.com/select/KeywordToolExternal) lub normalnego programu, np. doskonaego, darmowego Good Keywords (www.goodkeywords.com).

356

Joomla!. Profesjonalne tworzenie stron WN 1W

Po wprowadzeniu wstpnej listy w odpowiednie pole narzdzia Google Adwords Tools otrzymasz pokrewn list sw kluczowych (zobacz rysunek 13.8). Domylnie wszystkie sowa kluczowe sortowane s w porzdku alfabetycznym. Moesz zmieni to ustawienie, klikajc nagwek odpowiedniej kolumny. Rysunek 13.8. Za pomoc narzdzia Google Adwords Tools moesz znale list podobnych sw kluczowych dla tych wprowadzonych
wj.im u i w o i z o n e propozycje srow Kluczowych;' '-*) Opisowe sowa lub wyraenia wprowauz pu jeunyrrrg wierszu: Samcdoskonaenie Rozwj osobisty Uyj synonimw Filtrowanie wynikw \ Propozycje stw kluczowych j

Wybierz kolumny do wywietlenia Poka/ukryj kolumny Pizyltlioii.1 liczba Konkurencja wyszukiwa: gindnia Przybliona i. liczba S o w a kluczowe leklamodawcy wyszukiwa S o w a kluczowe powizane z w p r o w a d z o n y m i terminalni - posortowane wedug trafnoci grupa wsparcia Niewystarczajce 2 m rozwj osobisty rozwj duchowy motywacja samodoskonalenie [; ~; ; ] 3500 2 400 40 500 Niewystarczajce 3 600 2 400 40 500
880

Typ dopasowania: Zblione


Dodaj

Podai Doda) Doda ^

Dziesi najpopularniejszych sw kluczowych to: motywacja, pomoc duchowa, grupy wsparcia, motywacje, rozwj osobisty, motywacja pracownikw, produktywno, rozwj duchowy, psychologia motywacji, rozwj duchowy.

Zauwa, e pocztkowa lista sw kluczowych nie do koca odpowiada tym najpopularniejszym dla danej grupy docelowej. Na pierwszym miejscu znajduje si motywacja, ktra na naszej licie jest dopiero na czwartej pozycji. W praktyce oznaczaoby to znaczc utrat pozycji, poniewa inne strony, dla ktrych porzdek sw kluczowych byby waciwy, uzyskayby lepszy rezultat. Znajomo popularnych wariantw gwnych sw kluczowych jest krytyczna, jeli chce si efektywnie stosowa strategi SEO. We pierwszych 30 terminw, ktre znalazy si na licie wyszukiwania, i dodaj je do listy pocztkowej zachowujc wczeniejsze pozycje. Najpopularniejsze sowa kluczowe przycigaj najwicej ludzi, ale oznaczaj take najwiksz konkurencj. Poprzez dobr sw kluczowych, ktre s mniej popularne, jeste w stanie przycign w efekcie wicej odwiedzajcych.

Rozdzia 13. Pozycjonowanie i marketing w wyszukiwarkach internetowych

357

Wynajdywanie najlepszych sw kluczowych


Dla uproszczenia caa procedura zostanie przedstawiona w oparciu o wyszukiwark Google. Zacznij od wprowadzenia pierwszej pozycji z listy sw kluczowych. Pamitaj, aby grupy sw umieszcza w znakach cudzysowu, aby byy interpretowane jako cao. Wynik wyszukiwania hasa samodoskonalenie zawiera informacje, e znaleziono 578 000 odpowiadajcych stron, a to spora konkurencja. Warto przejrze list wynikw, poniewa niektre pozycje mog by niezwizane z grup docelow Twojej witryny. Zapisz liczb znalezionych stron dla danego wyraenia. Chocia haso samodoskonalenie zdaje si bardzo popularne, inne sowa dajjeszcze wicej wynikw. Przykadowo dla czwartej pozycji na licie motywacja Google zwraca 2 670 000 wynikw. Niewiele ponad p miliona stron dla hasa samodoskonalenie od razu wydaje si atrakcyjniejsze. Przeprowad procedur dla wszystkich pozycji z listy i zapisz odpowiadajc list wynikw. W pewnym momencie trafisz na haso, ktre wyszukiwane jest relatywnie czsto, a powoduje wygenerowanie niewielu wynikw. To wanie tym hasom naley podporzdkowa dalsze dziaania.

Podgldanie konkurencji
Imitacja i kopiowanie rozwiza konkurencji mog by jedn z najlepszych metod promowania wasnej strony. Aby stwierdzi, jak moesz osign najwysz pozycj dla wybranych sw kluczowych, warto przeanalizowa kod HTML najpopularniejszych stron. Wprowad wybrane sowo kluczowe i wybierz pierwsz stron z listy wynikw. Nastpie wybierz w przegldarce opcj Poka rdo strony, a zostanie wywietlone okno zawierajce kod HTML. Jedn z najwaniejszych pozycji na licie sw kluczowych byo wyraenie rozwj duchowy, a pierwsz stron spord wynikw wyszukiwania http://www.rozwojduchowy.net. Po uruchomieniu opcji Poka rdo strony pojawio si okno zawierajce kod rdowy strony zilustrowano to na rysunku 13.9. Domylnie opcja Poka rdo strony w przegldarce Internet Explorer powoduje wywietlenie kodu HTML w Notatniku. Instrukcje, jak zmieni to zachowanie, mona znale w sieci (wymagane s zmiany w rejestrze systemowym). Alternatywn metod jest skorzystanie z przegldarki Mozilla Firefox, ktra ma wbudowan funkcj podgldu rda strony. Wywietlany kodjest odpowiednio kolorowany i formatowany, co uatwia jego czytanie. Stosowanie tego rozwizania sprawia, e analiza kodu HTML jest bezbolesna. Kolejnym krokiem jest okrelenie listy czynnikw, ktre wpywaj na wysok pozycj strony. S to: Dua liczba odnonikw do danej strony Jeeli dua liczba stron zwizanych z danym tematem zawiera odnoniki prowadzce do tej strony, wyszukiwarka zanotuje to jako oznak popularnoci i uytecznoci. Wyszukiwarki oceniaj strony na podstawie powiza z innymi witrynami. Jeli dua liczba tematycznie zwizanych stron zawiera odpowiednie odniesienia, wpywa to pozytywnie na pozycj strony. Za pomoc narzdzia Google Toolbar moesz oszacowa liczb odnonikw zwrotnych do danej strony.

358

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 13.9. Funkcja Poka rdo strony powoduje wywietlenie kodu HTML danej strony

[ ^

rdo: http://Www, rozwojduchowy.net/ Edycja Widok Pomoc

Mozilla Firefox

Plik

O D D
a

<html> <head> 1 <titXe>Droga wiata, Rozwj Duchowy</tit.Le> I <neta h t t p - e q u i v = " C o n t e n t - t y p e " c o n t e n t = "text/html; charset=iso-8859-2"> I <meta h t t p - e q u i v = " C o n t e n t - l a n g u a g e " c o n t e n t = " p l " > 1 <meta name="Des-ription" content="Dziesitki artykuw o szeroko pojtym rozwoju duchowym , ezote i < r a e t a name-"Keywords" c o n t e n t = " r o z w j duchowy, ezoteryka, duchowo, wiadomo, huna, me dytacja i <meta name="Robots" content="index,follow"> I <style type="text/css"> body {background-color: #FEF8D0; margin: Opx;} table {font-family: Verdana; font-size: 13px; color: #805500} hi {margin-top: 7px; font-size: 16px; font-weight: bold; text-align: center; h2 {margin: Opx; font-size: 13px; font-weight: normal;} a {color: #a06b00; text-decoration: none;} a:hover {color: #805500; text-decoration: underline;} P {text-indent: 0.7cm; margin: 3pt Ocm} SbezAkapitu {text-indent: 0.0cm; margin: 3pt Ocm} . tdGo {background: #F3F7B7 ur1(http://www.rozwojduchowy.net/gfx/pasek gl.jpg) n o-repea .tdGo_menu {background: #F3F7B7 url(http://www.rozwojduchowy.net/gfx/pasek menu.jpg) no-rep . tdDo {background-color: #FFFFE2; border-right: lpx solid #DEDEDE; border-left: lpx so .tdDo menu {background-color: #FFFFE2; border-bottom: lpx solid #DEDEDE; border-left lpx s .komentarze {border-bottom: lpx solid flEFEFEF; padding: lpx;} .przycisk {padding: lpx; width: 200px} .stopka {background-color: #FFFFE2; border: lpx solid #DEDEDE; font-size: 12px;} div.ogl-ogol {width:100%; font-size:12px; margin-top:lOpx; margin-bottom:lOpx;} div.ogl-nr {display:table-cell; width:30px; text-align:center;} div.ogl-tresc {display:table-cell; width:370px;} div.ogl-tresc a {font-weight:bold;} div.ogl-info {display:table-cell; font-size:llpx;} <

m Sowa kluczowe w tytule strony Jeli sowa kluczowe pojawiaj si w tytule, strona oceniana jest wyej, ni gdyby pojawiay si wycznie w tekcie. Sowa kluczowe w nagwkach <H1> Gdy sowa kluczowe pojawiaj si w nagwkach pierwszego rzdu (znacznik <H1>), oznacza to, e m a j due znaczenie dla treci strony. Jeli pojawiaj si dodatkowo w tytule strony, jest to jeszcze bardziej premiowane. Sowa kluczowe zoone pismem pogrubionym, pochylonym lub podkrelonym Jeli sowa kluczowe formatowane s w szczeglny sposb, postrzegane s jako wane. Liczba wystpie sw kluczowych Jeli sowa kluczowe pojawiaj si na stronie wielokrotnie, jest to sygna dla wyszukiwarki. Pamitaj jednak, e roboty internetowe doskonalone s pod ktem zamiecania strony sowami kluczowymi w taki sposb, e nie odnosz si do jej treci. Takie dziaanie znaczco pogarsza pozycj strony. Sowa kluczowe na pocztku i na kocu artykuu Jeli sowa kluczowe pojawiaj si zarwno na pocztku, jak i na kocu strony, jej pozycja bdzie wysza.

Zbadaj kod rdowy strony pod ktem wymienionych aspektw. Ile z nich moesz odnale na stronie? Korzystajc z funkcji Szukaj (uruchamianej w wikszoci przypadkw skrtem Ctrl+F), moesz okreli liczb wystpie sowa kluczowego na danej stronie. W ktrych miejscach si pojawiaj? Po przeanalizowaniu kilku najpopularniejszych stron powiniene dostrzec pewien wzorzec, co pomoe Ci zrozumie, dlaczego akurat te strony promowane s przez wyszukiwark. Powtrz ten proces z innymi, wybranymi sowami kluczowymi. Kiedy skoczysz, powiniene mie ju solidne wyobraenie, jakie dziaania naley podj, aby zastosowa najskuteczniejsze strategie na Twojej stronic.

Rozdzia 13. Pozycjonowanie i marketing w wyszukiwarkach internetowych

359

ytuly stron
Z punktu widzenia robota internetowego tytu strony pozwala okreli, jakiego typu materiay znajduj si na stronie. Krtki, opisowy tytu jest doskonaym sposobem zwikszenia szansy, e Twoja strona zostanie znaleziona. Zanim pojawiy si systemy CMS, wiele stron nie mao tytuw lub byy one sformuowane w taki sposb, e roboty internetowe nie mogy sklasyfikowa treci. Podobnie jak inne aplikacje CMS, Joomla! wymusza ustawienie tytuu dla kadego wprowadzanego artykuu. Zakadajc, e kady artyku ma przypisany tytu, moesz zastosowa ponisze wskazwki, aby poprawi pozycj strony w wyszukiwarkach: Zredukuj liczb sw pojawiajcych si w tytule Robot internetowy nie jest w stanie okreli, ktre sowa powinny zosta wykorzystane do klasyfikacji strony, a ktre peni funkcj opisow. Dlatego im krtszy tytu artykuy, tym wiksze znaczenie dla robota maj poszczeglne sowa. Wyeliminuj dodatkowe sowa Powiniene usun krtkie, proste sowa, niezwizane z danym tematem (np. i", lub", dla" itd.). Zamiast to i tamto" moesz napisa np. to tamto", czc sowa pauz (). cz wyraenia, aby zapobiec powtrzeniom Dobr praktyk jest unikanie powtrze w tytule. Przykadowo Rozwj duchowy i rozwj osobisty" lepiej byoby zapisa w postaci Rozwj duchowy i osobisty", poniewa wtedy wszystkie sowa zostan zapisane przez robota internetowego.

Najwaniejszym tytuem jest ten pojawiajcy si na stronie gwnej. Tytu strony gwnej zaley od pozycji Home w Main Menu. Otwrz ekran edycji menu i wybierz pozycj Home (pierwszy element listy). Panel Parametry: system zawiera pole tekstowe opisane Tytu strony. Jego domylna warto to Welcome to Frontpage, co nie suy pozycji Twojej strony. Tak ustaw ten parametr, aby odpowiada tematyce strony.

Atrybut alt dla obrazw i innych multimediw


Dla kadego elementu multimedialnego pojawiajcego si na stronie powiniene ustawi atrybut alt. Peni on funkcj tekstowego opisu danego materiau, jego warto moesz zobaczy, najedajc kursorem myszy np. na obrazek, co przedstawiono na rysunku 13.10. Atrybut alt wykorzystywany jest gwnie do wygodnego przegldania strony w przegldarkach tekstowych i gosowych, co ma due znaczenie dla osb niepenosprawnych. Pamitaj, e robot internetowy przypomina przegldark tekstow nie jest w stanie odczyta elementw graficznych pojawiajcych si na stronie. Ustawienie pola alt, aby zawierao wyjanienie np. dla danego obrazka, umoliwi robotowi internetowemu efektywne zaindeksowanie danego elementu.

360

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 13.10. Warto atrybutu alt wywietlana jest po najechaniem kursorem myszy na dany obrazek

2. oflowjMiie i lejestiMja

4'
szukaj

Zobacz str on gl A J A X (ang. Asynchroniczny JavaScript i XML) - technologia tworzenia aplikacji internetowych, w ktrej interakcja uytkownika z serwerem odbywa si bez przeadowywania caego dokumentu, w sposb asynchroniczny. Ma to umoliwia bardziej dynamiczn interakcj z uytkownikiem ni w tradycyjnym modelu, w ktrym kade danie nowych danych wie si z przesaniem caej strony HTML. Spis treci [ukryj] 1 Podstawowe elementy AJAX 2 Wady i ograniczenia | 3 Przykad utworzenia nowego obiektu XMLHTTP : 4 Biblioteki AJAX

'J

" T WiKJPEDlA
Wolna encyklopedia

Asynchronous JavaScript and XML,

I Przejd | | Szukaj j

Zgto bd Czste pytania (FAQ) Kontakt z Wlkipedi Wspom Fundacj

5 Zobacz te 6 Linki zewntrzne

dla edytorw Ostatnie zmiany

Podstawowe elementy A J A X
Na technologi t skada si par elementw: a "Ml HTTP - nhiekt timnliwiaiary asvnrhrnnirvnp nr7p=:vanip danvrh nr7P7 gjpr H7ipki

W przypadku Joomla! moesz okreli warto atrybutu alt podczas wstawiania grafiki w tre artykuu. Odpowiedni tekst naley wprowadzi w pole Image description, jak przedstawiono to na rysunku 13.11. Jeli dany obrazek to diagram procesu biznesowego, opisz go odpowiednio. Jeli jednak obrazek suy wycznie jako ozdobnik i nie jest bezporednio zwizany z treci strony, moesz wykorzysta atrybut alt i wstawi sowa kluczowe. Jeli bdziesz korzysta z tej techniki z umiarem, poprawisz pozycj strony. Rysunek 13.11. Warto atrybutu alt moesz okreli w polu Image description w oknie Insert image
nsert/edit image Mozitta Firefox

' http://localhost/joomla2/pkjgins/editors/tinymce/jscripts/tiny_rnce/plugins/advirnage/ii General r General Image URL Image description igrupa wsparcia Title Grupa wsparcia Appearance Advanced

o '

PageRank Google
Jeli zainstalowae narzdzie Google Toolbar, w oknie przegldarki pojawi si may pasek opisany j a k o PageRank. Na kadej odwiedzonej stronie wywietlany jest jej PageRank (w skali od 1 do 10), co zilustrowano na rysunku 13.12. Pamitaj, e pasek PageRank zostanie wywietlony tylko wtedy, kiedy zgodzisz si na zapisywanie odwiedzanych stron i wyszukiwanych hase za pomoc narzdzia Google Toolbar.

Rozdzia 13. Pozycjonowanie i marketing w wyszukiwarkach internetowych iysunek 13.12. 5ageRank odzwierciedla mpularno lanej strony v skali od 1 do 10

361

M O m t . p l . Polski Portal i n t e r n e t w y Plik Edycja Widok Historia Zakadki

Mozilla F i r c f o Narzdzia Pomoc

http://www.onet.pl/ v j G Wyszukaj * < - M * Zakadki' [ PageRank to opinia Ustawi strony (8/10)

o n e t pl
Onet poleca Nareszcie weekend! , Wiee Donald Tusk i Nicolas politykami roku 2 0 0 8 "Przebieg t e j masakry j e s t w w a s z y c h rkach" Ziobro zapaci 30 t y s . Garlickiemu Sikorski odznaczy Giertycha medalem Siy UE przepdziy somalijskich piratw Okrgy St podzieli Polakw Rodzina muzumanw upokorzona w samolocie Bezdomna Polka urodzia w londyskim metrze > 13 t y s . lat temu kometa "udusia" Ameryk - tvn24.pl: kobieta miaa 6 promili alkoholu Krakw: kobiety zatruy si czadem

Od pocztku sezonu wida, e w letnich przygotowaniach co za szwankowa, o. Nie chc si jednak wypowiada na ten temat - mwi w rozmowie z Onet.pl. Jan Szturc, pierwszy trener Adama Maysza

" m '

Analiza rankingu strony dostarcza wielu podstawowych informacji. Nie jest to jednak na tyle kluczowy czynnik dla optymalizacji strony, jak mogoby si wydawa. Waniejsze jest, aby strona bya odnajdywana przez uytkownikw zainteresowanych dan tematyk, ni eby cieszya si ogln popularnoci. Jednym z narzdzi, ktre uatwiaj nakrelenie waciwej strategii, jest usuga ledzenia odwiedzajcych Google Analytics. Jest to darmowa usuga, ktra wymaga umieszczenia maego fragmentu kodu JavaScript na Twojej stronie. W ten sposb wszystkie wizyty bd rejestrowane na kilka sposobw. Wicej informacji na ten temat moesz znale w podrozdziale Google Analytics".

ystem wymiany odnonikw


Najlepsz i najskuteczniejsz metod na popraw pozycji danej strony jest wzrost liczby prowadzcych do niej odnonikw. Wikszo wyszukiwarek interpretuje t liczb jako wyznacznik jakoci danej strony. Jest to jeden z najwaniejszych czynnikw wpywajcych na PageRank. Nie wszystkie odnoniki s jednak traktowane rwno. Pojedynczy odnonik na popularnej stronie z wysokim PageRank (np. Onet.pl) jest wart duo wicej ni setki odnonikw na mniej popularnych stronach. Jeli skorzystasz z systemu wymiany odnonikw, to w zamian za to, e umiecisz na swojej stronie odnoniki do witryn uytkownikw systemu, na innych stronach pojawi si odnoniki prowadzce do Twojej strony. Umowy tego typu mog bardzo pozytywnie wpywa na pozycj strony i ruch na niej.

362

Joomla!. Profesjonalne tworzenie stron WN 1W

Ajax a SEO
Ajax to niesamowite poczenie technologii internetowych, dziki ktremu interaktywno stron wzrasta do poziomu porwnywalnego z tradycyjnymi aplikacjami (w rozdziale 7 dowiedziesz si wicej). Zastosowanie Ajaksa pozwala uaktualnia treci pojawiajce si na stronie bez koniecznoci przeadowania caego dokumentu. Powoduje to wzrost dynamicznoci i atrakcyjnoci strony. Problemem zwizanym z zastosowaniem Ajaksa jest dosowna niewidoczno dla wyszukiwarek. Technologia Ajax opiera si w gwnej czci na kodzie JavaScript, uruchamianym przez przegldark w reakcji na dane zdarzenie. Kod JavaScript pobiera nastpnie dodatkowe informacje z serwera WWW i wywietla je w oknie przegldarki czsto w postaci chmurki. Roboty internetowe nie uruchamiaj kodu JavaScript. Oznacza to, e wszystkie materiay dostpne wycznie za porednictwem Ajaksa s niedostpne dla wyszukiwarek. Obecnie nie istnieje rozwizanie idealne, ktre pozwalaoby na implementacj Ajaksa bez negatywnego wpywu na pozycj strony. Projektanci, ktrzy zdecyduj si na zastosowanie Ajaksa, maj w takiej sytuacji kilka opcji: Dublowanie materiaw Chocia materiay dla uytkownikw wywietlane s gwnie za porednictwem Ajaksa, dostpne s take w postaci zwykej strony HTML. Moe to wymaga zaprogramowania odpowiedniego komponentu, aby zrealizowa t strategi w Joomla!, jednak z punktu widzenia SEO warto podj ten koszt. Unikanie stosowania Ajaksa i JavaScriptu do nawigacji Gdy robot internetowy indeksuje dan wihyn, wykorzystuje wewntrzne odnoniki, aby odnale wszystkie strony. Poniewa kod JavaScript nie jest uruchamiany przez roboty, praktycznie wszystkie odnoniki wymagajce uruchomienia go lub pobrania treci za pomoc Ajaksa bd niedostpne dla robota. Z tego powodu wymienione technologie nie powinny by stosowane do nawigacji. Materiay pobierane dynamiczne jako streszczenie waciwych in formacji Zamiast tworzy dodatkowe materiay, ktre bd pobierane za porednictwem Ajaksa, moesz przyj, e materiay pobierane dynamicznie to streszczenie lub podsumowanie waciwych materiaw dostpnych w tradycyjny sposb. Za pomoc PHP jest to szczeglnie proste, poniewa wystarczy przetworzy plik HTML, aby dane zwracane byy w odpowiednim formacie. W ten sposb znika konieczno dublowania materiaw.

Poniewa Ajax szybko zyskuje na popularnoci, jako dominujcy sposb tworzenia interaktywnych stron, powinien zosta wkrtce opracowany sposb informowania robotw internetowych, gdzie naley szuka treci pobieranych dynamicznie. Do tego momentu najlepszym sposobem unikania pogorszenia pozycji strony jest zastosowanie jednej z opisanych strategii. Z tego samego powodu, tj. niedostpnoci da robotw internetowych, powiniene z rozwag implementowa rozwizania we Fashu. Technologia ta doskonale wpywa na wraenia odwiedzajcych, ale jednoczenie sprawia, e prezentowane materiay s niedostpne dla robotw internetowych. Dlatego warto udostpnia wszystkie materiay osigalne za pomoc aplikacji stworzonych we Fashu, take w postaci tradycyjnych plikw HTML.

Rozdzia 13. Pozycjonowanie i marketing w wyszukiwarkach internetowych

363

ioogle flnalytics
Darmowe narzdzie Google Analytics (www.google.com/analytics), ktre moesz aktywowa na swojej stronie, dostarcza dokadnej analizy osb odwiedzajcych stron. Moliwe jest przedstawianie informacji w rnej postaci, np. danych statystycznych, diagramw, ktre przedstawiono na rysunku 13.13., itd. Zwr uwag, e diagramy to wycznie namiastka dostpnych funkcji. iysunek 13.13. Diagramy na stronie Google Analytics odzwierciedlaj 'iczb osb odwiedzajcych na danej stronie

Najwaniejszym panelem z punktu widzenia SEO jest Traffic Sources, poniewa zawiera informacje na temat stron, a take wyrae w wyszukiwarce, za porednictwem ktrych odwiedzajcy trafili na Twoj witryn. Informacje o hasach wprowadzanych w wyszukiwarce mog mie kluczowe znaczenie przy doborze sw promujcych Twoj stron. Narzdzie Google Analytics mona poczy z programami reklamowymi Adsense i Adwords. System umoliwia take nakrelenie pewnych celw i monitorowanie postpw w deniu do nich. Funkcja ta pozwala Ci take okreli strony, na ktrych reklama przynosi najwicej dochodu. Pamitaj, e w momencie aktywowania narzdzia Analytics na Twojej stronie udostpniasz firmie Google informacje na temat osb odwiedzajcych T w o j stron. Poniewa wiele organizacji uznaje te informacje za dane prywatne, upewnij si, e nie s one zbierane w nieodpowiednich dziaach.

zego nie naley robi


W tym rozdziale opisano wiele technik, ktrych zastosowanie pozytywnie wpywa na pozycj strony. Istnieje jednak spora liczba zych praktyk, ktre zaniaj pozycj strony. Niektre z nich to: Spamowanie sowami kluczowymi Jeli wspczynnik sw kluczowych do treci jest zbyt wysoki (co znaczy, e du czci prezentowanych materiaw s sowa kluczowe), robot internetowy oznaczy dan witryn prawdopodobnie j a k o spam, co znacznie obniy jej pozycj. Aby zapobiec takiej sytuacji, upewnij si, e kada strona zawiera uyteczne i czytelne informacje.

364

Joomla!. Profesjonalne tworzenie stron WN 1W Farmy hiperczy Istniej strony okrelane jako farmy hiperczy (ang. link farm), ktre s w zasadzie listami linkw. Umieszczenie na takiej stronie zaszkodzi pozycji Twojej witryny. Ukrywanie tekstu Jedn z najstarszych metod oszukiwania robotw internetowych byo ustawianie ta tekstu pokrywajcego si z jego kolorem (w ten sposb spam nie myli uytkownika, poniewa by niewidoczny), a nastpnie wypenianie go sowami kluczowymi. Obecnie roboty internetowe wykrywaj t technik i zaniaj pozycj strony, ktra j stosuje. Zbyt dobre, aby byo prawdziwe Wiele firm oszukuje swoich klientw, oferujc im nagy wzrost pozycji strony przy niewielkiej inwestycji pieninej. Niektre z wykorzystywanych schematw rzeczywicie dziaaj przez pewien okres, jednak tu po odkryciu trac na znaczeniu. Nie ma nic za darmo w internetowym wiecie.

Marketing w wyszukiwarkach internetowych (SEM)


Obszar SEO obejmuje dziaania zmierzajce do podwyszenia pozycji strony na licie wynikw wyszukiwania. Marketing w wyszukiwarkach internetowych (SEM Seareh Engine Marketing) to szersze pojcie, obejmujce techniki SEO, a take patne reklamy, ktre maj wpyn na wzrost popularnoci danej strony. SEM odnosi si do obu elementw zwizanych z reklamami zarwno sprzeday, jak i zakupu. Moesz wykupi reklamy, aby promowa wasn stron, lub umieci reklamy na swojej stronie, aby zarabia.

Komponowanie skutecznego tekstu reklamowego


Na temat tworzenia skutecznych tekstw reklamowych napisano wiele ksiek, wrd nich znajdziesz sporo doskonaych przewodnikw. Jeli zamierzasz naby tak ksik, powiniene zapozna si z tytuem Profesjonalne tworzenie materiaw reklamowych1. Jest tam mnstwo informacji na temat pisania skutecznych tekstw reklamowych. Poniej znajdziesz list wskazwek, ktre powinny pomc Ci w komponowaniu skuteczniejsze reklamy: Sprawdzaj, sprawdzaj, sprawdzaj! Skuteczne haso reklamowe przypomina grom z jasnego nieba. Najwspanialszy tekst moe okaza si nieskuteczny, podczas gdy pozornie nieudana reklama najbardziej zainteresowaa uytkownikw. Zamiast pyta ekspertw, powiniene zawsze sprawdzi, czy dana reklama dziaa w praktyce. Wykorzystuj krtkie, motywujce sowa Pobudzaj uytkownikw takimi hasami, jak Tylko TERAZ! Kocwka wyprzeday. Pobierz programy za darmo. Kupujc dzisiaj, oszczdzasz 50%".

John McWade, Onepress, Gliwice 2006 przyp. red.

Rozdzia 13. Pozycjonowanie i marketing w wyszukiwarkach internetowych Sprzedawaj korzyci, a nie funkcje Niezalenie od towaru lub usugi, ktr promujesz, skup si na korzyciach pyncych dla uytkownika. Synny sprzedawca uj to w sowach sprzedawaj skwierczenie, nie stek" (ang. sell the sizzle, no the steak).

365

Upewnij si, e reklama zawiera kluczowe pojcia Stosuj sowa, ktre wzbudzaj emocje i entuzjazm, np. nowo, wyprzeda, za darmo i inne. Bd zwizy Usu wszystkie sowa, ktre nie podkrelaj celu reklamy. Pamitaj o grupie docelowej Nie staraj si zainteresowa wszystkich swoj reklam, lecz tylko czonkw grupy docelowej. Utwrz landing page dla kadej reklamy Aby bada skuteczno reklamy, musisz mie moliwo dokadnego ledzenia generowanego przez ni ruchu. Korzystajc z opcji nieprzypisanych artykuw (w ten sposb alternatywne wersje tej samej strony nie bd wywietlane w danej sekcji lub kategorii), moesz utworzy unikatowe tzw. landing pages dla kadej reklamy.

ay per click i pay per view


Najczstsz form reklamy jest system pay per click (patne za kliknicie). Reklamy wywietlane s na stronach bezpatnie, opacane s wycznie kliknicia reklam. Wikszo wyszukiwarek posiada wasny program pay per click. Wicej szczegw znajdziesz w odpowiednich serwisach. Inna forma reklam p a y per view, szczeglnie popularna w czasie boomu dot-comw, nie dorwnuje obecnie popularnoci pay per click. Reklamy w tym systemie s patne za kade wywietlenie, niezalenie od tego, czy zostan kliknite. Mimo to pay per view nadal odgrywa znaczc rol, gwnie jeli dana organizacja chce wypromowa mark. Przykadowo producenci filmowi korzystaj z systemw pay per view jako jednego z elementw kampanii promujcej filmy wchodzce do kin, su one popularyzacji filmw niekoniecznie ich stron internetowych.

oogle Adsense
Jedn z metod zarabiania na prowadzeniu strony Joomla! jest program Google Adsense (wicej informacji na www.google.com/adsense). Polega on na wywietlaniu reklam typu pay per click na Twojej stronie. Po prostu moesz umieci reklamy na stronie i zarabia na klikniciach. Znaczce zyski z reklam pojawiaj si, jeli poczysz techniki SEO z doborem reklam. Algorytm dobierania reklam na podstawie sw kluczowych w Google Adsense przypomina ten stosowany przy okrelaniu pozycji strony w wynikach wyszukiwania. Dlatego upewnij si, czy zoptymalizowae stron przed uruchomieniem programu Adsense.

366

Joomla!. Profesjonalne tworzenie stron WN 1W

Podsumowanie
System Joomla! uatwia stosowanie technik SEO (Search Engine Optimizatio), poniewa zawiera wszystkie niezbdne funkcje. Wikszo dziaa nie wymaga znajomoci genialnych lub tajnych sposobw, a raczej konsekwentnego stosowania prostych regu. W tym rozdziale opisano sposoby optymalizacji strony Joomla!, a w szczeglnoci: Aktywacj prostych adresw na stronie Joomla!. Stosowanie metadanych do opisu kadego artykuu. Wstawianie mapy strony. Aktywacj nawigacji okruszkowej, ktra uatwia indeksowanie strony przez roboty internetowe. Przeprowadzanie analizy sw kluczowych w celu zwikszenia liczby odwiedzajcych, ktrzy chcieliby trafi na Twoj stron.

m Udoskonalanie tytuw stron pod ktem pozycji strony. Korzystanie z atrybutu alt do opisu multimediw. Odczytywanie PageRank strony jako wyznacznika jakoci. Adaptacj strategii zapobiegajcej pogorszeniu pozycji strony w przypadku implementacji technologii Ajax. Stosowanie technik SEM (Search Engine Marketing) zwikszajcych widoczno strony.

Wraz z powodzeniem technik SEO wzronie take ruch na stronie a nie kada wizyta jest podana. Popularniejsze strony s atrakcyjnymi celami dla hakerw. W rozdziale 14. opisano rne sposoby zabezpieczenia strony Joomla! i zapobiegania atakom.

14
Bezpieczestwo Joomla!
Joomla! jest atwy w instalacji i konfiguracji, dlatego wielu webmasterw niefrasobliwie podchodzi do kwestii wprowadzania odpowiednich zabezpiecze. Co prawda twrcy systemu Joomla! zrobili wszystko, eby zapobiec naruszeniom bezpieczestwa przez hakerw, mimo to wan umiejtnoci kadego administratora stron WWW jest zrozumienie podstawowych zasad bezpieczestwa. Wane jest, by mia stuprocentow pewno, e Twj system Joomla! jest odporny na atak. Poniewa Joomla! wykorzystuje cztery poczone technologie serwerowe (Apache, PHP, MySQL i Joomla!), musisz zapewni bezpieczestwo kadego ogniwa tego acucha. Na przykad le dobrane zabezpieczenia PHP mog otworzy system na ataki, nawet jeli Joomla!, MySQL i Apache s naleycie zabezpieczone. W tym rozdziale omwiono poszczeglne serwery pod ktem zapewnienia maksymalnego bezpieczestwa, a take sposoby, ktre mona zastosowa, aby zmniejszy zagroenia pochodzce z internetowego rodowiska Bardzo dzikiego zachodu"'. Aby zmniejszy problemy z bezpieczestwem, powiniene regularnie uaktualnia oprogramowanie serwera, wczajc w to Joomla!. Nowe problemy z bezpieczestwem pojawiaj si cay czas, a deweloperzy przygotowuj poprawki aplikacji, aby wyeliminowa dostrzeone luki. Regularne aktualizowanie aplikacji zmniejszy podatno systemu na ataki.

rypy atakw
Napisano wiele ksiek na temat rnych aspektw atakw hakerskich, dlatego zamieszczenie ich kompletnej listy przekroczyoby ramy tej publikacji. Istniej pewne pospolite metody ataku (atakowanie hase, SQL Injection, cross-site scripting itd.), ktre s nadzwyczaj rozpowszechnione. Kady webmaster powinien mie chocia pobien wiedz na ten temat.
1

Ang. Wild Wild West, komedia science fiction z 1999 roku. Pierwsze litery jej tytuu nawizuj do innego

skrtu WWW World Wide Web przyp. tum.

368

Joomla!. Profesjonalne tworzenie stron WN 1W W nastpnych podrozdziaach dokonamy przegldu strategii pospolicie wykorzystywanych przez hakerw w celu zdobycia kontroli nad serwerem lub uszkodzenia systemu. W dalszej czci tego rozdziau dowiesz si, jak skonfigurowa serwer WWW, system PHP i instalacj Joomla!, eby zmniejszy prawdopodobiestwo penetracji z uyciem tych lub innych metod. Jeli chcesz zdoby wicej szczegw na ten temat, wiele informacji o bezpieczestwie w intemecie udostpniono za porednictwem United States-Computer Emergency Readiness Team (US-CERT). Na stronie internetowej US-CERT (www.us-cert.gov) znajduje si wiele powszechnie dostpnych publikacji zarwno dla uytkownikw posiadajcych wiedz techniczn, jak i zwykych uytkownikw.

Ataki na hasta
Istniej programy, ktre prbuj naruszy bezpieczestwo strony zautomatyzowanymi atakami typu brute-force" (na si") na system hase. Ataki te s najczciej prowadzone z wykorzystaniem sownikw czsto spotykanych fraz i hase. Zawsze zadziwiajce jest odkrycie, jak wielu uytkownikw wykorzystuje sowo haso" lub 1234" jako swoje haso systemowe. Jedn z metod promowania wyboru bezpiecznych hase jest zachcanie uytkownikw do przestrzegania poniszych wskazwek: Naley tworzy hasa o dugoci przynajmniej siedmiu znakw. Haso powinno zawiera mae i wielkie litery. Haso powinno zawiera cyfry.

Uytkownicy powinni tworzy hasa skadajce si z dwch sw i liczby. Jeli jedno z tych sw nie jest sowem w jzyku angielskim (by moe nawet Joomla"), szansa powodzenia atakw sownikowych lub atakw brute-force jest prawie zerowa. W filmach hollywoodzkich ,, hakerzy " wykorzystuj techniki takie jak metoda brute-force w celu wamania si na konto wybranego uytkownika, prawdziwi hakerzy s duo mniej wybredni. Wikszo udanych atakw brute-force polegaa na wykorzystaniu raczej nazw uytkownikw ni hase. Poniewa sowo ,, haso ' 'jest tak czsto stosowane jako haso, haker czsto prbuje zestawia je z poszczeglnymi nazwami uytkownikw z listy, co ma na celu sprawdzenie, czy ktokolwiek wykorzysta je jako haso do swojego konta. Dlatego zaleca si chronienie listy uytkownikw przed oglnym dostpem.

SQL Injection
Jedn z najczstszych i najefektywniejszych form internetowego ataku jest SQL Injection (dosownie zastrzyk SQL"). Atak tego typu polega na prbie uruchomienia nieautoryzowanego kodu SQL poprzez wykorzystanie niedostatecznego filtrowania danych trafiajcych do zapytania SQL. Szkody spowodowane dziaaniem tak spreparowanego kodu mog by ogromne od ujawnienia poufnych informacji, po uruchomienie destrukcyjnej procedury.

Rozdzia 14. Bezpieczestwo Joomla!

369

Dziki zachowaniu podstawowych rodkw ostronoci moesz ochroni si przez tym typem naruszenia zabezpiecze. Praktyczn zasad ochrony przed wstrzykniciem kodu jest zagwarantowanie, e piszc program, nigdy nie ufasz danym dostarczonym przez proces zewntrzny (nawet jeli ten proces jest formularzem, ktry sam utworzye). Wszystkie dane akceptowane z zewntrz powinny zosta przetworzone i sprawdzone, zanim zostan wykorzystane przez aplikacj.

liedostateczne filtrowanie pl tekstowych


Przypumy, e pewien przykadowy formularz HTML zawiera pole do wprowadzenia nazwiska. Podczas gdy zwykli uytkownicy wpisaliby w tym polu po prostu nazwisko, haker moe je wykorzysta do wstrzyknicia kodu SQL, ktry zmienia rezultat zapytania. Jeli kod PHP obsugujcy dane zapytanie umieszczaby nazwisko w zmiennej $name i wykonywa zapytanie z wykorzystaniem tej zmiennej, kod dla tego zapytania mgby wyglda podobnie do poniszego:
$sql = "Select * From jos_users Where name = "' . $name . "':":

Haker mgby po prostu wpisa, zamiast nazwiska, nastpujcy cig znakw:


dummytext' or 'a' = 'a

Kod SQL utworzony z uyciem tej wartoci brzmiaby wtedy:


$sql = "Select * From jos_users Where name = dummytext' or 'a' = 'a';

Podczas uruchomienia zapytania sprawdzanie ' a' = ' a' zwrcioby warto True dla kadego wiersza, przez co efektem wykonania zapytania byoby uzyskanie kompletnej listy uytkownikw! Przeraajce jest, e wstrzyknity moe by kady poprawny kod SQL, jak pokazano poniej:
dummytext'; Drop Table jos_users: Select * From jos_polls Where title ='

Ten kod zniszczyby cakowicie tabel uytkownikw Joomla!. Przesanie danych wejciowych z formularza do prostej procedury przetwarzajcej wyeliminowaoby wszelkie niebezpieczestwo pynce z atakw tego typu.

ibsuga pl tekstowych w Joomla! i PHP


Joomla! zawiera procedury generujce znaki unikowe dla kadego znaku, ktrego nie mona normalnie wykorzysta w zapytaniu do bazy danych. Na przykad apostrof ( ' ) nie moe zosta uyty w standardowym wyraeniu Insert. Jednake sekwencja specjalna, tworzona z zastosowaniem lewego ukonika (\), umoliwia wykorzystanie w systemie MySQL znakw specjalnych. W ten sposb zastosowanie apostrofu poprzedzonego lewym ukonikiem ( \ ' ) spowoduje zapisanie znaku apostrofu w polu bazy danych. Takie przetworzenie cigu znakowego wprowadzonego przez uytkownika uniemoliwia atak ze wstrzykniciem kodu, poniewa apostrof nie jest ju traktowany jako element wyraenia SQL. Zamiast tego znak apostrofu (i dowolny kod, ktry mia by wstrzyknity) jest po prostu zapisywany jako cz cigu znakowego. Prawdopodobnym rezultatem takiego zapytania byoby zwrcenie komunikatu o bdzie, poniewa do tak przetworzonego kodu nie pasowayby adne rekordy.

370

Joomla!. Profesjonalne tworzenie stron WN 1W W przypadku kodu PHP moesz wykorzysta metod generowania znakw unikowych dla danej bazy danych. Dla MySQL moesz posuy si funkcj PHP mysql_real_escape_string() do sformatowania cigu znakowego:
$name = mysql_rea1_escape_string($name);

Joomla! dostarcza abstrakcyjnej metody zwanej getEscaped(), zwracajcej cig znakowy ze znakami unikowymi, ktry mona wykorzysta niezalenie od docelowej bazy danych. Mimo e aktualnie Joomla! zapewnia obsug wycznie MySQL, w przyszoci, kiedy zostan dodane inne rda danych, kod napisany z wykorzystaniem metody dostpnej w Joomla!, zamiast bezporedniego kodu PHP, nadal bdzie dziaa poprawnie. Cig znakowy ze znakami unikowymi mona uzyska za pomoc obiektu JDatabase, jak to pokazano poniej:
$db =& JFactory::getDB0(); $name = $db->getEscaped($name):

Gdyby spreparowany kod z pierwszego przykadu zosta poprawnie przytoczony, w zapytaniu SQL zostaby uyty poniszy nieszkodliwy cig znakw:
dummytext\ 1 or \'a\' = \'a

Nastpny przykad wygldaby tak:


dummytextV : Drop Table jos_users: Select * From jos_polls Where title = V

PHP udostpnia funkcj znan jako magic quotes, ktra automatycznie dodaje lewe ukoniki do wszystkich danych wejciowych odebranych z rde zewntrznych (takich jak przegldarka WWW). W szstej wersji PHP usunito opcj magic quotes, dlatego lepiej jest rcznie zaprogramowa dodawanie znakw unikowych, jak pokazano wyej. W ten sposb zapewnisz bezpieczne dziaanie swojego kodu bez modyfikacji, niezalenie od wersji PHP zainstalowanej na serwerze.

Brak typizacji pl
Inn form ataku poprzez wstrzyknicie jest przekazanie bezporednio do silnika SQL wartoci, ktre nie s typowane (np integer, float itd.). Na przykad warto id, pobrana z cigu zapytania, moe zosta przekazana bezporednio do zapytania SQL za pomoc poniszej instrukcji:
$sql = "Select * From jos_users Where id = " . $ i d . ";";

W tej sytuacji moe zosta wykorzystany ten sam typ wstrzykiwanego kodu, jak przy cigach znakowych bez znakw unikowych:
1; Drop Table jos_users:

Dlatego zawsze, kiedy pobierasz wartoci z cigu zapytania lub z formularza, upewnij si, e dokonae typizacji w PHP. Na przykad eby odczyta $id jako warto typu integer, mgby wykorzysta poniszy kod PHP:
$id = intval(Sid):

Rozdzia 14. Bezpieczestwo Joomla!

371

Typizacja zmiennych automatycznie unieszkodliwi kady wstrzykiwany kod, ktry mgby si pojawi w danym polu. Moe te spowodowa wygenerowanie bdu, jeli wybrane typy dla zmiennych s bez sensu. Jeli wykorzystujesz metody JRequest: :getVar() lub JRequest: :get(), aby pobra dane z formularza lub z cigu zapytania, Twj kod jest ju zabezpieczony, poniewa te funkcje zapewniaj bezpieczny filtr dla wszystkich przychodzcych danych. Wszelkie dane uzyskane z pominiciem tych funkcji musz zosta sformatowane i typizowane zawsze, kiedy to moliwe.

liestandardowe daniaszczeglnie przez fljaksa


Ataki SQL Injection pochodz nie tylko ze stron z formularzami. Coraz wiksza liczba stron implementuje technologi Ajax, ktra tworzy w systemie dania omijajce wikszo zwyczajnych metod sprawdzania danych. Oznacza to, e gwatowny wzrost popularnoci Ajaksa wie si z powstaniem rnorodnych potencjalnych punktw naruszenia zabezpiecze. Szczeglna uwaga powinna zosta zatem powicona tym czciom systemu, ktre dostarczaj odpowiedzi na zapytania Ajaksa. Podczas projektowania responder naley zada sobie nastpujce pytania: Czy typowaem wszystkie dane dania? Kada porcja informacji, ktra pochodzi z zewntrz, powinna zosta przetworzona i typowana. Zapobiega to prawie kadej podstawowej formie ataku przez wstrzyknicie. Naley narzuci limity dla przesyanych danych, aby zapobiec wszystkim rodzajom bdw przepenienia, ktre mogyby sprawi, e system stanie si podatny na ataki. adne nazwisko nie, powinno by dusze ni 50 znakw, dlatego warto przyci cig znakowy do tej wielkoci, aby zapobiec faszywym wpisom. Czy powinienem ograniczy zakres dostpnych danych? Przykadowo komponent Ajaksa moe oferowa wywietlacz Who-Is (kto to), ktry pokazuje informacj o kraju pochodzenia uytkownika. Jednake zapytanie jest wykonywane na caej tabeli kontaktw, przez co atak SQL Injection mgby skutkowa ujawnieniem informacji prywatnych, takich jak adres zamieszkania. MySQL zapewnia obsug widokw, ktre umoliwiaj filtrowanie danych z tabeli. Jeli doczymy do widoku tylko dane, ktre s uywane przez komponent ajaksowy, to nawet przeprowadzenie skutecznego ataku nie ujawnioby wicej informacji, ni te, ktre s publicznie dostpne. Czy jest to informacja, ktr chc dostarczy przez Ajaksa? Wiele firm udostpnia cae bazy danych lub katalogi poprzez dania ajaksowe. Prosty program moe jednake zosta tak skonstruowany, by moliwe byo wykonywanie sekwencyjnych da do responder Ajaksa i zebranie wszystkich informacji z bazy danych. Upewnij si, e dokadnie wiesz, jakie dane bdziesz udostpnia, w przeciwnym razie konkurencja moe wykorzysta Twoj wasn baz danych do zdobycia przewagi rynkowej.

To tylko kilka uwag, ktre powiniene rozway na obecnym, pocztkowym etapie rozwoju technologii Ajax. Ta nowa technologia spowoduje prawdopodobnie kolosaln liczb narusze

372

Joomla!. Profesjonalne tworzenie stron WN 1W zabezpiecze, zanim jej saboci zostan dostrzeone i poprawione. W przypadku implementacji rozwizania w technologii Ajax upewnij si, e zapoznae si z najaktualniejsz literatur na temat bezpieczestwa i rozumiesz najnowsze zagroenia ze strony hakerw.

Cross-Site Scripting (XSS)


Cross-site Scripting (XSS) jest metod polegajc na wstawianiu kodu JavaScript lub referencji do obiektu w kodzie HTML przez uytkownikw, ktrym udostpniono edytor HTML. Taki kod moe otworzy ukryte okno w systemie uytkownika i zapisywa informacje, takie jak nazwy uytkownikw i hasa wpisywane w innych oknach przegldarki. Odkd strony umoliwiaj publikacj treci nadesanych przez uytkownika (kamie wgielny dynamicznej interakcji Web 2.0), wystpuje podatno na atak XSS, ktry jest bardzo niebezpieczny i naley si przed nim chroni. Atakom tego typu przeprowadzanym z wykorzystaniem interfejsu uytkownika Joomla! mona zapobiega (zobacz podrozdzia Bezpieczestwo Joomla!" dalej w tym rozdziale). Rozpowszechnienie dostpnych rozszerze, ktre pozwalaj na przesanie kodu HTML (od ksig goci do forw), oznacza, e musisz by czujny, aby zapobiec atakom tego rodzaju. Upewnij si, e wszystkie nowe rozszerzenia filtruj znaczniki wykorzystywane przez t metod ataku (przede wszystkim <object> i <script>), zanim wprowadzisz je na swoj stron. PHP ma kilka wbudowanych funkcji, ktre mog Ci pomc. Funkcja s t r i p t a g s O usunie wszystkie znaczniki HTML, XML oraz PHP z przekazanego tekstu i zwrci surowy tekst. Moe to by bardzo efektywnie uyte w Twojej aplikacji, jeli nie przewidujesz formatowania tekstu przy wprowadzaniu danych. W przeciwnym przypadku powiniene wykorzysta BBCode, ktry pozostanie nienaruszony w wyniku dziaania tej funkcji. Funkcja PHP h t m l e n t i t i e s ( ) zamienia wszystkie znaki niebdce aciskimi literami, cyframi, apostrofem 3 lub znakami odstpu 3 na encje HTML. Moesz take wykorzysta wyraenia regularne, aby usun z pl formularza wszystkie niepodane znaki. W przypadku pola przeznaczonego na wpisanie nazwiska moesz wykorzysta ponisze wyraenie:
$myString = preg_replace("/["a-zA-Z \-0-9]/". "", $myString);

Skanowanie katalogw
Wiele serwerw sieci WWW udostpnia opcj przegldania katalogw. Odwiedzajcy moe uzyska dostp przez poczenie HTTP z katalogiem i zobaczy list zawartych w nim plikw, jeli katalog ten nie zawiera pliku o nazwie default.htm, default.asp, index.html lub index.php. Umoliwienie przegldania katalogw jest jawnym zaproszeniem hakerw do zdobycia
2

Istnieje moliwo zmiany zachowania wzgldem cudzysoww i apostrofw poprzez drugi parametr htmlentitiesO, PHP: htmlentlties Manual [online] [dostp 28.08.2008] http://php.net/htmlentities przyp. tum.
3

Takie jak cudzysowy, znaki wikszoci itd. Jej dziaaniu podlegaj take znaki diakrytyczne przyp. tum. W zalenoci od typu i konfiguracji serwera mog by to pliki o innych nazwach p r z y p . tum.

Rozdzia 14. Bezpieczestwo Joomla!

373

sporej porcji informacji o Twoim systemie. Jeli haker posiada wiedz na temat udostpnianych aplikacji i o systemie operacyjnym, moe dowiedzie si niemal wszystkiego, od nazw plikw konfiguracyjnych, p o oglne informacje o systemie. W i k s z o s e r w e r w m a t o p c j w y c z o n d o m y l n i e . Jeli j e d n a k T w o j a strona j e s t przechowywana na starszym serwerze, sprawd, czy odpowiednia dyrektywa zostaa wyczona. Bardziej prawdopodobne jest, e ta forma ataku zostanie przeprowadzona rcznie przez hakera, poniewa rozpoznanie saboci systemu w y m a g a wykorzystania penej wiedzy. Jako rodek z a p o b i e g a w c z y J o o m l a ! u m i e s z c z a w k a d y m katalogu i p o d k a t a l o g u strony pusty plik index.html, ktry m a zapobiec m o l i w e m u wtargniciu. Niestety, wikszo rozszerze i szablonw nie podejmuje dziaa prewencyjnych tego typu, dlatego powiniene zrobi to samodzielnie z wszystkimi katalogami dodatkw dla systemu Joomla!.

tak Denial of Service (DoS)


Atak denial of service ( o d m o w a usugi DoS) jest p r b u n i e m o l i w i e n i a skorzystania z serwera lub innego zasobu autoryzowanym uytkownikom. N a j c z s t s z f o r m tego ataku jest przecienie routera lub serwera wieloma daniami, przez co maszyna nie jest w stanie o d p o w i a d a na d a n i a f a k t y c z n y c h u y t k o w n i k w . I n n c z s t f o r m a t a k u j e s t p r b a zmuszenia serwera lub routera do zresetowania, co powoduje niedostpno zasobw podczas procesu p o n o w n e g o u r u c h a m i a n i a . O c z y w i c i e , k i e d y restart s y s t e m u d o b i e g n i e k o c a , atakujcy wysya kolejne dania resetu i powtarza cay proces. Hakerzy, aby unikn wyledzenia, a take by osign punkt krytyczny faszywych da, uruchamiaj atak typu DoS za porednictwem wirusa lub robaka, ktry rozprzestrzenia atakujcy kod na komputery osb postronnych. Jest to znane j a k o distributed denial of service attack. W okrelonym dniu i o okrelonej godzinie kod jest aktywowany i dotychczas niegrone komputery jednoczenie a t a k u j cel. Wikszo atakw DoS mona odeprze tylko na poziomie sprztowym, wic jeli zarzdzasz serwerem, upewnij si, e masz dobry firewall. Specjalne firewalle, znane jako zapory stanowe (ang. stateful firewalls), automatycznie rozpoznaj rnic midzy normalnym ruchem a ruchem w y g e n e r o w a n y m przez atak D o S i z a p o b i e g n przesaniu nieprawidowego ruchu do sieci. Filtr pakietw w O p e n B S D , zwany pf, zawiera funkcj synproxy, ktra poredniczy w ruchu midzy serwerem a internetem. Blokujc sfaszowany ruch, ma t s a m rol, ktr ma zapora stanowa. Wicej informacji na temat pf moesz znale na www.openbsd.org/faq/pf.

'odsuchiwanie pakietw HTTP


Natura komunikacji w sieci W W W polega na dzieleniu wysyanych i odbieranych informacji na mae porcje danych z w a n e pakietami i przesyanie ich przez internet. Pakiety z n a j d u j s w o j drog z komputera t r a n s m i t u j c e g o d o k o m p u t e r a d o c e l o w e g o , p r z e c h o d z c przez rne komputery i routery, zanim trafi do miejsca przeznaczenia. Stwarza to k o m p u t e r o w i

374

Joomla!. Profesjonalne tworzenie stron WN 1W


z n a j d u j c e m u si gdzie pomidzy n a d a w c i odbiorc moliwo skopiowania lub wywszenia" (ang. s n i f f ) przesyanych pakietw. Dane w sieci W W W s wysyane i odbierane w formacie HTTP hermetyzowanym wewntrz pakietw. P r o g r a m p o d s u c h u j c y (np. E f f e T e c h H T T P Sniffer) zbiera i d e k o d u j e pakiety zawierajce informacje protokou H T T P . Pniej program p r z e b u d o w u j e sesj H T T P i jest w stanie odtworzy pliki oraz dane, ktre zostay przechwycone. W p r z y p a d k u strony J o o m l a ! (lub k a d e j innej strony, ktra w y k o r z y s t u j e nieszyfrowane logowanie) program przechwytujcy moe potencjalnie podsucha informacje o hale i nazwie uytkownika. W p r z y p a d k u w d r o e n i a J o o m l a ! w internecie jest to mao p r a w d o p o d o b n e (i b a r d z o trudne), eby kto umieci p r o g r a m m i d z y k o c a m i transmisji i przechwyci te i n f o r m a c j e . W p r z y p a d k u u r u c h o m i e n i a J o o m l a ! w intranecie lub sieci lokalnej szanse i moliwoci penetracji s duo wiksze. W tych sytuacjach warto rozway zakup certyfikatu bezpieczestwa SSL, ktry umoliwia szyfrowanie ruchu midzy przegldark a serwerem W W W . Warto odwiedzi stron Verisign (iwww.verisign.com), eby dowiedzie si, jak dziaaj certyfikaty i w jaki sposb zapewniaj szyfrowanie danych. Po zainstalowaniu certyfikatu SSL na serwerze W W W powiniene mc p o c z y si ze stron, k o r z y s t a j c z a d r e s u U R L , t a k i e g o j a k https://www.przvklad.pl. A d r e s https:// o z n a c z a z a b e z p i e c z o n y H T T P " (ang. HTTP secure). D o m y l n y m portem w y k o r z y s t y w a n y m p r z e z https://jest 443 w m i e j s c e portu 80, u y w a n e g o do n o r m a l n e j komunikacji. Jeli chcesz zaszyfrowa ca komunikacj ze stron musisz po prostu ustawi katalog Joomla! j a k o gwny katalog serwera W W W 5 . M o e s z take wykorzysta technologi przeczania J o o m l a ! , ktra p o z w a l a na przeczanie midzy z a b e z p i e c z o n i n i e z a b e z p i e c z o n wersj strony. W ten sposb strony logowania, rejestracji, z prywatnymi informacjami, e-commerce lub moe nawet interfejs administracyjny m o g wykorzysta szyfrowan komunikacj, podczas gdy reszta komunikacji ze s t r o n j e s t nieszyfrowana. A b y w c z y b e z p i e c z n e l o g o w a n i e na stronie Joomla!, musisz n a j p i e r w a k t y w o w a SSL na s e r w e r z e W W W . N a s t p n i e musisz u k r y (Nie p u b l i k u j " ) modu logowania, tak aby niezabezpieczone logowanie byo niedostpne. Utwrz n o w pozycj menu, ktra utworzy o d n o n i k d o e k r a n u l o g o w a n i a z w y k o r z y s t a n i e m s z y f r o w a n i a SSL. O d n o n i k musi by poczony z k o m p o n e n t e m Uytkownik/Logowanie, jak pokazano to na rysunku 14.1. Po w y w i e t l e n i u ekranu edycji e l e m e n t u m e n u u s t a w Tytu na Logowanie. Rozwi ramk Parametry: Systemu i u s t a w o p c j Poczenie SSL na Wczone, j a k p r z e d s t a w i o n o to na rysunku 14.2. Ta opcja sprawi, e odnonik w menu bdzie zaczyna si od https://. To tyle! Kiedy uytkownik kliknie odnonik na stronie gwnej, zostanie wywietlony ekran l o g o w a n i a , taki j a k na r y s u n k u 14.3, a m a a k d k a w i d o c z n a na dole o k n a przegldarki bdzie zamknita, i n f o r m u j c , e s t r o n j e s t zabezpieczona.

W przypadku Apachc odpowiada za to dyrektywa ServerRootprzyp.

tum.

Rozdzia 14. Bezpieczestwo Joomla!


tsunek 14.1. worzenie nowego lementu menu oczonego komponentem 'ytkownik/ ogowanie

375

Pozycja menu:

[utwrz]

WytHt-r/ typ pozycji menu # gg cze wewntrzne

ysunek 14.2. Istawianie opcji doczenie SSL i a Wczone

P o z y c j a m e n u : [ utwrz]

yN

- /

I J

Typ pozycji menu Zaloguj - Wyloguj Wywietla standardowe stiony Logowanie i Wylogowanie Szczegy pozyc ji menu

Parametry*. ftodstawowe P<itametry: systemu

P*k3 tytut sir co i

Nie

* Tak

T,,,*,,,. lc:: index.php?option=com_useriview=login W, . Min Menu

Potczei* S-M Wy+czone Ignoiuj * Wczone

Logowanie

Koijiio Posiorn dostpu r

Nowa pozycja menu z n ^ i r s i na kocu. Kolejno B ^ g Specjalny W nowym ok me z pask lem nawigacyjnym W nowym oknie bez paska nawigacyjnego

ysunek 14.3. Komponent Uytkownik/Logo wanie zostanie wywietlony na zabezpieczone i stronie

N a z w a uytkownika

Hasto

Pamitaj mnie i | Zaloguj |

Nie p a m i t a s z h a s t a ? * Nie p a m i t a s z n a z w y ? Zarejestruj

376

Joomla!. Profesjonalne tworzenie stron WN 1W

Bezpieczestwo serwera WWW


N a j n i s z y m p o z i o m e m ataku i najmniej p r a w d o p o d o b n y m m i e j s c e m penetracji jest serwer W W W . Z a r w n o Apache, j a k i M i c r o s o f t ISS o b s u g u j dosownie miliony stron internet o w y c h . D o t y c h c z a s u p u b l i c z n i o n o i n f o r m a c j e tylko o kilku wamaniach. M i m o e takie r o z p o w s z e c h n i e n i e nie z a p o b i e g a w y s t p o w a n i u p r o b l e m w z bezpieczestwem, serwery te s bardzo dobrze chronione i zbadane pod ktem moliwych bdw. Zaatakowanie serwera Apache jest j e s z c z e mniej prawdopodobne, poniewa uruchamianie skryptw (takich jaki P H P lub Perl) nie jest obsugiwane przez serwer W W W , tylko przez oddzieln wtyczk lub komponent. Silniki uruchamiania skryptw s najbardziej bezporednio naraone na atak, dlatego bezpieczestwo A p a c h e nie jest g w n y m problemem.

Zabezpieczanie serwera Apache


S e r w e r A p a c h e , tu po zainstalowaniu, jest bardzo dobrze zabezpieczony. Serwery tego r o d z a j u o b s u g u j d u cz w i a t o w y c h s e r w e r w W W W , zatem zostay przetestowane i sprawdzone w kady moliwy sposb. Dlatego te, jeli nie w p r o w a d z o n o adnych zmian w konfiguracji, domylna instalacja Apache speni wikszo w y m o g w bezpieczestwa. Pomimo to istnieje kilka punktw, w ktrych moesz nieco poprawi bezpieczestwo systemu. A p a c h e jest d o m y l n i e b a r d z o d o b r z e z a b e z p i e c z o n y , j e d n a k atwo m o n a s p o w o d o w a p r z e z n i e r o z w a n y d o b r opcji e stanie si p o d a t n y na atak. D l a t e g o te, zanim zmienisz ktrekolwiek z domylnych ustawie, dobrze to przeanalizuj.

Konfiguracja .htaccess
W przypadku serwera A p a c h e prawa dostpu do plikw i katalogw m o g zosta zapisane w pliku zwanym .htaccess. Uprawnienia dostpu, ochrona hasem, blokowanie PHP, a take inne ustawienia zabezpiecze m o g zosta w nim okrelone. Ze wzgldu na potg tkwic w tym pliku A p a c h e zawiera ( d o m y l n i e ) o p c j e chronice g o przed dostpem z zewntrz przez przegldark. Plik .htaccess w y k o r z y s t y w a n y jest w systemie Joomla! gwnie do ustalenia praw dostpu i korzystania z mod_rewrite do tworzenia p r z y j a z n y c h " (,Search Engine Friendly SEF), u a t w i a j c y c h p o z y c j o n o w a n i e , a d r e s w (w rozdziale 13. z n a j d u j e si wicej informacji na ten temat). W r a z z pakietem instalacyjnym Joomla! dostarczany jest gotowy do uycia plik .htaccess pod n a z w htaccess.txt. Dziki temu plikowi wczysz mod_rewrite w sytuacji, gdy T w j system j e s z c z e z niego nie korzysta. A b y go aktywowa, zmie po prostu nazw pliku z htaccess.txt na .htaccess. W systemie Windows, za pomoc Eksploratora Windows, niemoliwa jest zmiana nazwy pliku na samo rozszerzenie (tak dla systemu wyglda plik .htaccess). Ten problem moesz rozwiza poprzez dodanie dyrektywy w pliku httpd.conf, ktra wymusza uycie pliku .htaccess z inn nazw. Moesz take otworzy wiersz polece i wykorzysta komend ren do zmiany nazwy pliku.

Rozdzia 14. Bezpieczestwo Joomla!

377

rrektywa ServerSignature
Im wicej informacji z d o b d z i e haker na temat T w o j e g o systemu, tym p r e c y z y j n i e j s z y c h metod moe uy przeciwko T w o j e j stronie. On i tak wie (wie to take nawet pocztkujcy haker), z jakiego typu serwera korzystasz, wic raczej nie uatwiaj m u sprawy, dostarczajc dodatkowych informacji, takich jak numer wersji, nazwa systemu operacyjnego itd. to nie ley w T w o i m interesie. N i e s t e t y , spora cz tych i n f o r m a c j i j e s t d o s t a r c z a n a p r z e z ServerSignature za k a d y m r a z e m , g d y z o s t a j e w y g e n e r o w a n a strona (np. k o m u n i k a t o bdzie). Dodanie nastpujcej dyrektywy do Twojego pliku httpd.conf wyczy wywietlanie sygnatury:
ServerSignature off

rrektywa ServerTokens
Sporo informacji jest dostarczanych w sygnaturze zwracanej w odpowiedzi na kade danie strony. D y r e k t y w a ServerTokens p o z w a l a Ci ustali, ile informacji bdzie d o s t a r c z a n y c h w odpowiedzi na danie strony. Istnieje sze m o l i w y c h u s t a w i e tej d y r e k t y w y . S to (w porzdku malejcym): Fuli, OS, Mi ni mai, Minor, Major i Prod. Powiniene doda nastpujc dyrektyw, ktra s p o w o d u j e dostarczanie najmniejszej iloci informacji:
ServerTokens Prod

Imowa dostpu do plikw z danym rozszerzeniem


Przydatn f u n k c j poprawiajc zabezpieczenia, dostpn w Apache, jest moliwo zablok o w a n i a d o s t p u p r z e z p r z e g l d a r k d o p l i k w d a n e g o typu. Dziki w y k o r z y s t a n i u tej moliwoci moesz zablokowa dostp z zewntrz do plikw, ktre nie powinny by dostpne przez przegldark (np. pliki .log). D o m y l n a k o n f i g u r a c j a w pliku httpd.conf powinna zawiera wpis blokujcy dostp przegldarki do pliku .htaccess. Jeli przejrzysz dokadnie plik konfiguracyjny, powiniene natrafi na kod podobny do poniszego:
<FilesMatch "\.ht"> Order allow.deny Deny from all </FilesMatch>

Kod ten p o w o d u j e o d m o w d o s t p u d o w s z y s t k i c h p l i k w .htaccess (a take p l i k w .htpasswd). A b y z a b l o k o w a dostp do p l i k w dziennika, m o e s z s k o p i o w a poprzedni fragment i zamieni wyraenie FilesMatch na ponisze:
<Fi1esMatch - "\.log$">

378

Joomla!. Profesjonalne tworzenie stron WN 1W


A b y zablokowa dostp do danego katalogu, musisz uy elementu Di rectory:
<Directory ~ "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/li brari es"> Order allow.deny Deny from al 1 </Directory>

Jeli uytkownik sprbuje za porednictwem przegldarki pobra pliki w katalogu 1 libraries lub w d o w o l n y m p o d k a t a l o g u (istniejcym lub nieistniejcym), zostanie zwrcona strona z bdem 403 Forbidden Page.

Bezpieczestwo PHP
P H P jest p r a w d o p o d o b n i e n a j w a n i e j s z technologi, ktr naley zabezpieczy, poniewa jest najbardziej podatna na atak. Ma take d u liczb opcji konfiguracyjnych, ktre mog stworzy luki w zabezpieczeniach. Jeli atakujcemu uda si uruchomi skrypt z pominiciem naoonych ogranicze, to istnieje wielkie niebezpieczestwo, e intruz przejmie cakowit kontrol nad systemem. P i e r w s z y m k r o k i e m d o z m n i e j s z e n i a p o t e n c j a l n e g o n i e b e z p i e c z e s t w a dla s y s t e m u jest sprawdzenie, czy w adnych plikach nie ma wywoa funkcji phpi nfo(). Funkcja ta znakomicie n a d a j e si do badania systemu i okrelania opcji konfiguracyjnych, zatem moe dostarczy hakerowi dokadnych informacji o systemie PHP. Haker moe wykorzysta j e jako wskazwki, w jaki sposb m o n a dokona wamania. Po sprawdzeniu, czy nie s ujawniane informacje na temat serwera, powiniene ustawi kilka dyrektyw PHP, aby dodatkowo zabezpieczy system. Dziki temu nie bdzie on obiecujcym celem dla odwiedzajcego hakera. Pomimo e system Joomla! moe funkcjonowa poprawnie bez z a s t o s o w a n i a p o n i s z y c h r o d k w ostronoci, z a o s z c z d z i s z sobie wielu zmartwie, jeli dopilnujesz bezpiecznej konfiguracji serwera Joomla!. Z szstej wersji PHP wyeliminowano trzy czsto uywane funkcje (register globals, magie quotes i safe mode). Brak funkcji magic quotes (zobacz podrozdzia ,,SQL Injection " we wczeniejszej czci tego rozdziau) sprawi, e pocztkujcy programici bd musieli bardziej uwaa podczas pisania kodu.

PHP Safe Mode


W sytuacji g d y safe mode (tryb b e z p i e c z n y ) j e s t w c z o n y , skrypty m a j dostp tylko d o katalogu ich w a s n e j witryny. T o u n i e m o l i w i a h a k e r o m na w s p d z i e l o n y m systemie wykorzystanie skryptw do czytania plikw i informacji z katalogw nienalecych do nich. Korzystanie z safe mode ogranicza take czas wykonywania skryptu, zuycie pamici i dostp do niektrych funkcji systemowych (takich j a k execO, unlink O i copy O). Dobrze jest mie wczony safe mode w wielu sytuacjach, jednake niektre programy i komponenty nie bd dziaay waciwie, kiedy ten tryb jest aktywny.

Rozdzia 14. Bezpieczestwo Joomla!

379

Safe mode jest wczony na wikszoci wspdzielonych serwerw PHP. Moesz sprawdzi, czy ten tryb jest wczony poprzez uruchomienie funkcji phpi nfoC) i sprawdzenie Configuration/PHP Core w p o s z u k i w a n i u d y r e k t y w y safejnode. M o e s z z m i e n i u s t a w i e n i e tej dyrektywy w pliku php.ini. Jeli korzystasz z PHP na Microsoft IIS, nie musisz uywa safe mode, poniewa kady serwer wirtualny m o e dziaa na innym koncie uytkownika. Dopki uprawnienia u y t k o w n i k w s poprawnie ustawione, dostp do informacji z innego konta nie jest moliwy. Safe m o d e zostao usunite z PHP z wersji szstej i pniejszych. Wprowadzane ograniczenia daway faszywe poczucie bezpieczestwa. Poczwszy od wstpnej implementacji, miao by to prowizoryczne zabezpieczenie, stosowane dopki programici nie udostpni odpowiednich opcji w serwerach WWW. Wikszo serwerw zawiera ju takie opcje.

IP fl0C_P00l
Dyrektywa doc_root p r z y j m u j e j a k o warto cig z n a k w , ktry okrela g w n y katalog uruchamiania skryptw PHP. W przypadku wczonego safe mode aden skrypt z n a j d u j c y si poza tym katalogiem nie bdzie mg by uruchomiony. Katalog powinien zosta ustawiony w pliku php.ini, podobnie j a k poniej:
doc_root = "C:\Program Files\Apache Software Foundation\Apache2.2"

IP disablejunctions
Z powodu porzucenia safe mode w PHP istnieje spora liczba innych opcji, ktre m o g zosta wykorzystane w celu zabezpieczenia poszczeglnych e l e m e n t w PHP. N a przykad dyrektywa disable_functions moe zosta uyta do wyczenia funkcji, ktre mogyby by naduyte przez hakera. Wstawienie nastpujcej dyrektywy w pliku php.ini wyczy wypisane poniej funkcje bez w p y w u na dziaanie Joomla!:
di sable_functions = fi 1 e.fopen.popen.unl i nk.system,passthru,exec,proc_close, proc_get_status.proc_ni ce.proc_open.proc_termi nate,shell_exec

Na serwerze w d r o e n i o w y m warto rozway dodanie funkcji phpi nfo() do powyszej listy. Dziki temu j e l i istniej jakie pliki, ktre w y w o u j t funkcj haker nie bdzie mg ich wykorzysta do zdobycia informacji dostarczanych przez phpi nfo(). Z a n i m w p r o w a d z i s z j a k i e k o l w i e k z m i a n y w k o n f i g u r a c j i , u p e w n i j si, e r o z u m i e s z ich konsekwencje. W przeciwnym wypadku moesz wyczy f u n k c j w y k o r z y s t y w a n przez jedno z rozszerze, przez co ograniczysz funkcjonalno caej strony.

IP disable _classes
P o d o b n i e j a k di sabl e_functi ons, di sabl e_cl asses p r z y j m u j e j a k o a r g u m e n t list klas do wyczenia, oddzielonych przecinkami. Funkcja ta uniemoliwia wykorzystanie okrelonych klas w kodzie PHP. Kiedy pisaem t ksik, dyrektywa disable_classes bya mao uyteczna.

380

Joomla!. Profesjonalne tworzenie stron WN 1W


W przyszoci, gdy p l a t f o r m y oparte na klasach ( w c z a j c w to p l a t f o r m Joomla!) stan si bardziej zoone, a ich uycie zagrozi bezpieczestwu, ta opcja okae si bardzo uyteczna. A b y wyczy klas Di rectory, docz ponisz dyrektyw do pliku
di sable_classes=Di rectory

php.ini:

PHP display.errors
U s t a w i e n i e m , ktre p r a w i e na p e w n o chcesz w c z y na serwerze testowym, a wolaby wyczy na serwerze wdroeniowym, jest di spl ay_errors. Kiedy to ustawienie jest wczone, wszystkie bdy i ostrzeenia, ktre wystpi podczas uruchamiania kodu PHP, s przekaz y w a n e d o p r z e g l d a r k i , r a z e m z n a z w pliku i n u m e r e m linii, w ktrej wystpi bd. M o e s z wczy t opcj w pliku php.ini za p o m o c nastpujcej dyrektywy:
display_errors = On

Informacje o bdach s przydatne, kiedy tworzysz kod, poniewa dziki nim moesz szybko usun usterki. Pomocne s take ostrzeenia, ktre czsto trafiaj tylko do dziennika bdw. Bez w z g l d u na to, czy ta o p c j a j e s t w c z o n a , czy nie, bdy i ostrzeenia s zapisywane do pliku error.log w katalogu \logs serwera Apache, o ile tylko opcja log_errors pozostanie wczona (jest to d o m y l n e ustawienie). U p e w n i j si, e u s t a w i e p a r a m e t r display_errors na Off na s e r w e r z e w d r o e n i o w y m . W przeciwnym razie moesz dostarczy hakerowi wielu informacji na temat serwera W W W , np. n a z w y plikw, katalogw, zmiennych i prawa dostpu. M o g one zosta wykorzystane do zdobycia nieautoryzowanego dostpu lub uszkodzenia strony.

PHP expose_php
W s p o m n i a n a w c z e n i e j d y r e k t y w a ServerTokens s e r w e r a A p a c h e p o w o d u j e wysyanie i n f o r m a c j i p o k a d y m daniu strony. D y r e k t y w a expose_php docza do nich informacje na temat serwera. Domylnie ta opcja jest wczona, jednak aby poprawi zabezpieczenia, powiniene wyczy j na serwerze p r o d u k c y j n y m . Aby wyczy dostarczanie informacji o serwerze PHP, ustaw t dyrektyw w pliku php.ini:
expose_php = Off

Bezpieczestwo MySQL
Serwer baz danych M y S Q L moe przechowywa du liczb wanych, prywatnych informacji. Jeli platforma Joomla! jest wykorzystywana do zarzdzania kontaktami lub e-commerce, potencjalny dostp do prywatnych informacji uytkownikw moe by niepodany. Dlatego warto zapozna si z krtkim (lecz znaczcym) przewodnikiem M y S Q L General Security Issues", ktry m o n a znale pod adresem: http://dev. mysl. com/doc/refman/5. O/en/security, html

Rozdzia 14. Bezpieczestwo Joomla!

381

ezpieczestwo Joomla!
System Joomla! zosta z b u d o w a n y tak, aby zapewni bezpieczestwo bez zmian w konfiguracji. Istnieje jednak spora liczba drobnych ustawie, ktrymi mona poprawi kilka j e g o sabych punktw. Cay czas pojawiaj si n o w e zagroenia, hakerzy w y n a j d u j n o w e metody omijania zabezpiecze. Korzystanie z aktualnej wersji Joomla! zmniejsza ryzyko wamania. Najlepszym sposobem uzyskiwania biecych informacji dotyczcych p r o b l e m w bezpieczestwa Joomla! jest zapisanie si do Security Related Announcements". Wwczas bdziesz o t r z y m y w a e - m a i l e z i n f o r m a c j a m i na temat b e z p i e c z e s t w a i w s z y s t k i e alerty, ktre w y m a g a j uwagi. A b y si z a p i s a , p o s z u k a j w i n t e r n e c i e (w p r z y p a d k u z m i a n y a d r e s u ) lub odwied poniszy temat na forum: http://forum.joomla.org/index.php/topicJ2522L0.html

suwanie plikw instalacyjnych


Po u k o c z e n i u instalacji u p e w n i j si, c z y u s u n e f o l d e r \installation i w s z y s t k i e pliki w nim zawarte. Gdyby haker uruchomi p o n o w n i e proces instalacji na serwerze z dziaajc stron, moliwe byoby cakowite usunicie jej zawartoci. Aby do tego nie dopuci, sprawd, czy pliki instalacyjne zostay usunite z serwera W W W 6 .

lytor HTML Joomla!


Jeli zezwalasz na umieszczanie na stronie treci nadesanych przez u y t k o w n i k w , istnieje prawdopodobiestwo, e kto sprbuje przeprowadzi atak X S S na system, jak to opisano wczeniej w podrozdziale Cross-Site Scripting (XSS)". Upewnij si, e ograniczye moliwoci edytorw, ktre s dostpne dla uytkownikw. Korzystajc z Plugin Managera, moesz ustawi parametry edytorw tekstu wykorzystywanych przez Joomla!. Prawie zawsze moliwe jest ustawienie opcji, dziki ktrym niebezpieczne treci s automatyczne usuwanie z treci nadsyanych przez u y t k o w n i k w . Za p o m o c T i n y M C E dziki opcjom Czy podczas zapisu i Czy przy starcie mona automatycznie usun niebezpieczne elementy z artykuw (zobacz rysunek 14.4). Domylnie wczona jest tylko opcja Czy podczas zapisu, a Czy przy starcie nie. T drug potrzebujesz tylko w sytuacji, jeli przypuszczasz, e nieoczyszczony kod znajduje si j u w bazie danych. Istnieje kilka sytuacji, kiedy f u n k c j a Czy podczas zapisu z a p o b i e g n i e T w o i m c e l o w y m dziaaniom (np. wstawieniu do artykuu filmu z YouTube), p o n i e w a kod zostanie uznany za niebezpieczny. Zamiast w y c z a t f u n k c j , p o p r a w rcznie artykuy, ktrych dotyczy problem. Podczas wprowadzania zmian wybierz opcj No Editor i w s t a w waciwy kod. W przypadku pozostawienia folderu 1 installation po zakoczeniu instalacji Joomla! zablokuje dziaanie strony, Joomla! Help Site Browser Installation (the easy way)[online] [dostp: 26.08.2008] http://help. joomla. org/content/view/39/132/przyp. tum.

382

Joomla!. Profesjonalne tworzenie stron WN 1W

Rysunek 14.4. Dziki opcji Czy podczas zapisu z kodu zostan usunite niektre elementy kodu HTML i znaczniki skryptw, ktre mogyby zagrozi bezpieczestwu

N a licie p a r a m e t r w T i n y M C E z n a j d u j e si u s t a w i e n i e , ktre u m o l i w i a d u o wiksz k o n t r o l . O p c j a Zabronione elementy p o z w a l a Ci okreli e l e m e n t y kodu H T M L , ktre zostan usunite z wprowadzonego tekstu. Domylnie w tym polu znajduje si tylko element applet. W celu poprawy zabezpiecze powiniene rozway wpisanie object, applet, iframe na t list. Uytkownicy nie bd mogli wykorzysta adnego elementu, ktry mgby zosta uyty do przeprowadzenia ataku takiego jak X S S . Oczywicie, powstrzyma to take uytk o w n i k w przed d o d a w a n i e m animacji Flash i innych dynamicznych treci.

Uruchamianie wewntrz systemu


Jeli haker uruchomi plik PHP z pominiciem systemu, moliwe s szkody rnego rodzaju. G d y tworzysz n o w e rozszerzenia (moduy, komponenty lub wtyczki), zawsze dodawaj kod, ktry s p r a w d z a , czy skrypt u r u c h a m i a n y jest przez Joomla!. Na pocztku pliku z kodem umie ponisz lini:
definecK '_JEXEC' ) or die ( 'Brak dostpu' ):

Jeli parametr _J EX EC nie zosta zdefiniowany (co oznacza, e skrypt nie zosta uruchomiony w systemie Joomla!), p r z e t w a r z a n i e kodu z o s t a j e p r z e r w a n e . Nawet p r y m i t y w n e testowe rozszerzenia p o w i n n y zawiera t lini, na w y p a d e k gdyby zostay odnalezione i wykorzystane do ataku przez hakera.

Rozwijanie i testowanie
Jeli p l a n u j e s z w d r o e n i e b e z p i e c z n e g o systemu Joomla!, musisz by w stanie sprawdzi konfiguracje i rozszerzenia na bezpiecznym systemie. Testy powinny odbywa si w caoci na serwerze testowym. Serwer testowy m o e by niedostatecznie zabezpieczony, zawiera roboczy kod i niesprawdzone rozszerzenia.

Rozdzia 14. Bezpieczestwo Joomla!

383

Serwer testowy jest j e s z c z e waniejszy z punktu widzenia bezpieczestwa, jeli z a j m u j e s z si tworzeniem oprogramowania. Testowanie skryptw i przykadowych rozszerze to tylko dwie czynnoci, jakie musisz w y k o n a podczas tworzenia kodu, ktry m o e stworzy wiele moliwoci dla hakera. Ataki s zazwyczaj wymierzane w najsabszy punkt systemu, a system projektowy bdzie mia ich wiele. Po zakoczeniu tworzenia o p r o g r a m o w a n i a powiniene przenie w peni s k o n f i g u r o w a n y system na serwer wdroeniowy. Nie powiniene jednak przenosi plikw konfiguracyjnych, takich jak php.ini i httpd.conf\ p o n i e w a serwer r o z w o j o w y p o w i n i e n mie zupenie inne ustawienia. Jeli niektre elementy systemu przestan dziaa w nowym, bardziej restrykcyjnym rodowisku (a stanie si to na pewno), znajd rdo problemu, zamiast wycza ustawienie odpowiedzialne za jego wystpowanie. Doprowadzi to do tworzenia lepszego oprogramowania dla Joomla! i solidniejszego kodu.

odsumowanie
Joomla! jest faktycznie bardzo bezpiecznym systemem. Mimo to poczenie wielu technologii sprawia, e system staje si podatny na atak, chyba e webmaster zrozumie istot zagroe i z a s t o s u j e o d p o w i e d n i e rodki p r z e c i w d z i a a n i a . W tym r o z d z i a l e d o k o n a n o p r z e g l d u sposobw postpowania w kwestiach bezpieczestwa Joomla!: Zrozumienie atakw, na ktre moe by naraony serwer W W W . Poprawa konfiguracji zabezpiecze serwera Apache. Doskonalenie konfiguracji w pliku php.ini do niebezpiecznych elementw PHP. w celu ograniczenia dostpu

Przyjcie polityki bezpieczestwa M y S Q L , dziki ktrej zapobiegnie si nieautoryzowanemu dostpowi do informacji. Konfigurowanie parametrw Joomla!, ktre jak najlepiej z a p o b i e g n potencjalnym atakom.

Z a b e z p i e c z e n i e s y s t e m u przed a t a k a m i z z e w n t r z j e s t b a r d z o w a n e , j e d n a k e f e k t y w n a kontrola dostpu uytkownikw wewntrz systemu odgrywa nie mniej istotn rol. Niestety, jest to obszar pewnych brakw w systemie Joomla!. W rozdziale 15. przedstawiono obszary, w ktrych systemowi temu brakuje moliwoci dostpnych w C M S - a c h w y s z e j klasy.

384

Joomla!. Profesjonalne tworzenie stron WN 1W

15
Czego Joomla! nie potrafi
Miae ju okazj pozna fenomenalny system zarzdzania treci ( C M S ) Joomla!. N a stronie internetowej C M S Matrix ( w w w . c m s m a t r i x . o r g ) , powiconej p o r w n y w a n i u aplikacji typu C M S , Joomla! ma 124 ze 140 w y s z c z e g l n i o n y c h cech. O g r o m n a liczba f u n k c j i sprawia, e Joomla! to silna konkurencja dla systemw kosztujcych setki, a nawet tysice dolarw. I s t n i e j j e d n a k pewne obszary, ktre p o d k r e l a j braki tego systemu, dlatego czasami warto skorzysta z innych aplikacji C M S , ktre o f e r u j bardziej z a a w a n s o w a n e i m p l e m e n t a c j e danych rozwiza. W tym rozdziale opisano pokrtce niedostatki systemu Joomla! dostrzeone w czasie pisania tej ksiki. Wraz z r o z w o j e m oprogramowania wiele spord brakujcych funkcji zostanie dodanych. Pamitaj jednak, e programici innych aplikacji nie pozostaj bezczynni, dlatego wynik p o r w n a n i a z k o n k u r e n c y j n y m i p r o d u k t a m i b d z i e w y g l d a p o d o b n i e t a k e w przyszoci. W p r o w a d z e n i e p i e r w s z e j wersji d a n e g o r o z w i z a n i a w Joomla! o z n a c z a bdzie, e k o n k u r e n c j a ma j u d r u g w e r s j f u n k c j i . Dlatego i n f o r m a c j e z a w a r t e w tym rozdziale, niezalenie od tego, kiedy czytasz t ksik, p o w i n n y o d z w i e r c i e d l a dystans dzielcy system Joomla! od innych produktw. Wielu zwolennikw przytoczyoby argument, e niedostatki Joomla! mona uzupeni dostpnymi rozszerzeniami. Jeli istnieje szeroko stosowane rozszerzenie, ktre bezproblemowo rozbudowuje system o dan funkcj (np. funkcjonalno eCommerce dziki rozszerzeniu Virtuemart), to nie jest ona wymieniana jako ograniczenie systemu Joomla!. Jeeli jednak dostpne rozszerzenia dodaj wycznie prymitywn implementacj danej opcji (np. kontroli wersji), zaznaczana jest sabo Joomla! w tej dziedzinie.

(ontrola wersji dokumentw


J e d n z najbardziej znaczcych funkcji, ktrych brak w Joomla!, jest kontrola wersji dokumentw. Praktycznie w s z y s t k i e k o m e r c y j n e aplikacje C M S (a take w s z y s t k i e produkty wysokiej klasy p o r w n y w a l n e z Joomla!) z a w i e r a j f u n k c j kontroli wersji. Kontrola wersji

386

Joomla!. Profesjonalne tworzenie stron WN 1W


ma krytyczne znaczenie dla zarzdzania treci, jeli nad materiaami pracuje kilku redaktorw i korektorw. Jest to take kluczowa cecha z punktu widzenia administratora. A b y zrozumie znaczenie funkcji kontroli wersji w systemach zarzdzania treci, wyobra sobie przepyw pracy (ang. workflow) w internetowej gazecie. Dziennikarz pisze artyku i w p r o w a d z a j e g o p o c z t k o w wersj do systemu. Nastpnie redaktorzy i korektorzy przeg l d a j artyku, d o d a j sugestie, uwagi lub z m i e n i a j tre. Kolejny krok to sprawdzanie z g o d n o c i z faktami i sugestie zmian w artykule. N a d a l s z y m etapie prawnicy przegldaj tre artykuu pod ktem kontrowersyjnych wypowiedzi. Ostatecznie na krytyk, jest dopiero niecisoci, a r t y k u p o p r a w i a n y j e s t p r z e z autora a k c e p t u j e on z m i a n y , o d p o w i a d a w p r o w a d z a p o p r a w k i i p r z e p i s u j e niektre f r a g m e n t y . Artyku publikowany po kilku korektach. Jeli p o j a w i si n o w e informacje lub dostrzeone zostan zmiany m o g zosta w p r o w a d z a n e take po publikacji.

Przedstawiony przebieg pracy internetowej gazety wymaga, na kadym etapie, wprowadzania z m i a n w oryginalnej treci. K a d a z nich m o e by d e s t r u k t y w n a (np. usunicie akapitu), konstruktywna (np. zarys dodatkowego, wyjaniajcego zdania) lub korygujca (np. poprawa interpunkcji). W systemach C M S z kontrol wersji kada zmiana p o w o d u j e zapisanie take poprzedniej wersji artykuu. Jeli n i e z b d n y j e s t p o w r t d o d a n e j wersji w celu p r z y w r c e n i a lub porwnania, system umoliwia odczytanie archiwalnej kopii artykuu. Wikszo systemw pozwala porwna dwie wersje artykuu, wywietlane obok siebie z rnicami zaznaczonymi kolorem. Wiele edytorw (np. j E d i t i Microsoft Word) zawiera f u n k c j w y g o d n e g o porwnywania wersji, wywietlanych w d w c h ssiadujcych oknach przedstawiono to na rysunku 15.1. Rysunek 15.1. Porwnanie wersji artykuw wywietlane w postaci dwch ssiadujcych okien moe by bardzo uyteczne l-4 J 2
; Plik gdyqa Widok Wgtaw Format yarzd2ia Iabela Okno X : Pomoc

9 artykull txt - Microsoft Word


Plik Pomoc J dycja Widok Wjtaw Format Narzdzia

iaa
Iabela Qkno > ~S / - A
100%

U J J J
; Zn.3L-riii p o d a n e : Zwyky tekst

J j i
> > r u kor "-i .

A / 1
Pula:* 'j

- I
j^I

. i

t'.,

Znaczniki pokazane w wersji kocowej

Poka*

Miae ju okazj pozna fenomenalny system stronie internetowej CHS Hatrix (www.cmsmat) porwnywaniu aplikacji typu CHS, Joomla! po; Ogromna liczba funkcji czyni Joomla! siln J setki, a nawet tysice dolarw. Istniej je< braki Joomla!. Czsto warto skorzysta z in) bardziej zaawansowane implementacje danych i

Jii:...

Hiae ju okazj pozna fenomenalny system stronie internetowej CHS Hatrix (www.cmsmati porwnywaniu aplikacji typu CHS, Joomla! po: Ogromna liczba funkcji czyni Joomla! siln ] setki, a nawet tysice dolarw. Istniej je< braki Joomla!. Czsto warto skorzysta z im bardziej zaawansowane implementacje danych i W tym rozdziale opisano pokrtce niedostatk: pisania tej ksiki. Wraz z rozwojem oprogrs funkcji zostanie dodanych. Pamitaj jednak, pozostaj bezczynni, dlatego porwnanie z kc miao identyczny rezultat teraz i w przysze danego rozwizania w Joomla1 oznacza bdzit wersj tej funkcji. Dlatego informacje zawai stanowi skuteczn podstaw oceny systemu J< Wielu zwolennikw podnioso by argument, e dostpnymi rozszerzeniami. Jeli istnieje s: bezproblemowo rozbudowuje system o dan funl dziki rozszerzeniu Virtuemart), nie jest oi systemu Joomla! Jeli jednak dostpne rozszt implementacj danej opcji (np. kontroli wer: w tej dziedzinie. c Kontrola wersji dokumentow
H]i3 I 1= E3 < sekcja

H]a

m 3 EP < sekcja 1 wrs 8 Kol. 1

str. 1

str. 1

Rozdzia 15. Czego Joomla! nie potrafi

387

W systemie Joomla! brakuje kontroli wersji w j a k i e j k o l w i e k postaci. Po w p r o w a d z e n i u i zapisaniu zmian w artykule stara wersja jest nadpisywana i nie ma sposobu, aby j przywrci. Uniemoliwia to implementacj systemu przepywu pracy dla d o k u m e n t w . J e d y n y m dostpnym rozwizaniem jest rozszerzenie Versioning, ktre pozwala przywrci ostatni wersj dokumentu za p o m o c funkcji c o f n i j " , nie jest to j e d n a k skuteczny system kontroli wersji.

mport, konwersja i eksport plikw


Chocia moliwoci Joomla! zwizane z wprowadzaniem artykuw s imponujce, praktycznie nie istnieje funkcja importu. Nie istnieje take funkcja automatycznego importowania treci artykuw z zewntrznych plikw. Systemowi brakuje take opcji konwersji, ktra pozwoliaby wprowadza artykuy zapisane w plikach zawierajcych tekst sformatowany (np. Microsoft Word, PDF, RTF itd.). Popularnym rdem materiaw na stron s biblioteki istniejcych plikw zawierajcych tre artykuw, dlatego brak obsugi tego rozwizania jest sporym przeoczeniem. Komercyjne systemy CMS pozwalaj na dynamiczny lub zautomatyzowany import dokumentw w wielu formatach, np. Microsoft Word, Microsoft Excel, Microsoft Outlook, zapisanych stron internetowych, X S L T dla danych X M L , TeX i BBCode. Aplikacje C M S rodzaju Vignette Web Content Management pozwalaj nawet na zautomatyzowany import plikw graficznych. Dopki funkcje konwersji nie zostan dodane do Joomla!, system nie bdzie w stanie speni wymogw organizacji posiadajcych du baz materiaw. Brakujc funkcjonalno mona atwo zaimplementowa w postaci rozszerzenia, jednak w czasie, kiedy pisaem t ksik, jedyne rozszerzenie tego typu pozwalao na konwersj z formatu DocBook. Rwnie znaczcy jest brak funkcji eksportu materiaw. Chocia moliwy jest bezporedni dostp do materiaw za pomoc narzdzi MySQL, nie istnieje wbudowana w system Joomla! opcja eksportu artykuw lub innych danych. Oznacza to trudnoci w przypadku chci przeniesienia danych ze strony Joomla! w inne miejsce, a take problemy podczas archiwizowania starych materiaw.

Jgraniczone funkcje zabezpiecze i autoryzacji


Model zabezpiecze przyjty w systemie Joomla! jest prymitywny w porwnaniu z konkurencj. Joomla! zawiera obsug omiu grup uytkownikw (Zastrzeony, Autor, Redaktor, Wydawca, Zaplecze, Operator, Administrator, Gwny administrator), do ktrych mona przypisa uytkownika. W porwnaniu z wieloma systemami bazodanowymi, ktre pozwalaj okrela grupy i role uytkownikw, elastyczno tego rozwizania jest ograniczona. Przykadowo jeli chcesz przyzna uprawnienia akceptowania i edycji artykuw w jednej kategorii asystentowi administratora, jest to niemoliwe ze wzgldu na szczegowy charakter okrelonych uprawnie. Podobnie byoby, gdyby chcia przyzna zarejestrowanym uytkownikom

388

Joomla!. Profesjonalne tworzenie stron WN 1W


moliwo przegldania wycznie dwch sekcji, jest to take niemoliwe przy obecnej implementacji. Rozszerzenie JACLPlus umoliwia rozbudowanie kontroli dostpu w systemie Joomla!, poniewa pozwala na utworzenie dodatkowych grup z naoonymi ograniczeniami w przegldaniu materiaw. Waciwa kontrola dostpu powinna by wbudowana w sam platform, choby ze wzgldw bezpieczestwa, dlatego nie jest moliwa skuteczna implementacja tej funkcji w postaci wtyczki. System nie obsuguje take zaawansowanych metod uwierzytelniania, takich jak Kerberos, Network Information System (NIS), Windows NT Lan Manager (NTLM) lub Server Message Block (SMB). Ogranicza to bezpieczestwo, poniewa domylnie informacje, takie jak nazwa uytkownika i haso, przesyane s w postaci zwykego tekstu, co pozwala na przechwycenie tych danych. Na szczcie, poczwszy od wersji 1.5, Joomla! zawiera wbudowan obsug SSL. Pozwala to na stronach logowania lub w aplikacjach e C o m m e r c e otworzy midzy przegldark a serwerem W W W bezpieczne, s z y f r o w a n e poczenie. Zabezpieczenie tego typu warto stosowa szczeglnie w sytuacji, gdy przesyane s poufne dane (np. w serwisie randkowym lub na stronie logowania, witryny eCommerce).

Rwnowaenie obciania i replikacja danych


Wiele aplikacji C M S zawiera funkcje rwnowaenia obcienia powizane z serwerem, poniewa z zaoenia stosowane s w przypadku witryn o duym nateniu ruchu. Kompleksowe podejcie do tego problemu jest systemowi Joomla! obce. Dodatkowo system nie zawiera wbudowanej funkcjonalnoci pozwalajcej na replikacj danych. Brakuje mu take sprawdzonej architektury obsugi serwerw klastrowych, ktre przechowuj (i pozwalaj na edycj) te same artykuy. Chocia MySQL ma opcje replikacji danych, implementacja tego rozwizania jest zym pomysem, jeli odpowiednie zmiany nie zostan wprowadzone w kodzie aplikacji. Istnieje kilka metod tworzenia rozproszonej, wieloserwerowej instalacji Joomla! z rwnowaeniem obcienia, niektre z nich opisano w rozdziale 11. Pamitaj jednak, e opisane rozwizania nie s w b u d o w a n e w Joomla!, dlatego nie mona liczy na podobn pomoc techniczn, jak w przypadku systemw ze zintegrowanym r w n o w a e n i e m obcienia i replikacj danych.

Poziomy interfejsu uytkownika, obsuga skrek


Joomla! posiada d w a g w n e interfejsy uytkownika: cz f r o n t o w i administracyjn. Inne systemy C M S pozwalaj na konstruowanie dodatkowych poziomw dopasowanych do uprawnie uytkownika, grupy lub danej roli. Oznacza to, e w zalenoci od tego, kto

Rozdzia 15. Czego Joomla! nie potrafi

389

zalogowany jest w systemie, wywietlany jest inny zestaw edytorw W Y S I W Y G , formularzy i innych o g l n y c h e l e m e n t w i n t e r f e j s u . M a e z m i a n y w p r o w a d z a n e w m e n u w o p a r c i u o grup uytkownika nie m o g si rwna z poziomami interfejsu uytkownika. Dodatkowo wiele konkurencyjnych aplikacji typu C M S pozwala uytkownikom dopasowa wygld interfejsu za p o m o c j e d n e j z dostpnych skrek. W Joomla! wszyscy u y t k o w n i c y ogldaj ten sam szablon. Namiastka personalizacji (gwnie zwizana z profilem uytkownika) moliwa jest dziki rozszerzeniu Community Builder. Rozszerzenie to wymaga jednak dalszego dopasowania, ktre umoliwi dostosowywanie wygldu strony do w y m a g a uytkownikw, dostpnego w innych systemach.

Standardowa funkcjonalno groupware


Groupware to oprogramowanie, ktry suy do organizacji, za porednictwem sieci, wsplnej pracy grupy u y t k o w n i k w . N a j p o p u l a r n i e j s z y m p r z y k a d e m aplikacji z tej kategorii j e s t prawdopodobnie Lotus Notes. Popularne f u n k c j e aplikacji groupware to m.in.: Publikacja w sieci Jedn z najwaniejszych opcji groupware jest publikowanie d o k u m e n t w i i n f o r m a c j i przez c z o n k w g r u p y lub d a n e g o projektu. Publikacja nie oznacza jednak oglnego, publicznego dostpu do materiaw, tylko na uytek w e w n t r z n y grupy p r a c u j c e j nad d a n y m z a d a n i e m . F u n k c j a ta p o w i z a n a jest czsto z systemem kontroli wersji i moliwoci wprowadzania komentarzy, co pozwala na w s p l n (i bezkolizyjn) m o d y f i k a c j d o k u m e n t w . Forum Komunikacja to niezbdny i kluczowy element wsppracy grupowej., P l a t f o r m , ktra u m o l i w i a s k u t e c z n k o m u n i k a c j , j e s t f o r u m d y s k u s y j n e . T e m a t y p o j a w i a j c e si na nim s b e z p o r e d n i o p o w i z a n e z p r o j e k t a m i , a wiadomoci m o g zawiera odwoania do zasobw projektu (np. arkuszy kalkulacyjnych, d o k u m e n t w i konferencji). Konferencje Konferencja moe by przeprowadzana w formie wideo, audio, w postaci czatu, w s p l n e g o n a r z d z i a d o s z k i c o w a n i a lub innej a p l i k a c j i . Uytkownicy w s p p r a c u j w czasie rzeczywistym, m a j moliwo wsplnej modyfikacji dostpnych materiaw. Email i komunikatory internetowe System wysyania e-maili suy w aplikacjach groupware do powiadamiania u y t k o w n i k w o n o w y c h publikacjach, dodanych dokumentach, wydarzeniach itd. Kalendarz i zarzdzanie czasem Kalendarze wykorzystywane s do koordynacji zasobw zarwno fizycznych, j a k i wirtualnych. Przykadowo istnieje moliwo rezerwacji p o k o j u k o n f e r e n c y j n e g o lub w i r t u a l n e g o pokoju na czacie do cotygodniowych spotka. Moliwe jest take skuteczne zarzdzanie czasem, p o n i e w a sporo r o z w i z a g r o u p w a r e s k o n s t r u o w a n y c h j e s t w taki s p o s b , e u y t k o w n i c y s p d z a j w systemie w i k s z o czasu pracy. System zarzdzania projektami Niektre aplikacje z a w i e r a j k o m p l e t n funkcjonalno zarzdzania projektami, wczajc w to ledzenie projektw, zarzdzanie zasobami i ludmi, wyznaczanie kamieni milowych i cieek krytycznych, a take inne f u n k c j e przydatne przy zarzdzaniu.

390

Joomla!. Profesjonalne tworzenie stron WN 1W


System przepywu pracy Systemy tego typu umoliwiaj realizacj projektw w przedsibiorstwach opartych na wiedzy. W ramach tego systemu poszczeglni uytkownicy sygnalizuj o ukoczeniu pewnych etapw, a dokumenty lub informacje zwizane z projektem s automatycznie p r z e k a z y w a n e do ludzi odpowiedzialnych za kolejne etapy. System zarzdzania wiedz Stosowane rozwizanie suy do zbierania, organizowania, zarzdzania i dzielenia rnych form informacji. Koordynacja wsppracy z systemami zewntrznymi Projekt, ktry ukoczono, m o e zosta opublikowany lub udostpniony w sieci zewntrznej, poza organizacj lub systemem. Przykadowo oprogramowanie groupware dla biur architektonicznych m o e automatycznie przesya ukoczone plany konstrukcyjne do odpowiedniego wykonawcy.

N i e k t r e s y s t e m y C M S w y b i e r a n e s g w n i e ze w z g l d u na f u n k c j o n a l n o groupware. W tym wypadku oprogramowanie suy do udostpniania dokumentw (np. arkuszy kalkulacyjnych z zarysem budetu lub prezentacji), komunikacji wewntrz systemu (np. za pomoc f o r u m , poczty elektronicznej itd.), a take ledzenia zmian wprowadzanych w materiaach umieszczonych w systemie. Niektre organizacje (szczeglnie te, w ktrych pracownikw dziel due odlegoci) o d n o t o w u j znaczcy wzrost produktywnoci dziki zastosowaniu rozwiza groupware. Poszczeglne funkcje aplikacji groupware dostpne s dla Joomla! w postaci indywidualnych rozszerze, jednak brak integracji tych narzdzi utrudnia stosowanie Joomla! jako narzdzia pracy grupowej. Na dodatek wykorzystanie Joomla! w tej roli nie jest dobrym rozwizaniem, p o n i e w a systemy g r o u p w a r e w y m a g a j b a r d z o z a a w a n s o w a n y c h opcji bezpieczestwa, ktrych brak w Joomla!.

Funkcjonalno portalu
Strony oparte na rozwizaniach C M S to najczciej elektroniczna wersja gazety lub periodyku. Aplikacje tego typu m o n a zastosowa take w roli portalu, gdzie pojedyncza strona suy za p u n k t d o s t p u d o r n o r o d n y c h i n f o r m a c j i ( k u r s w akcji, n a j n o w s z y c h w i a d o m o c i , prognozy pogody itd.), aplikacji internetowych (poczty, map, galerii zdj itd.), wasnej strony internetowej, rozwiza e C o m m e r c e (aukcji, ogosze, katalogw firm itd.). Z a z w y c z a j u y t k o w n i c y k o r z y s t a j c y z d a n e g o portalu s p d z a j na nim wikszo czasu powicanego na przegldanie intemetu. Odwiedzajcy portale takie jak Wp.pl (zobacz rysunek 15.2) m o g ledzi kursy akcji, sprawdza poczt, sucha internetowych audycji radiowych, przeglda anonse towarzyskie itp. Pojedyncze logowanie w systemie wystarcza do skorzystania z dostpnych usug, p o n i e w a informacje o uytkowniku (zarwno dane osobiste, jak i finansowe) z n a j d u j si w e wsplnej bazie. Oto lista najczstszych funkcji zintegrowanych w ramach portalu wraz z sugestiami, jak mona uzupeni Joomla! o brakujce moliwoci:

Rozdzia 15. Czego Joomla! nie potrafi


iysunek 15.2. 5ortal Wp.pl ma viele usug, ktrych mona ;korzysta bez opuszczania ; trony

391

lin- UK-t

Flrmv [ S

^'brazki

Sowniki

Ogoszenia

DoCelu

Mi'-'*

WIRTUALNAPOLSKA

Reklama w Szukaj Katalog stron VWWV

wicej

yi
PoaU Twoja Poczta Twoja Pogoda Prosto DoCelu Csal

Ts.
Bogi Warszawa

-^mJf
DoCelu

i
WPmobi Aukcje wybierz miasto -

-mm*
WPv wicej

as

ja

Najed kursorem i rzu kostk

Ile wiesz o 'Tacu z gwiazdami"?


"Taniec z gwiazdami" sprawi, e niejedna gwiazda miaa okazi zawieci mocniej, c z y jeste fanem show? Sprawd, ile o nim wiesz* Zobacz t a k i e : Czyj to dekolt? Nastpne. Izrael rozpocz i n w a z na Stret Gazy 1 . ^

"Zginy dziesitki terrorystw" ofensywa idowa rozpoczta

Reakcje wiata na ofensyw ldow Izraela Rada Bezpieczestwa przeanalizuje sytuacj yi * Gazprom zaapelowa do Ukrainy o powrt d o n Silne trzsienie ziemi w Indonezji spowodowao panik Wincenty Raski nie yje

Funkcja przeszukiwania sieci Najpopularniejsze portale, np. Google i M S N , m a j wasne wyszukiwarki, jednak wikszo witryn tego typu korzysta z rozwiza oferowanych przez inne firmy. Opcja tego typu dostpna jest take dla systemu J o o m l a ! za p o r e d n i c t w e m usugi G o o g l e C u s t o m Search E n g i n e (http://bizsolutions.google.com/services). Z a p o m o c narzdzia firmy G o o g l e moesz wstawi funkcj przeszukiwania wasnej strony i internetu, zintegrowan z w y g l d e m T w o j e j strony. Konta Email W i k s z o portali udostpnia u s u g poczty elektronicznej, p o z w a l a j c e j na p r z e c h o w y w a n i e na stronie poczty i innych plikw. M i m o istnienia wielu rozszerze, typu Prywatne wiadomoci ( P M S Private Message System), a nawet prymitywnej implementacji tej funkcji w domylnej instalacji Joomla! praca w roli serwera poczty wykracza poza moliwoci Joomla!. Mapy Popularn f u n k c j wielu portali jest dostp do elektronicznych m a p i planowania podry. Wasne rozwizanie tego typu na stronie Joomla! m o l i w e jest dziki poczeniu z API M a p Google (www.google.com/apis/maps) lub zastosowaniu jednego z rozszerze integrujcych Mapy Google w systemie Joomla! (w katalogu rozszerze z n a j d z i e s z np. G o o g l e m a p s , G e o Visitors i Google Maps API). Osobista strona internetowa Opcja bardzo popularna na stronach typu M y S p a c e i grono.net, m o l i w o stworzenia w a s n e j strony w r a m a c h portalu. K o m p o n e n t 0 n a z w i e R a v e n s w o o d User H o m e P a g e s p o z w a l a u y t k o w n i k o m w i t r y n y na tworzenie wasnych ministron", ktrymi mona zarzdza w rodowisku Joomla!. Ogoszenia i anonse towarzyskie W katalogu Joomla! znajdziesz wiele rozszerze do zarzdzania ogoszeniami, np. popularny A d s M a n a g e r . Oferty pracy W katalogu Joomla! znajdziesz wiele rozszerze do przegldania 1 dodawania ofert pracy, np. popularny Jobline.

392

Joomla!. Profesjonalne tworzenie stron WN 1W


Informacje turystyczne M i m o istnienia wyspecjalizowanych stron, takich jak http://www.wakacje.pl/, portale z m i e r z a j w k i e r u n k u z a j c i a czci rynku i n t e r n e t o w e j turystyki. W i t r y n y tego typu staj si coraz czciej z a u f a n y m rdem informacji podczas planowania podry, poniewa oferuj przewodniki, systemy rezerwacji lotw, specjalne wycieczek, pakiety wakacyjnych i zniki w wypoyczalniach samochodw. Rozszerzenie Joomledia pozwala na integracj systemu Joomla! z p r o g r a m e m partnerskim Expdia. Katalogi (biae i te strony) Portale z w i e r a j czsto katalogi z informacjami k o n t a k t o w y m i w postaci k a t a l o g w biaych i tych stron. Biae strony m o n a w s t a w i na stronie za p o r e d n i c t w e m p r o g r a m u partnerskiego WhitePages.com 0https://affiliates.whitepages.com). Innym rozwizaniem jest zastosowanie jednego z wielu k o m p o n e n t w J o o m l a ! d o konstrukcji w a s n e g o katalogu tych stron (np. Sigsiu Online Business Index lub JAddresses). Informacje finansowe Ceny akcji i inne informacje finansowe to podstawa portali dostarczajcych informacje w czasie bliskim rzeczywistemu, czsto rnica wynosi t y l k o 15 m i n u t . W k a t a l o g u r o z s z e r z e J o o m l a ! m o n a z n a l e m o d u y , ktre uzupeniaj system o f u n k c j e tego typu. Gty Portale zawieraj z reguy moliwo brania udziau w wieloosobowych grach internetowych pewnego typu. Gry na stronach W W W nie z u y w a j wielu zasobw serwera, a s k a n i a j u y t k o w n i k w do spdzania wielu godzin na stronie. W tym czasie m o g by wywietlane bannery, ktre generuj zysk. Wieloosobowe gry p o z b a w i o n e p r z e m o c y s take n i e z w y k l e p o p u l a r n e w grupie kobiet w w i e k u 18-39 lat, na co warto zwrci uwag, jeli stanowi one grup docelow T w o j e j strony. R o z s z e r z e n i e P l a y g a m e s j e s t k o m p o n e n t e m J o o m l a ! c z c y m si z n i e m i e c k i m serwisem Play.de, p o z w a l a j c y m na d a r m o w y dostp do w i e l o o s o b o w y c h gier znanych z kasyna. Muzyka i inne media O g r o m n y rozrost Y o u T u b e . c o m skoni wacicieli portali do udostpnienia f u n k c j i w s t a w i a n i a w a s n e j muzyki, filmw i innych plikw. Usugi tego typu ogromnie o b c i a j zasoby serwera i cza internetowe, dlatego nie s zalecane na stronach Joomla!. M i m o to m o e s z skorzysta z rozszerzania AllVideos, ktre pozwala na zintegrowane zarzdzanie materiaami audio i wideo udostpnianymi za p o m o c streamingu. Informacje sportowe Wywietlanie wynikw sportowych i aktualnych wydarze j e s t b a r d z o p o p u l a r n f u n k c j w i e l u portali. Dla J o o m l a ! m o n a znale wiele rozszerze zamieszczajcych wyniki sportowe. Prognoza pogody Zarejestrowani uytkownicy portalu m o g czsto skorzysta z prostej p r o g n o z y p o g o d y d o p a s o w a n e j do m i e j s c a zamieszkania. Prezentacja ta m o l i w a j e s t w J o o m l a ! dziki r o z s z e r z e n i o m J V T e m p o Easy W e a t h e r , Weathermaster i Z Weather.

Chocia, dziki rozszerzeniom, mona wzbogaci Joomla! o wikszo funkcji portalowych, skuteczne zarzdzanie portalem w y m a g a zintegrowanego i przemylanego panelu administracyjnego. Wygld strony powinien by spjny, a zmiana prezentacji poszczeglnych dziaw nie p o w i n n a nastrcza trudnoci. W J o o m l a ! b r a k u j e integracji midzy poszczeglnymi dziaami, kluczowej dla uruchomienia i prowadzenia portalu.

Rozdzia 15. Czego Joomla! nie potrafi

393

'odsumowanie
Fenomen aplikacji Joomla! nie sprawia, e jest ona idealnym rozwizaniem wszystkich potrzeb. W tym rozdziale przedstawiono kilka brakw systemu w nastpujcych dziedzinach: Brak systemu kontroli wersji i zarzdzania przepywem pracy, ktry umoliwia skuteczn wspprac przy rednich i duych dokumentach. Praktyczny brak opcji importu, eksportu i masowego przetwarzania dokumentw. Ograniczone funkcje uwierzytelniania i niedostateczne zabezpieczenia, ktre mimo moliwoci rozbudowania za p o m o c rozszerze nie d a j wysokiego poziomu bezpieczestwa. Funkcjonalno r w n o w a e n i a obcienia i replikacji dostpna wycznie na poziomie serwera W W W (bez udziau Joomla!), co utrudnia zarzdzanie obcieniem. Brak zintegrowanej replikacji danych (moliwa jest odpowiednia konfiguracja MySQL, niezalenie od aplikacji Joomla!), ktry sprawia, e Joomla! jest nieodpowiednim wyborem dla witryn dziaajcych na wieloserwerowych klastrach. Znaczne ograniczenia pod wzgldem moliwoci interfejsu uytkownika, jego dopasowania do potrzeb uytkownikw. Minimalna integracja funkcji groupware, przez co internetowa wsppraca jest trudna i nieatrakcyjna zarwno dla uytkownikw, jak i administratorw. Niewielka liczba moliwoci portalu takich jak prywatne strony W W W ktre s dostpne w komercyjnych produktach.

Dotychczas miae okazj zapozna si prawie ze wszystkimi funkcjami Joomla!. W rozdziale 16. przedstawiono przegld popularnych stron W W W dziaajcych dziki temu systemowi. O