Kiedy skrypt napotyka żądanie wyrenderowania jakiegoś modułu, wtedy za pomocą klasy JModuleHelper pobierana jest zawartość pliku modules/mod_nazwamodulu/mod_nazwamodulu.php – to tak w uproszczeniu, bo jeszcze w zależności od templatki moduł może być ubierany w jakieś divy albo tabelkę. A więc do programisty teoretycznie należy napisanie pliku mod_nazwamodulu.php. Praktycznie – też tak jest. Należy jednak pamiętać o pewnych “trendach” jakich powinno się trzymać pisząc moduły. Przez kilka następnych artykułów będziemy uczyć się właśnie tych trendów. Będziemy też powoli przyswajać budowę samej Joomli. Nie będziemy natomiast uczyć się PHP. To mam nadzieję już w jakimś stopniu jest opanowane
Po pierwsze – Plan
Musimy się najpierw zastanowić co chcemy zrobić i jakoś to rozplanować. Nasz moduł nie będzie zbyt skomplikowany. Jego działanie polegać będzie na wypisaniu na ekran “Hello world”. Całość więc zakodujemy po prostu w pliku mod_hello.php – ponieważ tak będzie nazywał się nasz komponent – mod_hello.
mod_hello
zobaczmy na poniższy kod
<?php
/**
* Moduł mod_helloworld - stworzony na potrzeby www.morony.pl
* autor Maciej Mucha, maciej@morony.pl
*/
defined('_JEXEC') or die('Direct Access to this
location is not allowed.');
echo 'Hello World!';
Jest to zwykły plik php. Wyjaśnienia wymaga linia sprawdzająca istnienie stałej ‘_JEXEC’. Jest to stała zdefiniowana w pliku index.php. Joomla cała opiera się właśnie na tym pliku. tzn wszystkie adresy naszej strony to index.php?… Nie ma więc potrzeby otwierania bezpośrednio jakiegokolwiek innego pliku (może to być nawet niebezpieczne). Sprawdzamy więc czy plik został wczytany za pomocą pliku index.php. Jeśli nie – wtedy blokujemy dostęp. tą klauzulę możemy znaleźć prakrycznie w każdym pliku php wchodzącym w skład joomli.
Kiedy jesteśmy już pewni że strona została wczytana prawidłowo przechodzimy do właściwego kodu. W tym przypadku kod nie wymaga chyba tłumaczenia 🙂
Skrypt się skończył.. A gdzie tag zamykający skrypt php? Nie jest on wymagany. A ponieważ plik który napisalismy ma być ładowany do innego pliku, wszelkie spacje czy inne białe znaki były by bardzo niepożądane, A takie zostały by wczytane gdyby wystąpiły po “?>”. Jest to praktyka przyjęta w Joomla 1.5, i będziemy ją stosować za każdym razem.
Pięknie – skrypt napisany. Ale co z tego? jak go teraz wgrać aby był dostępny z poziomu panelu administracyjnego? W Joomli służą do tego pliki instalacyjne XML.
Plik instalacyjny
nasz plik instalacyjny będzie wyglądał tak:
<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
<name>Hello World</name>
<author>Maciej Mucha - www.morony.pl</author>
<creationDate>December 2008</creationDate>
<copyright>Maciej Mucha - www.morony.pl</copyright>
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
</license>
<authorEmail>maciej@morony.pl</authorEmail>
<authorUrl>http://www.morony.pl</authorUrl>
<version>1.5.0</version>
<description>Moduł służący do wyświetlenia
informacji "Hellow World"</description>
<files>
<filename module="mod_hello">mod_hello.php</filename>
<filename module="mod_hello">index.html</filename>
</files>
</install>
O co tu chodzi? To proste, najpierw podajemy kilka informacji o sobie i o skrypcie które będą widoczne w panelu admina, oraz listę plików, które instalator przekopiuje na dysk.
Co jest ważne:
- <install type=”module” version=”1.5.0″> – informacja o tym że instalujemy moduł, kompatybilny z joomlą 1.5.x i wyższe
- <name>Hello World</name> – nazwa modułu wyswietlana w panelu administracyjnym
- <filename module=”mod_hello”>mod_hello.php</filename> – parametr module=”mod_hello” zostanie przyjęty jako nasza nazwa modułu oraz katalog w kórym będzie dostępny moduł. Nie mylić z przyjazną nazwą wyświetlaną.
- <?xml version=”1.0″ encoding=”utf-8″?> – ważne jest aby plik został zakodowany w kodowaniu które zadeklarowaliśmy. W przeciwnym wypadku instalator wurzuci błąd.
- <filename module=”mod_hello”>index.html</filename> – w dobrym tonie jest, aby w każdym katalogu joomli znajdował się plik index.html o treści”<html><body bgcolor=”#ffffff”></body></html>
Instalujemy!
Aby móc przystąpić do instalacji musimy jeszcze spakować pliki (razem z plikiem instalacyjnym, który zapisujemy jao mod_hello.xml). Najlepiej do pliku mod_hello.zip. Następnie instalujemy komponent.
![instmod1](http://morony.pl/wp-content/uploads/2008/12/instmod1.jpg)
1. Wybieramy instalator
![instmod2](http://morony.pl/wp-content/uploads/2008/12/instmod2.jpg)
2. Wybieramy plik i klikamy instaluj
![instmod3](http://morony.pl/wp-content/uploads/2008/12/instmod3.jpg)
3. Cieszymy się z zainstalowanego modułu.
Uruchamiamy moduł
![instmod4](http://morony.pl/wp-content/uploads/2008/12/instmod4.jpg)
1. Wybieramy moduły z menu
![instmod5](http://morony.pl/wp-content/uploads/2008/12/instmod5.jpg)
2. Tworzymy nowy moduł
![instmod6](http://morony.pl/wp-content/uploads/2008/12/instmod6.jpg)
3. Z listy wybieramy nasz moduł
![instmod7](http://morony.pl/wp-content/uploads/2008/12/instmod7.jpg)
4. Ustawiamy parametry wyświetlania modułu
![instmod8](http://morony.pl/wp-content/uploads/2008/12/instmod8.jpg)
5. Jeśli wszystko zrobiliśmy dobrze, powinniśmy zobaczyć coś takiego – działający moduł
Poprawki
To że moduł nam się zainstalował, nie znaczy jeszcze że będzie działał. Może się okazać, ze popełniliśmy jakiegoś babola i nasz moduł wywala błąd php. Nie musimy wtedy powtarzać całej procedury od początku. Wystarczy, że podmienimy odpowiedni moduł na serwerze i już (no i oczywiście potem w paczce z modułem, kiedy już będzie działał.
Podsumowanie
Jak widać napisanie prostego modułu dla Joomli nie jest czymś szczególnie trudnym (choć nasz moduł nie robił za wiele). W następnych artykułach dowiemy się już jak napisać coś pożytecznego.
Pozdrawiam,
Much