Z notatnika webmasterki

15 Sie, 2010

Własny moduł w Joomla!.

Zamieszczony przez: Joanna w: Archiwum

Joomla! daje możliwość tworzenia własnych modułów bez zagłębiania się w strukturę skryptów. Ba, nawet bez znajomości PHP. Wystarczy do witryny dołączyć moduł Własny kod HTML i we wskazanym miejscy, na wskazanych podstronach pojawi się dokładnie to co chcemy. Do stworzenia modu, którego potrzebowałam wystarczyłoby to. Postanowiłam jednak wykorzystać okazję i na prostym przykładzie spróbować stworzyć i dołączyć do witryny własny mod. W Polskiej Dokumentacji Joomla! jest artykuł w którym opisano jak skonstruowany jest moduł Joomla!. I właściwie podanie tego linku wystarczyłoby, gdyby nie to, że opis jest co najmniej lakoniczny. W artykule czytamy co następuje:

  • mod_hello.php – plik główny modułu. To on zostanie wywołany gdy wstawimy moduł w dowolnym miejscu na stronie.
  • mod_hello.xml – tutaj zawarte są informacje instalacyjne modułu oraz definicje parametrów
  • helper.php – plik pomocniczy to w nim powinny być pobierane i przygotowywane dane dla modułu (także te przesyłane z bazy danych)
  • tmpl – katalog, który zawiera pliku szablonów modułów
  • tmpl/default.php – domyślny widok modułu

I poza tym, że pokazano konstrukcję pliku xml to więcej z tego artykułu dowiedzieć się nie można. No nic to. Ja już wiem jak to powinno wyglądać więc się dzielę.

Pewnie to jest oczywiste, a jeśli nie to można to łatwo zauważyć, ale i tak to napiszę. Nazwa głównego pliku modułu oraz pliku xml, zawierającego konfigurację muszą być takie same jak nazwa katalogu w którym definiujemy moduł. Poza tym każdy plik powinien rozpoczynać się instrukcją:

defined('_JEXEC') or die('Restricted access');

Parametry i zmienne

Parametry wejściowe modułu, których wartości można zmieniać w panelu administracyjnym, zdefiniowane są w pliku xml w sekcji . Wartości tych parametrów można odczytać przy pomocy następującej instrukcji:

$zmienna = $params->get('nazwa_parametru');

Instrukcję tę można wywołać zarówno w pliku głównym modułu jak i w pliku widoku czy w helperze. Zmienne, zainicjowane w pliku głównym modułu nie muszą być jawnie przekazywane do szablonu. Zadba o to silnik Joomla!.

Helper

Znów napisze coś, co dla niektórych będzie „oczywistą oczywistością”. Helper to plik w którym zdefiniowana jest klasa odpowiedzialna za przetwarzanie danych na potrzeby modułu. Jak by się uprzeć, to nie musi być to klasa. Luźny zbiór funkcji a nawet kod sekwencyjny byłby równie dobry. Tylko jakby trochę mniej elegancki. Jeśłi ma to być jednak klasa, to jej nazwa powinna mieć (choć nie jest to wcale konieczne) przedrostek ‚mod’, dalej nazwę adekwatną do nazwy modułu i konczyć się przyrostkiem ‚Helper’. W naszym przypadku:

class modHelloHelper{
    function SayHello($lang){
        switch($lang){
           case 'pl':
              return 'Witaj Świecie';
           case 'en':
              return 'Hello Word';
        }
    }
}

Plik główny modułu

W pliku głównym modułu powinna się znajdować instrukcja która pozwoli dołączyć helper do skryptu, oraz inicjacja odpowiedniego obiektu i wywołanie niezbędnych metod:

require_once (dirname(__FILE__).DS.'helper.php');
$lang = $params->get('lang'); 
$objHelper = new modHelloHelper;
$tresc = $objHelper->SayHello($lang);

Oczywiście inicjalizacja obiektu nie jest niezbędna a metody można wywoływać po prostu statycznie:

$tresc = modHelloHelper::SayHello($lang);

Po dokonaniu niezbędnych obliczeń wystarczy tylko wywołać szablon:

require(JModuleHelper::getLayoutPath('mod_hello'));

Szablon

Nad szablonem nie będę się szczegółowo rozwodzić, bo nie bardzo jest nad czym. Na ogół jest to po prostu kod HTML zawierający wstawki php w którym można wykorzystać wszystkie zmienne zdefiniowane w pliku głównym modułu. Nic specjalnego.

Oczywiście zamiast rozbijać się na kilka plików można z powodzeniem wszystko to zmieścić w jednym pliku. Widziałam takie moduły. Prawdę mówiąc nie podoba mi się taka forma, nawet jeśli w sumie kodu jest niewiele. Jakieś to takie nieporządne.

2 komentarze na "Własny moduł w Joomla!."

1 | radosne dni

11. lutego 2011 o 11:29 pm

Avatar

Przydatne, podoba mi się ten blok, fajne kolorki i dobrze poukładana treść. Moduł już umiem robić, teraz czas na komponent, może nowy artykulik? Bardzo się przyda.

2 | kodeks cywilny

31. maja 2011 o 1:06 pm

Avatar

A czy będzie też jakiś artykuł lub tutorial na temat virtuemart. Bardzo jestem ciekaw jak to sie sprawuje i jak wyglada instalacja i konfiguracja tego modulu.

Formularz komentarza

Wrzesień 2017
P W Ś C P S N
« Lip    
 123
45678910
11121314151617
18192021222324
252627282930  

Archiwa

About

Moje notatki z pracy

Subskrypcja

Wprowadź swój adres email aby zaprenumerować ten blog i otrzymywać powiadomienia o nowych wpisach przez email.

Dołącz do 24 pozostałych subskrybentów

Tematy