--=REKLAMA=--
Wśród rozlicznych zmian Joomla! 1.5 przyniósł ze sobą wiele nowości w systemie szablonów. Projektanci szablonów i administratorzy Joomla! zyskali odnowione, potężne narzędzie kształtowania wizualnych aspektów witryn, prostsze, a równocześnie elastyczne, umożliwiające – zgodnie z oczekiwaniami – pełną kontrolę nad prezentacyjną warstwą witryny.
Poniżej przedstawiamy skrótową informację o nowych właściwościach szablonów w Joomla! 1.5:
Zastosowanie w Joomla! 1.5 wzorca projektowego Model-Widok-Kontroler (MVC) zaowocowało konsekwentnym oddzieleniem warstwy logicznej, warstwy danych i warstwy prezentacji. W efekcie kod HTML, CSS i inne elementy odpowiedzialne za prezentację oddzielono od warstwy logicznej i umieszczono w całości w plikach obsługujących szablony. Takie rozwiązanie daje projektantom pełną kontrolę nad wyglądem witryn bez ingerencji w źródłowy kod Joomla!. Projektanci mogą nie tylko swobodnie korzystać ze wszystkich możliwości kształtowania wyglądu oferowanych przez współczesne technologie, ale mogą:
Problemy projektantów i administratorów Joomla! z dostosowaniem swoich projektów do standardów sieciowych określanych przez W3C i inne instytucje standaryzujące, w tym standardów dostępności, a powodowane przez kod rdzenia Joomla!, wraz z Joomla! 1.5 odchodzą w przeszłość. Wprawdzie wciąż w kodzie Joomla! mamy do czynienia ze spuścizną czasów, gdy nie można się było obejść bez stosowania tabel do rozmieszczania treści, ale każdy projektant i administrator może się tych pozostałości łatwo i bezboleśnie pozbyć.
Twórcy Joomla! umożliwili prostą metodę podmiany domyślnych widoków (template overrides, layout overrides) oraz – wśród trzech szablonów dostarczanych z instalatorem Joomla! – umieścili szablon Beez z kompletem skryptów zastępujących oryginały. Istotą rozwiązania jest mechanizm „podmiany” skryptów rdzenia Joomla! skryptami szablonu. Generując strony witryny Joomla! sprawdza najpierw, czy w katalogu aktualnego szablonu znajdują się skrypty definiujące standardowe widoki. Gdy je znajdzie, posługuje się nimi, przygotowując wynikowy dokument HTML, w przeciwnym przypadku korzysta z oryginalnych skryptów.
Możliwość podmiany dotyczy wszystkich przypadków zastosowania w kodzie Joomla! tabel do rozmieszczania elementów treści (nie tylko modułów, co było już możliwe w Joomla! 1.0, ale też stron prezentujących artykuły i treści standardowych komponentów oraz elementu drobnego, acz często używanego – paska paginacji, ułatwiającego przemieszczanie się między stronami).
Oczywiście, możliwość zmiany widoków nie dotyczy tylko możliwości zastępowania tabel innymi elementami (x)HTML, ale pozwala na manipulowanie rozmieszczeniem tych elementów na stronach Joomla!, których nie można konfigurować w ustawieniach parametrów.
Zapewnieniu zgodności ze standardami i zwiększeniu dostępności sprzyjają ponadto:
W Joomla! 1.0 o mechanizmach personalizacji wyglądu można było co najwyżej pomarzyć. Oczywiście, stosując specjalne skrypty, projektanci udostępniali użytkownikom pewne możliwości dostosowania szablonu do swoich preferencji. W Joomla! 1.5 te niewielkie możliwości wzrosły w sposób w zasadzie nieograniczony dzięki możliwościom konfiguracji sparametryzowanych aspektów wyglądu. Aby zapewnić administratorom i użytkownikom witryny wybór między szerokościami strony dostosowanymi do rozdzielczości monitora, między układem jedno- lub wielokolumnowym, między różnymi wariantami kolorystycznymi, itp., wystarczy zdefiniować odpowiednie arkusze stylów oraz umieścić w skrypcie konfiguracyjnym szablonu sekcję parametrów, definiującą opcjonalne rozwiązania.
W Joomla! 1.5 można korzystać z szablonów przygotowanych dla Joomla! 1.0, ale nieodzownym warunkiem ich obsługi jest włączenie trybu zgodności wstecznej. Przełączenie w tryb zgodności wstecznej spowoduje, że Joomla! 1.5 będzie „rozumieć” i poprawnie interpretować instrukcje i rozwiązania właściwe dla Joomla! 1.0, ale zaniechane w Joomla! 1.5.
Włączenie trybu zgodności wstecznej polega na opublikowaniu specjalnego dodatku systemowego Spuścizna [Legacy]. Choć jest to rozwiązanie dozwolone, to nie jest najlepsze, nie tylko że nieco obniża sprawność działania Joomla!, ale nie pozwala skorzystać w pełni z nowych właściwości szablonów. Stąd zalecane jest opracowanie nowego szablonu albo unowocześnienie starego do reguł stosowanych w Joomla! 1.5.
Przeprojektowany framework Joomla 1.5 zawiera warstwę JApplication, która oferuje kilka obiektów i metod odnoszących się w szczególności do szablonów, do wykorzystania w głównych plikach szablonu - index.php (i ewentualnie innych). Przykładowo:
<jdoc:include type="head" />
w miejsce stosowanego w szablonach 1.0.x <?php mosShowHead(); ?>
,
<?php echo $mainframe->getCfg('sitename');?>
w miejsce stosowanego w 1.0.x <?php echo $mosConfig_sitename; ?>
<?php echo $mainframe->getCfg( 'live_site' );?>
w miejsce stosowanego w 1.0.x <?php echo $mosConfig_live_site; ?>
<?php defined('_JEXEC') or die('Restricted index access'); ?>
w miejsce stosowanego w 1.0.x <?php defined('_VALID_MOS') or die( 'Restricted access' ); ?>
,
<?php echo JURI::base();?>
w miejsce stosowanego w 1.0.x <?php echo $mosConfig_live_site; ?>
.
W Joomla! 1.5 zwiększono konfiguracyjne funkcje pliku templateDetails.xml. Poza spełnianiem zadań znanych z Joomla! 1.0 plik ten służy:
Kosmetyczną, ale istotną jest również zmiana nazwy elementu głównego. W szablonach dla Joomla! 1.0 wszystkie elementy obejmował element główny <mosinstall>, w Joomla! 1.5 obejmuje element <install>, a składnia znacznika otwierającego jest następująca:
<install type="template" version="1.5">
W przypadku szablonu dla Joomla! 1.5 oba argumenty, zarówno type, jak i version są obowiązkowe. Próba instalacji szablonu, w którym w pliku templateDetails.xml nie zostanie określona w znaczniku <install> wersja Joomla! zakończy się niepowodzeniem i komunikatem: "Prawdopodobnie Twoje rozszerzenie zostało napisane dla starszej wersji Joomla!. Pomocne może być włączenie dodatku System - Spuścizna (Legacy Plugin)". W znaczniku <mosinstall>, w plikach szablonów dla Joomla! 1.0 argument version nie miał żadnego praktycznego znaczenia.
Uwaga: Brak argumentu version w znaczniku <install> powoduje jedynie błąd podczas instalacji szablonu. Jeśli jednak pliki szablonu umieścimy na serwerze za pomocą FTP, Joomla! 1.5 obsłuży szablon poprawnie także i wówczas, gdy argumentu version nie będzie.
W szablonach dla Joomla! 1.5 deklarowanie pozycji modułów zostało przeniesione do pliku templateDetails.xml. Służy temu nowa sekcja pliku, tworzona znacznikiem <positions>
, obejmującym znaczniki <position>
deklarujące konkretne pozycje. Na przykład:
<positions> <position>top</position> <position>left</position> </positions>
Ponadto pozycje modułów są obsługiwane przez Joomla! bez względu na to, czy zostaną zadeklarowane w pliku templateDetails.xml. Aby umieścić pozycję modułów na liście pozycji możliwych do wykorzystania, wystarczy je wpisać bezpośrednio w polu otwierającym rozwijaną listę wyboru Pozycja modułu w edytorze dowolnego modułu.
Fascynującą właściwością szablonów dla Joomla! 1.5 jest prosty sposób definiowania w pliku templateDetails.xml różnych parametrów konfiguracyjnych. Grupujemy je w elemencie params, umieszczając każdy między znacznikiem opisującym param oraz umieszczonymi wewnątrz nich – w niektórych przypadkach – elementami option z atrybutem value. Domyślne wartości parametrów przechowujemy w pliku params.ini, który - podobnie jak plik templateDetails.XML jest jednym z plików szablonu. Parametry można konfigurować na zapleczu w edytorze szablonu, a także "w locie", korzystając z Javascript.
Oto przykład deklaracji w pliku templateDetails.xml:
<params> <param name="colorVariation" type="list" default="white" label="Wersja kolorystyczna" description="Zaznacz domyślną wersję kolorystyczną "> <option value="">Domyślna</option> <option value="blue">Błękit</option> <option value="red">Czerwień</option> <option value="green">Zieleń</option> </param> </params>
Znacznik <params> rozpoczyna, a znacznik </params> kończy sekcję definiującą dostępne opcje konfiguracyjne.
API Joomla! 1.5 udostępnia 21 typów parametrów, które można wykorzystać w projektowaniu szablonów. Możliwe jest również definiowanie nowych własnych typów.
Joomla! 1.5 umożliwia lokalizację wszystkich elementów, także szablonów. Możliwe jest zarówno tłumaczenie napisów w plikach definiujących wygląd stron (index.php i innych), jak i w pliku konfiguracyjnym templateDetails.xml. Napisy w domyślnym języku oraz tłumaczenia deklarowane są w specjalnych plikach w formacie INI, a informację o plikach językowych dołączonych do szablonu umieszczamy w dwóch sekcjach:
<languages> <language tag="en-GB">en-GB.tpl_nazwaszablonu.ini</language> <language tag="pl_PL">pl-PL.tpl_nazwaszablonu.ini</language> </languages>
Albo o dołączonych do szablonu zaplecza:
<administration> <languages folder="admin"> <language tag="en-GB">en-GB.tpl_nazwaszablonu.ini</language> <language tag="pl_PL">pl-PL.tpl_nazwaszablonu.ini</language> </languages> </administration>
Standardowy system ramek ('wyglądu') zdefiniowany w kodzie modułów i komponentów oraz paginacji może być nadpisany przez szablon. Pliki definiujące domyślne wyglądy każdego komponentu i modułu znajdują się w katalogach modules/mod_modulename/tmpl oraz components/com_componentname/views/layout/tmpl. Standardowe ramki paginacji zdefiniowane są w pliku pagination.php. Projektant może umieścić w katalogu szablonu własne skrypty modyfikujące standardowe rozwiązania.
Zmodyfikowano sposób sprawdzania ilości modułów, które administratorzy włączyli w pozycji modułu. Znana z szablonów 1.0.x funkcja mosCountModules została zastąpiona funkcją $this->countModules oraz warunkami, które można dodać w instrukcji sterującej, korzystając z operatorów '+', '-', 'or' oraz 'and', e.g. if ($this->countModules('left or right') == 1). Metodę tę można wykorzystać przy projektowaniu kolumn składanych (np. ukrywania lewej lub prawej kolumny, gdy nie zawierają treści).
Pliki wszystkich szablonów witryny Joomla! przechowywane są w katalogu /templates/, w odrębnych folderach nazwanych tak jak szablony: /nazwa_szablonu. Pliki wszystkich szablonów zaplecza przechowywane są w odrębnych folderach w katalogu /administrator/templates/.
Typowy katalog szablonu w Joomla 1.0 zawiera:
W macierzystym katalogu szablonu znajdują się pliki:
Oto przykładowa typowa struktura katalogów szablonu w Joomla 1.0:
/templates /moj_szablon /css index.html template_css.css /images index.html logo.png list.png menu_bg.png belka.png index.html index.php template_thumbnail.png templateDetails.xml
W typowym katalogu szablonu dla Joomla! 1.5 mamy dodatkowo jeden folder html. Powinien zawierać następujące foldery:
W macierzystym katalogu szablonu znajdują się pliki:
Oto przykładowa typowa struktura katalogów szablonu w Joomla 1.5:
/templates /moj_szablon /css index.html template.css /html /com_content /article default.php form.php index.html /category blog.php blog_item.html blog_links.html default.php default_items.php index.html editor_content.css index.html modules.php pagination.php /images logo.png list.png menu_bg.png belka.png component.php favicon.ico index.html index.php params.ini template_thumbnail.png templateDetails.xml
Zgodnie z konwencją stosowaną w systemach UNIX, nazwy katalogów powinny być zapisane bez spacji, a jeśli złożone są z kilku wyrazów, to należy zapisać je razem, np. używając łączników. Ilustracja poniżej przedstawia drzewo katalogu /templates, w którym umieszczone są trzy szablony.
System szablonów (w katalogu /templates) został rozszerzony tak, by można włączyć więcej plików CSS oraz nadpisujących standardowe rozwiązania plików modules.php i component.php. Można włączyć do swego szablonu kilka plików CSS. Na przykład:
<link rel="stylesheet" href="templates/system/css/system.css" type="text/css" /> <link rel="stylesheet" href="templates/system/css/general.css" type="text/css" />
System szablonów wzbogacono o dwie biblioteki Javascript, do których można się odwołać we własnych szablonach. Na przykład:
<script type="text/javascript" src="media/system/js/mootools.js"></script> <script type="text/javascript" src="media/system/js/caption.js"></script>
Do szablonu włączono więcej standardowych stron błedów błędów (403.php i 500.php). Dodano również nową instrukcję - <jdoc:include type="message" /> - umieszczającą w szablonie obszar prezentacji komunikatów błędów. Instrukcja musi być umieszczona w pliku index.php szablonu, aby wyświetlać komunikaty błędów i powiadomienia systemowe. Zobacz także: Własne strony błędów