chevron-left chevron-right

Piotr Nalepa Frontend, architecture and AI

[Joomla] Jak osadzić moduł w szablonie artykułu?

This version
blog.piotrnalepa.pl/2012/11/07/joomla-jak-osadzic-modul-w-szablonie-artykulu
Published
Author
, Staff Software Engineer
Category
Joomla!
Feedback
Write to me · Post on X

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.

Gdzie można znaleźć widok artykułu w Joomla!

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/.

Gdzie wstawić plik widoku szablonu

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.

Example 1PHP
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:

Example 2PHP
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.

Share
Feedback

About the author

Staff Software Engineer

I've been writing this blog since 2009 and building for the web professionally for 14 years. Today I lead the frontend of the Cosmos platform at Bishop Fox, where I've been since day one of the project. Before that I worked at OLX, KUDO, Auto1 and eZ Systems. Here I write about what I've learned in practice: JavaScript, TypeScript, React, CSS and frontend architecture. I've also spoken at conferences across Poland and Europe. Got a question or an idea for a post? Let me know!