Joomla! budowa i działanie
System zarządzania treścią Joomla! stworzony został w PHP 5.2.4+ z systemem baz danych MySQL 5.0.4+. Aby móc z niego korzystać, serwer Apache i serwer MySQL musi obsługiwać powyższe technologie w tych samych lub nowszych wersjach.
Na system modułowy[7], [8], [9] w Joomla! składają się takie elementy jak:
- silnik systemu (core/engine),
- komponenty,
- moduły,
- pluginy (mambots),
- szablony (templates).
Wyjaśnienie pojęć:
- Silnik to inaczej szkielet programu, zestaw skryptów PHP służących do obsługi komponentów i modułów.
- Komponent – skrypt zapewniający witrynie różne funkcjonalności. Komponenty dzieli się na wbudowane(rdzenia), czyli takie które są niezbędne do funkcjonowania serwisu np. generatory treści, rejestracja na portalu. Komponenty rozszerzeń to dodatkowe elementy zwiększające możliwości portalu jak usługi w postaci ankiet, kanałów itp. Takie komponenty można dowolnie modyfikować – włączając je lub wyłączając wedle potrzeb, niektóre z nich można dodać do Joomla! w postaci pakietów instalacyjnych dystrybuowanych na prawach licencji GPL bądź za opłatą. Komponenty zazwyczaj posiadają własny interfejs (właściwości), którego elementy konfiguruje się w panelu administracyjnym. Istnieje zależność między wewnętrznymi procesami oraz interakcja z użytkownikiem. Tylko jeden komponent na stronę. Przykłady: panel logowania, menu, wiadomości, sekcja FOOTER szablonu portalu.
- Moduł – skrypt odpowiedzialny jest za wyświetlanie menu i elementów interaktywnych na stronie. W odróżnieniu od komponentów, moduły nie posiadają własnego interfejsu odpowiedzialnego za takie funkcje jak: gromadzenie, redagowanie i przechowywanie danych. Moduły służą tylko do wyświetlania i pobierania danych, czyli mogą być to takie elementy jak sondy, wyszukiwarka, gdzie źródłem treści stanowią komponenty, własne pliki, bazy danych itp. Również moduły można pobierać z Internetu bądź też tworzyć samemu. Na stronie może występować kilka modułów. Każdy z nich wywoływany jest poprzez adres URL wraz z końcówką np. &Itemid= Przykładami modułów mogą być: ankiety, kontakty, banery, kanały RSS itp.
- Plugin/Mambot – skrypt, który decyduje o kształcie treści wyświetlanej na stronie, pośredniczy między różnymi zdarzeniami jak na przykład w graficznej edycji tekstu, potrafi maskować określoną treść lub nadać jej inne właściwości. Pełni rolę „tła” portalu czyli funkcji dodatkowych czekających na zdarzenia ze strony użytkownika. Na przykład edytor tekstu WYSYWIG, systemowe elementy (autoryzacja, cache, XML-RPC).
- Szablon stanowi oprawę wizualną treści prezentowanych na stronie. Nie posiada własnej treści, dlatego można go dowolnie dopasować do upodobań użytkownika. Proces tworzenia szablonu może trwać niezależnie od tworzenia strony, bo szablony jak inne części serwisu można dystrybuować w postaci pakietów instalacyjnych.
Komponenty, moduły i pluginy mogą ze sobą kooperować w np. moduł formularza wysyła zapytanie do komponentu, który z kolei poprzez pluginy wyszukuje żądane informacje.
Wywołując adres Joomla! tak naprawdę system lokalizuje plik INDEX w katalogu głównym, w tym przypadku index.php, końcówka PHP wskazuje na zawartość skryptową, którą po wywołaniu interpretuje serwer, a dane wynikowe w języku HTML wysyła do przeglądarki internetowej poprzez protokół internetowy.
Można w ten sposób wyróżnić część systemową CMS, czyli to co widać na ekranie monitora po uruchomieniu skryptu oraz szkielet aplikacji zwany frameworkiem.
Na framework w Joomla! składają się:
- interfejs programowania aplikacji (API),
- wtyczki (plugins).
Rozszerzenia framework Joomla! stanowią:
- komponenty (components),
- moduły (modules),
- szablony strony (templates),
- języki (languages).
Powyżej przedstawiono podział systemu Joomla! Interfejs programowania aplikacji (API) Joomla! wywołuje określone moduły, komponenty i pluginy, które swój kod wynikowy lokują w określonych miejscach szablonu. Złożony szablon w całość stanowi stronę internetową.
Poszczególne etapy ładowania kodu PHP Joomla!
Poniżej przedstawiono drogę między zapytaniem użytkownika do serwera Joomla! 1.5, a otrzymaniem komunikatu zwrotnego od niego. W najnowszej wersji mogą występować subtelne różnice w funkcjonowaniu skryptu. Poniższy diagram pełni rolę poglądową i nie wyczerpuje tematu:
Wywołując plik index.php następuje wykonanie szeregu instrukcji, które tworzą funkcjonalny system Joomla. Etapy ładowania Joomla! według powyższego rysunku:
- Ładowanie framework. W pierwszej kolejności następuje ładowanie plików:
- require_once JPATH_BASE.’/includes/defines.php’;
- require_once JPATH_BASE.’/includes/framework.php’;
- gdzie: defines.php – jest tablicą stałych globalnych, a framework.php – zbiorem wszystkich innych plików frameworka do załadowania.
- Stworzenie aplikacji, obiekt: $mainframe gotowy do użycia, następuje inicjalizacja sesji lub tworzenie nowej sesji.
- Ładowanie języka strony; można powiedzieć że jądro Joomla! (core) już pracuje.
- Następuje wykonanie drogi użytkownika, na tym etapie sprawdzane jest jaki komponent został zainicjalizowany np. logowanie,
- Komponent gotowy do wykonania i posiadający uchwyt (handle), obiekt $document zostaje stworzony i wyjście komponentu jest już buforowane. Zdarzenie ‘onAfterDispatch‘ zostało zainicjowane, aby przekazać informacje do wtyczek(pluginów), że system jest gotowy do renderowania (przedstawienia wyników w postaci graficznej lub ustandaryzowanej).
- Renderowanie aplikacji – umieszczanie danych z buforów dokumentów do odpowiednich elementów szaty graficznej portalu (szablonu). Zdarzeniem informującym o gotowości systemu do kolejnego etapu jest onAfterRender.
- Odpowiedź zostaje wysłana – dane zbuforowane w JResponse zostają wysłane do użytkownika Internetu.
Układ graficzny portalu Joomla!
Wygląd Joomla![11] po instalacji nie odbiega od norm przyjętych na stronach WEB 2.0; uwagę zwraca ułożenie menu, które jest bardziej intuicyjne niż w poprzedniej wersji oraz możliwość dodania treści tuż za logiem portalu.
Rodzaje elementów na stronie Joomla!:
- dynamiczne elementy, np. strona główna,
- dynamiczne elementy towarzyszące, np. menu,
- statyczne elementy, np. stopka, nagłówek.
Aby zawartość witryny odpowiadała wymaganiom użytkownika stosuje się bloki, których rozmieszczenie można dowolnie modyfikować. Do dyspozycji jest ponad 50 lokalizacji takich bloków na stronie. Przykład pozycjonowania zawartości strony przedstawiono na rysunku:
Typowy podział treści to: nagłówek, kolumny z modułami, tytuł strony wraz z główną treścią i stopka. Bloki modułów[2] na stronie mogą być ustawione według domyślnych schematów: header, newsflash, pathway, cpanel, banner, footer, legals, toolbar, icon, debug, advert1. advert2, advert3, top, left, right, bottom, inset i user1-9:
Treści są wyświetlane w języku XHTML i z użyciem arkuszu styli kaskadowych (CSS). Ponadto wersja Joomla! 1.6 została zoptymalizowana pod kątem wyszukiwarek internetowych. Dzięki zastosowaniu semantyki w kodzie XHTML witryna staje się bardziej czytelna dla robotów księgujących zawartość portalu. Układ strony oparty jest na blokach i sekcjach zawartych w tagach: <DIV>, dzięki czemu strona zachowuje się identycznie na ekranach o różnej rozdzielczości.
Wbudowane funkcjonalności Joomla!
Lista funkcji wbudowanych wraz z opisem, czyli dostępnych po instalacji skryptu portalu.
Ekran logowania i rejestracji daje możliwość rejestracji konta w portalu i posiadania własnego profilu o przywilejach ustalonych przez administratora. Integracja użytkownika z portalem daje szerokie możliwości zarządzania i kontaktu z osobami zainteresowanymi serwisem WWW. W przypadku konferencji można użytkownikom portalu przypisać pewne prawa jak np. wysyłania abstraktów na serwis o czym napisano w dalszej części pracy.
Z kolei panel rejestracji umożliwia założenie konta użytkownika w systemie Joomla. Dane o użytkowniku zostają zapisane w jednej z tabel Joomla!, w tym hasło które jest przechowywane w formie zaszyfrowanej algorytmem MD5(Message-Digest algorithm 5 ver.).
Panel Administracyjny daje możliwość zarządzania portalem i użytkownikami wspomagane graficznym interfejsem. Dostęp wymaga autoryzacji i posiadania odpowiednich praw(przywilejów). Podstawową rolę w ich nadawaniu pełnią szablony administracyjne z domyślnie ustalonymi prawami dostępu do poszczególnych elementów panelu administracyjnego. Najnowsza wersja Joomla! znosi ograniczenia w wyborze modelu organizacyjnego portalu. W celu zabezpieczenia dostępu: lokalizację panelu oraz konto domyślne administratora powinno się zmienić.
Panel do instalacji i obsługa modułów, komponentów i pluginów. Joomla! wykonana jest w modułowym systemie CMS co oznacza, że poszczególne jego funkcjonalności oparte są na konkretnych programach wykonujących określone funkcje. Większość z nich instaluje się z poziomu Joomla!, który umożliwia zainstalowanie zewnętrznych modułów i komponentów pełniących różne role w portalu.
Edytor graficzny daje możliwość redagowania tekstu bez znajomości składni języka HTML. Materiał redagowany można wzbogacić o grafikę, osadzone filmy, załączniki plików i linki. W systemie Joomla! wbudowane są dwa rodzaje edytorów tekstu: JCE (Joomla! Content Editor) oraz TinyMCE(Tiny Moxiecode Content Editor). Oba edytory korzystają z metody WYSYWIG(What You See Is What You Get) co znaczy, że dane prezentowane w edytorze będą prawie identyczne jak z tymi na wydruku. JCE(Joomla! Content Editor) jest własnym pakietem Joomla! i składa się z mambota(funkcja manipulacji tekstem przed publikacją np. znaczniki mambota: {} , które w trakcie publikacji tekstu zostaną zastąpione konkretnym kodem HTML), komponentu i pluginów. Z kolei TinyMCE jest niezależną platformą opartą na skryptach Java o łatwej integracji z praktycznie każdym CMS. Podstawową wadą TinyMCE jak i wielu innych edytorów WYSYWIG jest nadmiar generowanego kodu HTML w sformatowanym tekście.
Artykuły publikowane w Joomla! zostają zapisywane w bazie danych MYSQL, a pliki np. załączniki dodawane do artykułów przechowywane są na serwerze WWW.
Szablony. Jak każdy CMS również Joomla! umożliwia dostosowanie wyglądu strony do potrzeb użytkownika bez potrzeby sięgania po programy do tworzenia stron internetowych. Na portalu Joomla.org można pobrać gotowe szablony stron, które następnie instaluje się w Panelu Administracyjnym.
Budowa szablonu[12] (podstawowe pliki):
templateDetails.xml
– zestaw instrukcji z w formacie XML informujący instalator o rozmieszczeniu plików szablonu na serwerze, udostępnia opis szablonuindex.php
– zestaw instrukcji w formacie PHP odpowiedzialnych za generowanie szablonu na ekranie przeglądarki internetowej (w formacie HTML)template_css.css
. – zestaw styli CSS (kaskadowych arkuszy styli), zestaw informacji o sposobie formatowania treści na stronie (czcionka, kolor, akapity itp.)
Ponadto katalogi:
- images – folder obrazków na stronę,
- javascript – folder skryptów mających na celu uatrakcyjnić elementy strony,
- css – folder styli dla różnych elementów portalu.
Za wyświetlanie poszczególnej treści odpowiadają funkcje:
mosMainBody()
– treść główna,mosLoadComponents($nazwa_komponentu)
– komponent,mosLoadModules($nazwa_pozycji [, $styl ])
– moduły.
Kanał subskrypcji daje możliwość pobierania najświeższych informacji ze strony za pomocą czytnika RSS wbudowanego w przeglądarkę internetową lub osobnej aplikacji do obsługi kanałów. RSS informuje użytkownika Internetu o tym co się dzieje w danym portalu za pomocą krótkiej notatki, dzięki czemu nie ma potrzeby wchodzenia na serwis i sprawdzania czy nie pojawiły się nowe informacje. Kanał subskrypcji dodaje się w panelu administracyjnym, a o fakcie jego wyświetlania informuje pasek adresu.
Kod XML oparty jest na znacznikach, przedstawia dane w sposób uhierarchizowany w określonej strukturze. Do jego odczytu wystarczy przeglądarka internetowa lub specjalny program do subskrypcji kanałów:
Skrypty Java. Zaglądając do wnętrza kodu źródłowego można dostrzec, że przy budowie Joomla! wykorzystano kilka skryptów Java mających na celu podnieść atrakcyjność serwisu czy też ułatwić dostęp do niektórych treści:
<script type=”text/javascript” src=”/demo16/media/system/js/core.js”></script>
<script type=”text/javascript” src=”/demo16/media/system/js/mootools-core.js”></script>
<script type=”text/javascript” src=”/demo16/media/system/js/caption.js”></script>
<script type=”text/javascript” src=”/demo16/media/system/js/mootools-more.js”></script>
Powyżej odwołania do biblioteki MOOTools[4], składającej się ze skryptów Java (więcej o MOOTools i innych bibliotekach AJAX znaleźć można w dodatku A).
Źródła:
[1] www.artisteer.com/?p=help_Joomla! – jak korzystać z szablonów Joomla!
[2] www.pomoc.Joomla.pl/content/view/533/46/ – Joomla!, pozycje modułów
[3] www.rssowl.org/ – strona producenta czytnika RSSOwl
[4] wiki.Joomla.pl/Gdzie_mog%C4%99_poczyta%C4%87_o_Mootools
[11] http://www.pomoc.Joomla!.pl/content/view/528/46/
[12] http://www.pomoc.Joomla!.pl/content/view/527/46/
[7] http://www.pomoc.Joomla!.pl/content/view/523/46/
[8] http://www.Joomla!nh.org/meetings/34-november-10-2010-Joomla!-jumpstart-workshop.html
[9] http://www.slideshare.net/teamphp/how-Joomla!-works
[10] http://amiworks.co.in/talk/Joomla!-request-to-response/
Spis treści: Joomla! budowa i działanieSłowa kluczowe: joomla pozycje
Genialny artykuł, gratulacje dla autora.