[Joomla] Jak osadzić moduł w szablonie artykułu?
This post is 14 years old. Browsers and tools may have changed since then, so check the code against current documentation before you use it.
Dzisiejszy wpis będzie dotyczył osadzania modułów w kodzie szablonu dla CMS Joomla! 2.5.
Jak wiadomo, Joomla! jest jednym z najpopularniejszych CMS-ów na świecie i wiele osób tworzy strony WWW w oparciu o ten system. Jak większość CMS-ów ma swoją logikę tworzenia szablonów. Standardowo, w szablonie możemy korzystać z możliwości dowolnego określania pozycji modułów i komponentów na stronie. Lecz to może być nie wystarczające, gdy chcielibyśmy umieścić specyficzny moduł bezpośrednio w kodzie jakiegoś elementu na stronie, np. artykułu.
Section 1Template overrides w Joomla!
Z pomocą przychodzi nam template overrides, czyli system/metoda nadpisywania widoków komponentów czy modułów zainstalowanych w systemie Joomla! Pokrótce, nadpisywanie widoków w Joomla! polega na skopiowaniu odpowiednich plików z widokami do katalogu szablonu. Na zdjęciu poniżej można zobaczyć gdzie w strukturze komponentów treści Joomla! można znaleźć kod związany z widokiem artykułu.
Widok znajduje się w pliku default.php. Kopiujemy go do odpowiedniego katalogu w katalogu szablonu. W tym przypadku to będzie: html/com_content/article/.
W ten sposób mamy gotową podstawę, aby przejść do momentu wstawiania pozycji modułu bezpośrednio w szablonie artykułu.
Section 2Wstawianie modułu do szablonu artykułu w Joomla!
Na początku musimy się dostać do obiektu dokumentu, który jest generowany przez Joomla! To pozwoli na wygenerowanie pozycji modułu w dowolnym miejscu kodu widoku artykułu.
1 2 3 4 5 6 | <?php $document = &JFactory::getDocument(); $renderer = $document->loadRenderer('modules'); $options = array('style' => 'xhtml'); $position = 'modul-w-artykule'; ?> |
Gdy mamy przygotowane ustawienia wybranej pozycji modułów, to możemy je wywołać w dowolnym miejscu szablonu artykułu za pomocą następującego kodu:
1 | <?php echo $renderer->render($position, $options, null); ?> |
Tym sposobem cel został osiągnięty i wybrana pozycja modułów znajduje się tylko i wyłącznie w szablonie artykułu.