--=REKLAMA=--

Aktualizacja szablonów Joomla z wersji 1.5 do 2.5

Z Joomla!WikiPL

Ta strona objaśnia, w jaki sposób unowocześnić lub przekształcić szablon opracowany dla Joomla 1.5 do wykorzystania w nowszych wersjach Joomla. Powstała z informacji zwrotnych od osób, które już dokonywały takiej aktualizacji.

Jeśli przytrafił Ci się problem podczas aktualizacji szablonu albo masz jakiekolwiek informacje, które mogą pomoc innym, umieść je na stronie dyskusji. Po zweryfikowaniu tych informacji włączymy je do poradnika.

Chris Davenport przygotował slides na JoomlaDay 2010 w Wielkiej Brytanii prezentację, która objaśnia zmiany w szablonach dla Joomla 1.6+.

Plik manifestu szablonu

W pliku templateDetails.xml istotne są dwie zmiany:

  • deklaracja typu dokumentu
  • zmiana znacznika <install> na znacznik <extension>, jak pokazano niżej:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install PUBLIC "-//Joomla! 1.6//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/1.6/template-install.dtd">
<extension version="2.5" type="template" client="site">

Zwróć uwagę na nowy atrybut client, który w przypadku szablonu witryny przyjmuje wartość site, a w przypadku szablonu zaplecza administrator.

Pamiętaj również o tym, aby końcowy znacznik </install> zastąpić znacznikiem </extension>.

Parametry szablonu

Parametry szablonów definiowane są w pliku manifestu - templateDetails.xml. W wersji 1.5 parametry definiowane są jako część sekcji <params> i każdy parametr definiowany jest jako <param>. W wersji 1.6+ parametry zawarte są w sekcji <config> i traktowane jako <field> zagnieżdżone w <fieldset> oraz w tagach <field> tak jak to pokazano poniżej

<config>
        <fields name="params">
            <fieldset name="basic">
                <field name="" type="" default="" label="" description="">
                    <option value="1">On</option>
                    <option value="0">Off</option>
                </field>
                <field name="" type="" default="" label="e" description="" />
            </fieldset>
        </fields>
    </config>

Znacznik <fieldset name="">otacza grupę elementów. Zastosowanie atrybutu name=basic definiuje opcje podstawowe, a atrybutu name="advanced" opcje rozszerzone.

W definicjach parametrów nadal obowiązują atrybuty name="", type="", default="", label="" i description="".

Poza głównymi plikami szablonów dostęp do tych parametrów można uzyskać za pomocą klasy JApplication. Wcześniej wartości parametrów przechowywane były w postaci zwykłego tekstu w plikach params.ini. Aby uzyskać dostęp do tych wartości spoza szablonu trzeba było zapoznać się z plikiem .ini i ładować dane do JRegistry lub obiektu JParameters. Teraz ustawienia parametrów zapisywane są w bazie danych wraz z innymi informacjami o szablonie. Obecnie możemy załadować parametry przekazująć prawdziwą zmienną do metody getTemplate obiektu JApplication. Jest ona dostępna tak:

$app		=& JFactory::getApplication();
$template	= $app->getTemplate(true);
$params	        = $template->params;
$variable	= $params->get('variable');

Pozwala to uzyskiwać dostęp do parametrów szablonów we własnych zamiennikach układów dla innych komponentów i modułów (w nadpisywaniu szablonów).

Obiekty i metody

Dostęp do nazwy witryny

  • <?php echo $mainframe->getCfg('sitename');?> zastąpiono teraz $app->getCfg('sitename'); gdzie $app = JFactory::getApplication();

Wywołanie biblioteki MooTools

Jeśli gdzieś na początku na początku pliku 'index.php' masz wywołanie biblioteki javascript Mootools, jak poniżej:

JHTML::_('behavior.mootools');

zmień na następujące wywolanie

JHTML::_('behavior.framework', true);

Pliki językowe

Pliki językowe są używane do tłumaczenia napisów umieszczonych w szablonie i wyświetlanych na stronie. W szablonach dla Joomla 2.5 w porównaniu z szablonami dla Joomla 1.5 musimy uwzględnić kilka zmian:

  • dodać pliki ...sys.ini zawierające tłumaczenia napisów pojawiających się podczas instalacji szablonu (nazwa, opis), np. pl-PL.tpl_nazwaszablonu.sys.ini
  • poprawić w pliku index.php wszystkie teksty do tłumaczenia – zapisać je jako klucze - wielkimi literami i bez spacji oraz znaków specjalnych (zamiast spacji używamy dolnych łączników)
  • poprawić w plikach językowych klucze tłumaczonych napisów (zob. wyżej)
  • wszystkie tłumaczenia w pliku językowym ująć w cudzysłowy
  • w przypadku, gdy wewnątrz tłumaczonych napisów pojawiały się znaki cala (cudzysłowu), należy je zastąpić ciągiem: "_QQ_"
  • poprawić w plikach językowych nagłówki i oznaczenia komentarzy (zastąpić # i znaki /* średnikiem - ;)

Ponadto na pliki językowe najlepiej stworzyć odpowiedni folder, a w nim podkatalogi.. W pliku templateDetails.xml zmieniamy odwołania do plików językowych.

<languages folder="language">
   <language tag="en-GB">en-GB/en-GB.tpl_ nazwaszablonu.ini</language>
   <language tag="en-GB">en-GB/en-GB.tpl_ nazwaszablonu.sys.ini</language>
   <language tag="pl-PL">pl-PL/pl-PL.tpl_nazwaszablonu.ini</language>
   <language tag="pl-PL">pl-PL/pl-PL.tpl_nazwaszablonu.sys.ini</language>
</languages>

W strukturze katalogu szablonu pliki językowe należy umieścić w odpowiednich podkatalogach, np. polskie pliki językowe w katalogu szablon/language/pl-PL/

Poprawki w plikach językowych

Najpierw popraw nagłówek i wiersze, w których zamieszczone są komentarze. W Joomla 1.5 stosowano na ich oznaczenie znak # albo znaki /*. W szablonach dla Joomla 2.5 powinny to być znaki średnika, np. nagłówek może wyglądać tak:

; @copyright Copyright (C) 2012 Polskie Centrum Joomla
; http://www.joomla.pl
; @license GNU/GPL
; Cudzysłowy w napisach muszą być sformatowane jako "_QQ_"
 
; komentarz

Następnie popraw wszystkie klucze językowe (teksty po lewej stronie znaku =. W plikach szablonów dla Joomla 1.5 były one zapisywane wielkimi literami, wolno było stosować znaki spacji, nawiasy i inne. W plikach szablonów dla Joomla 2.5 i wyższych nie wolno stosować spacji ani innych znaków specjalnych (np. nawiasów), klucz musi się zaczynać od litery.

W taki sam sposób należy poprawić tłumaczone teksty w pliku index.php (i innych, jeśli szablon zdefiniowano w wielu plikach php). Jeżeli w tekście tłumaczonego napisu znajdują się znaki cudzysłowu, należy je zastąpić ciągiem "_QQ_", np. Przykład

Joomla! 1.5

TLUMACZONY NAPIS =<p class="wyroznij">Tłumaczony napis</p>

Joomla! 2.5

TLUMACZONY_NAPIS =”<p class="_QQ_"wyroznij"_QQ_">Tłumaczony napis</p>”

Kody błędów

Kody błędów

  • $this->error->code został zastąpiony przez $this->error->getCode();
  • $this->error->message został zastąpiony przez $this->error->getMessage();

Wykrywanie

Zdarza się niekiedy, że przekształcony szablon nie jest widoczny na liście szablonów, mimo że kodowanie wydaje się poprawne. Upewnij się, że pliki szablonów znajdują się w katalogu szablonu /templates/nazwa_szablonu. Upewnij się, że jest tam plik templateDetails.xml z poprawnie wpisana nazwą szablonu. Następnie uruchom proces wykrywania.

  1. Przejdź na zapleczu do Rozszerzenia/Instalacje/Wykrywanie
  2. Kliknij w przyborniku ikonę Wykryj.
  3. Gdy szablon pojawi się na liście, zaznacz go, a następnie kliknij w przyborniku ikonę Instaluj.

Nadpisywanie układu (szablonem)

com_content

Jeśli korzystałeś z nadpisywania szablonem Beez lub - w swoim szablonie - z kodu nadpisującego układy pochodzącego z szablonu Beez, możesz się spotkać z komunikatem błędu: JHtml::icon not supported. File not found. podczas migracji szablonu do nowszych wersji Joomla. Aby to naprawić, wystarczy dodać następującą instrukcję w górnej części szablonu HTML, w pliku html/com_content/article/default.php file:

JHtml::addIncludePath( JPATH_COMPONENT . '/helpers' );

Alternatywna metoda - użycie szablonu w wersji 2.5

Rozpocznij od podstawowego szablonu, który działa w aktualnej wersji Joomla. W przykładzie poniżej posłużono się szablonem Atomic.

  1. Skopiuj caly folder /templates/atomic do nowego folderu w katalogu /templates
  2. Zmień nazwę nowego folderu. Na przykład, możesz go nazwać to moj-atomic, aby oznaczyć go jako własny oraz przypominać, że jest modyfikacją szablonu Atomic
  3. W pliku index.php nowego szablonu, usuń wszystko między znacznikami <body> </body>
  4. Skopiuj całą zawartość między znacznikami <body> </body> ze swojego szablonu używanego w Joomla 1.5 i wklej do nowego szablonu w miejsce usuniętej poprzednio zawartości.
  5. Usuń bądź zmień nazwę pliku template.css skopiowanego z szablonu Atomic
  6. Skopiuj do katalogu /css nowego szablonu plik template.css ze swojego starego szablonu 1.5
  7. Zaktualizuj plik templateDetails.xml w swoim zmienionym szablonie:
    1. Zmień wpis miedzy znacznikami <name> </name><name> tak, aby pasował do nazwy folderu, w którym znajduje się nowy szablon. Wielkość znaków ma istotne znaczenie. Jeśli masz nowy szablon w folderze /templates/moj-atomic, wpis powinien wyglądać tak: <name>moj-atomic</name>, a jeśli w folderze /templates/moj-Atomic, to konsekwentnie - <name>moj-Atomic</name>
    2. Zamień sekcję <positions> na skopiowaną z pliku templateDetails.xml szablonu używanego w Joomla 1.5 (tak, aby lista pozycji odpowiadała pozycjom zadeklarowanym w pliku index.php (w części, którą kopiowałeś ze starego szablonu)
    3. Zmień inne elementy, jeśli jest to konieczne. Na przykład, może chcesz zmienić datę utworzenia i numer wersji.
  8. Usuń obrazki w folderze /template/image i umieść tam swoje obrazy .
  9. Usuń z sekcji <head> w pliku index.php polecenia ładujące pliki CSS i Javascript, które nie są potrzebne.

Przegląd głównego katalogu

Porównaj system plików w głównym katalogu nowego szablonu z systemem plików w głównym katalogu starego szablonu. Konieczne może się okazać skopiowanie kilku starych plików do katalogu nowego szablonu. Na przykład trzeba będzie skopiować do katalogu nowego szablonu plik favicon.ico.

Usuń z katalogu nowego szablonu folder /html z plikami pochodzącymi z szablonu wzorcowego, skopiuj w ich miejsce pliki z katalogu /html ze swojego starego szablonu.

Źródła

Dziękujemy za wkład

» Stefan Wajda [zwiastun],