--=REKLAMA=--

Nadpisywanie szablonem i układy alternatywne

Z Joomla!WikiPL

Wersja Zwiastun (dyskusja | edycje) z dnia 22:38, 28 cze 2014

(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

Wprowadzenie do alternatywnego typu układu w wersji 2.5 +

W Joomla 1.5 wprowadzono pojęcie nadpisywania szablonem widoków standardowych (układów). Joomla 2.5 wzbogacono o nowy zestaw funkcji, które dają administratorom witryn znacznie większą kontrolę nad sposobem wyświetlania artykułów, kontaktów, doniesień i skrótów (zakładek) do innych stron internetowych. Istnieją cztery rodzaje układów alternatywnych:

  1. Alternatywne układy modułów
  2. Alternatywne układy komponentów
  3. Alternatywne układy kategorii
  4. Alternatywne układy pozycji menu

Układ alternatywne działają w sposób podobny do funkcji nadpisywania widoków szablonem, ale zapewniają więcej możliwości i większą kontrolę. Każdy typ został omówiony poniżej.

Alternatywne układy modułu

Tworzenie alternatywnego układu modułu jest podobne do tworzenia widoku nadpisywanego szablonem. W obu przypadkach trzeba utworzyć katalog nazwany templates/<twoj szablon>/html/<nazwa modułu>. Na przykład katalog dla alternatywnego lub nadpisanego widoku modułu Logowanie w szablonie Beez 5 utworzymy w lokalizacji templates/beez5/html/mod_login/

Istnieją dwie istotne różnice między nadpisywaniem widoku szablonem a układem alternatywnym. Pierwszą z nich jest nazwa pliku. Dla widoku nadpisywanego szablonem trzeba użyć nazwy "default.php" - takiej samej, jak nazwa rdzennego pliku. Dla widoku alternatywnego można zastosować dowolną nazwę. Jedyną zasadą jest, że nazwa pliku nie może mieć wewnątrz żadnych podkreślników (znaków '_'). Dzięki temu można tworzyć układy alternatywne zakodowane w wielu plikach - pliku podstawowym, definiującym podstawowy szkielet, który ma nazwę bez podkreślnika, oraz innych plików, definiujących składowe widoku alternatywnego, których nazwy zawierają znak podkreślenia ('_'). Na przykład, można mieć plik podstawowy nazwany mojelogowanie.php, który wywoływać będzie (uruchamiać) plik mojelogowanie_fragmentWidoku.php.

Drugą ważną różnicą jest to, że w przeciwieństwie do plików nadpisujących widoku szablonów, które są wywoływane (uruchamiane) automatycznie, gdy moduł jest wyświetlany na stronie za pomocą szablonu, w którym zdefiniowano nadpisany widok, pliki widoków alternatywnych uruchamiane są jedynie wówczas, gdy zostaną wskazane jako wartość opcji Układ alternatywny na stronie właściwości modułu. W Joomla 2.5 i nowszych mamy nowy parametr w zestawie opcji wzbogaconych, nazwany Układ alternatywny, jak pokazano na ilustracji poniżej.

poradnik_nadpisywanie_szablonem_01.png

Wartościami do wyboru w tym parametrze będzie lista wszystkich plików (bez znaku podkreślenia), które dla tego modułu zostały umieszczone w katalogu szablonu. Nazwę pliku można również przetłumaczyć, korzystając z pliku językowego szablonu pl-PL.tpl_szablon.sys.ini. Na przykład, jeśli dodasz linię

TPL_BEEZ5_MOD_LOGIN_LAYOUT_NOLOGIN = "Alternatywny widok Logowania"

do pliku "pl-PL.tpl_beez5.sys.ini", to nazwa pliku mojelogowanie.php zostanie przetłumaczona na "Alternatywny widok Logowania".

Bardzo ważne jest przy tym, aby pamiętać, ze jeśli we właściwościach modułu wybierzemy układ alternatywny, to Joomla będzie próbował użyć tego pliku bez względu na to, jaki szablon jest używany do wyświetlania strony, na której znajduje się moduł. Jest zatem obowiązkiem administratora upewnić się, że plik z alternatywnym widokiem zadziała we wszystkich szablonach, używanych do stron, na których wyświetlany jest moduł.

Układy alternatywne dodatku (Testowane z Joomla 3.1)

Ikona informacja.png
 Informacja

 Ta funkcja jest stosunkowo nowa, może być jeszcze nieobsługiwana przez wszystkie dodatki

.

Tak, możliwe jest, aby nadpisać kod wynikowy, a tym samym widoki generowane przez niektóre dodatki.

Przykładowo, aby zastąpić standardowy wygląd nawigacji generowanej przez dodatek Nawigacja (pagenavigation) w szablonie Beez5 (odpowiedzialny za wyświetlanie łączy poprzedni/następny w widoku artykułów), utwórz katalog templates/beez5/html/plg_content_pagenavigation/ i skopiuj do niego plik oryginalnego układu z katalogu plugins/content/pagenavigation/tmpl/default.php.

Następnie dokonaj zamierzonych modyfikacji.

Układy alternatywne komponentów

Alternatywne układy widoków generowanych przez komponenty działają podobnie, jak opisane powyżej alternatywne układy modułów. Podobnie jak poprzednio, aby na przykład utworzyć alternatywny układ dla standardowego widoku artykułu, należy umieścić plik definiujący nowy układ w katalogu templates/beez5/html/com_content/article/. I podobnie jak w przypadku układów alternatywnych widoków modułów, plik należy nazwać dokładnie tak samo, jak plik rdzenny. Nazwa pliku nie może też zawierać znaku podkreślenia ('_'). Ponadto w tym samym katalogu nie może być tak samo nazwanego pliku XML.

Plik główny układu alternatywnego umieszczamy w tym samym folderze, w którym umieszczamy pliki nadpisujące rdzenne układy. Na przykład, aby stworzyć alternatywny układ dla artykułu szablonu "beez5", należy umieścić jego plik w folderze "templates/beez5/html/com_content/article /". Podobnie jak w przypadku układów modułu, plik główny układu nie może zawierać w nazwie podkreślenia. Ponadto, nie powinno być pliku XML o tej samej nazwie w tym folderze. (Kwestię plików XML omówimy poniżej, w części Alternatywne układy pozycji menu.)

Alternatywny układ widoków komponentów można skonfigurować globalnie w opcjach komponentów. Na przykład na stronie Artykuły    Opcje na karcie Artykuły po dodaniu plików z alternatywnymi widokami możemy mieć do wyboru takie opcje Układu alternatywnego:

poradnik_nadpisywanie_szablonem_02.png

Dzięki takim globalnym ustawieniom wszystkie widoki poszczególnych komponentów (artykułów, kontaktów, doniesień i zakładek) mogą być dziedziczone.

Tak jak w przypadku alternatywnych widoków modułów, alternatywne widoki komponentów można również ustawić w opcjach pojedynczej pozycji komponentu. Na przykład, w edytorze artykułów parametr Układ alternatywny można zdefiniować w opcjach ... jak poniżej:

Tak jak w przypadku układów modułowych, układy elementów pokazane są jako opcje parametrów na ekranie

Poradnik nadpisywanie szablonem 04.png

Tak jak w przypadku innych parametrów, ustawienie - Z opcji globalnych: Globalnie będzie skutkować zastosowaniem ustawień dokonanych globalnie dla wszystkich artykułów w Opcjach. Ustawienie Z komponentu: Domyślne spowoduje zastosowanie widoku domyślnego zdefiniowanego w komponencie. Układy alternatywne utworzone dla różnych szablonów są przedstawione dla każdego szablonu.

Nazwy plików mogą być tłumaczone. Poniższa deklaracja w pliku językowym

TPL_BEEZ5_COM_CONTENT_ARTICLE_LAYOUT_MYLAYOUT = "Tytuł mojego układu"

przełoży nazwę pliku "mojuklad.php" jak "Tytuł mojego układu".

Widok można zdefiniować w więcej niż jednym pliku. W takim przypadku plik podstawowy musi mieć nazwę bez podkreślenia (np. mojWidok.php), a pliki wczytywane dodatkowo nazwę z podkreśleniem (np. mojWidok_pozycje.php).

Układy alternatywne widoków pozycji mogą być definiowane tylko dla artykułów, kontaktów i doniesień. Zakładki mają widok jednoskładnikowy, więc nie sposób definiować dla nich widoków alternatywnych.

Układy alternatywne widoków pozycji używane są tylko wtedy, gdy spełnione są łącznie dwa warunki: (1) zostały ustawione w opcjach komponentów oraz (2) nie istnieje pozycja menu dla tej konkretnej pozycji (artykułu, kontaktu, doniesienia). Na przykład, jeśli masz jedną lub więcej pozycji menu typu "pojedynczy artykuł" wyświetlających jakiś artykuł, to nie układ alternatywny ustawiony dla tego artykułu nie zostanie zastosowany. Zamiast niego zostanie użyty układ określony w ustawieniach pozycji menu. Jest to zgodne z ogólną zasadą, że o prezentacji elementów treści decydują parametry najbardziej specyficzne (w tym przypadku parametry pozycji menu typu pojedynczy artykuł zastępują mniej specyficzne parametry artykułu.

Układy alternatywne kategorii

Układy alternatywne kategorii działają identycznie, jak układy alternatywne komponentów. Zasady dotyczące nazewnictwa plików są takie same. Różnią się jedynie lokalizacją - umieszczamy je w katalogach kategorii. Na przykład, pliki układu alternatywnego dla kategorii kontaktów umieścimy w katalogu templates/beez5/html/com_contact/category.

Układ alternatywny kategorii można ustawić globalnie na stronie Opcje każdego komponentu. Poniżej znajduje się przykład z ekranu Opcje komponentu Kontakty:

Poradnik nadpisywanie szablonem 05.png

Układ alternatywny kategorii można ustawiać podczas dodawania lub edycji kategorii na stronie menedżera kategorii w Opcjach podstawowych, jak pokazano poniżej.

Poradnik nadpisywanie szablonem 06.png

Układ alternatywny dla kategorii można stosować dla artykułów, kontaktów, doniesień i zakładek.

Tak jak w przypadku komponentów, układu alternatywnego kategorii użyć tylko wtedy, gdy spełnione są łącznie dwa warunki: (1) są ustawione dla kategorii w opcjach globalnych lub parametrach kategorii i (2) nie istnieje pozycja menu wywołującą stronę danej kategorii (np. pozycja menu typu Lista kontaktów w kategorii czy Lista doniesień w kategorii).

Jeśli w menu istnieje pozycja typu lista artykułów w kategorii, lista kontaktów w kategorii, lista doniesień w kategorii, lista zakładek, wówczas zostanie zastosowany układ alternatywny ustawiony w parametrach pozycji menu.

Układ listy czy przeglądu artykułów w kategorii

W przypadku artykułów dostępne są dwa podstawowe układy: przeglądu (bloga) i listy. Na liście parametru Układ alternatywny są one dostępne w sekcji Z komponentu. Tak jak każdą opcję układu możesz teraz wybrać przegląd lub listę albo globalnie (w opcjach menedżera artykułów) lub podczas edycji kategorii artykułów.

Poradnik nadpisywanie szablonem 07.png

Oznacza to, że jak w przypadku wyboru innych opcji układów alternatywnych można kontrolować, który z układów zostanie zastosowany do prezentacji kategorii artykułów - układ listy czy układ przeglądu. Ważne jest, aby pamiętać, że podobnie jak w przypadku innych parametrów, opcja ta będzie zastosowana dopiero w momencie, gdy nie istnieje w menu pozycja prezentująca pojedynczą kategorię artykułów. Także i w tym przypadku obowiązywać będą ustawienia tej pozycji menu.

Alternatywne układy pozycji menu

Alternatywne układy pozycji menu różnią się istotnie od innych pod jednym względem. Aby utworzyć alternatywny układ pozycji menu, musi istnieć plik XML nazwany tak, jak plik z alternatywnym układem. Na przykład, aby stworzyć alternatywny typ pozycji menu nazwany "mojWidokArtykulu" w szablonie Beez5, należy utworzyć dwa pliki w katalogu templates/beez5/html/com_content/article nazwane mojWidokArtykulu.php oraz mojWidokArtykulu.xml. Jeśli chcesz zdefiniować układ w większej ilości plików, musisz dodać nazw tych plików ze znakiem podkreślenia (np. mojWidokArtykulu_fragment.php.

Plik XML wykorzystuje ten sam format, co plik XML rdzennego typu pozycji menu. Dzięki temu możliwe jest nie tylko tworzenie własnych alternatywnych układów, ale także na stosowanie własnych zestawów parametrów. Na przykład można ukryć niektóre standardowe parametry albo dodać nowe.

Alternatywne układy pozycji menu pojawią się na liście wyboru typów pozycji menu, jak pokazano poniżej:

Poradnik nadpisywanie szablonem 08.png

Z alternatywnych układów pozycji menu korzystamy tak samo, jak pozycje standardowe, z tym że alternatywnych układów pozycji menu nie można nadpisać szablonem (jak to sie dzieje w przypadku standardowych typów pozycji menu)

Jak już podkreślano kilka razy wcześniej, ustawienia parametrów pozycji menu mają pierwszeństwo przed ustawieniami parametru Układ alternatywny w komponencie czy kategorii.

Do tłumaczenia alternatywnych układów pozycji menu stosujemy w plikach XML znaczniki w formacie TPL_<nazwa szablonu>_<komponent>_<widok>_<nazwa pozycji menu>_<rodzaj znacznika>. Na przykład poniższe wiersze można zastosować do tłumaczenia nazwy, opcji i opisu alternatywnego układu pozycji menu nazwanego "catmenuitem"

TPL_BEEZ5_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_TITLE="Beez5 Własny widok kategorii"
TPL_BEEZ5_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_OPTION="Beez5 Opcja"
TPL_BEEZ5_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_DESC="Opis własnego widoku kategorii."

Deklaracje te dodajemy do pliku language/pl-PL/pl-PL.tpl_beez5.sys.ini

Początek pliku XML wykorzystujący te deklaracje będzie wyglądać następująco:

<?xml version="1.0" encoding="utf-8"?>
<metadata>
   <layout title="TPL_BEEZ5_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_TITLE" option="TPL_BEEZ5_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_OPTION">
      <help
         key = "JHELP_MENUS_MENU_ITEM_ARTICLE_SINGLE_ARTICLE"
      />
      <message>
         <![CDATA[TPL_BEEZ5_COM_CONTENT_CATEGORY_VIEW_CATMENUITEM_DESC]]>
      </message>
   </layout>

Kontrolowanie parametrów alternatywnych układów pozycji menu

Jak wspomniano powyżej, obecność pliku XML sprawia, że ​dysponujemy alternatywnym układem pozycji menu. Format pliku XML jest taki sam, jak format rdzennych plików XML. W pliku tym można dodać parametry wykorzystywane do formowania układu. Mogą to być takie same parametry jak w rdzennej pozycji menu, ale można też pominąć niektóre parametry rdzenne oraz dodać nowe. Zwróć jednak uwagę, że nowe parametry można wykorzystać w plikach definiujących układ alternatywny, ale nie będą one używane ani w rdzennym modelu, ani rdzennych plikach widoku.

Możliwe jest również nadpisanie ustawień podstawowych parametrów. Jako przyklad niech posłuży możliwość kontrolowania przez plik XML układu alternatywnego opcji przypisania stylów szablonu do pozycji menu. Niekiedy chcesz, aby pozycja pozycja menu była wyświetlana tylko z określonym stylem szablonu, a nie stylem przypisanym swobodnie przez użytkownika. Możesz wówczas ograniczyć użytkownikowi listę stylów do możliwych do przypisania. Wystarczy dodać do pliku XML alternatywnego układu pozycji menu poniższy parametr:

<fields>
  <field
    name="template_style_id"
    type="templatestyle"
    label="COM_MENUS_ITEM_FIELD_TEMPLATE_LABEL"
    description="COM_MENUS_ITEM_FIELD_TEMPLATE_DESC"
    filter="int"
    template="beez5"
    class="inputbox">
  </field>
 </fields>

Ten kod spowoduje zastąpienie rdzennego parametru "template_style_id". Ustawienie szablonu równego "beez5" ograniczy użytkownika tylko do wyboru stylu szablonu "beez5", co widać na ilustracji poniżej. Standardowo administrator może wybierać spośród stylów kilku szablonów, a w przypadku własnego alternatywnego układu pozycji menu tylko sposród stylów zdefiniowanych dla szablonu Beez5.

Poradnik nadpisywanie szablonem 09.png

© Ten materiał jest dokładnym albo swobodnym tłumaczeniem artykułu http://docs.joomla.org/Layout_Overrides_in_Joomla udostępnionego na licencji JEDL na witrynie: Oficjalnej dokumentacji Joomla!.Pierwszy autor oryginału: Dextercowley.

Dziękujemy za wkład

» Stefan Wajda [zwiastun],