Selektywne ładowanie komponentów w Joomla 1.5
| Webmaster - Joomla |
W zależności od typu zawartości możemy chcieć ładować różne dodatkowe elementy - arkusze stylów css (np. do forum, galerii, katalogu) czy też skrypty. Aby uniknąć robienia tego zawsze możemy sprawdzać typ użytkownika (zarejestrowany lub gość) oraz np. wyświetlany komponent. W tym celu w pliku index.php templatki umieszczamy warunki:
Warunek sprawdzający ładowany komponent (przykład z ładowaniem pliku css komponentu forum ccboard)
Warunek sprawdzający ładowany komponent (przykład z ładowaniem pliku css komponentu forum ccboard)
<?php
if ((JRequest::getVar('option')=='com_ccboard'))
echo('baseurl. '/templates/astrosun/css/ccboard.css" type="text/css" />')
?>Warunek sprawdzający typ użytkownika (w przykładzie wyłączone jest ładowanie wszystkich skryptów domyślnie dodawanych przez joomla, a wykorzystywany tylko przez niektóre komponenty oraz w panelu administratora)
<?php
$user =& JFactory::getUser();
$headerstuff = $this->getHeadData();
$headerstuff['scripts'] = array();
if (($user->get('guest') == 1)) {
$this->setHeadData($headerstuff);
}
if (($user->usertype == 'Registered')) {
$this->setHeadData($headerstuff);
}
?>
Komentarze
if ((JRequest::get Var('option')=='com_ccboard'))
to warunek sprawdzający czy dany chce być ładowany (tutaj com_ccboard) - czyli czy na stronie zamierza się pojawić.
Dalej powinno być tak:
$headerstuff = $this->getHeadData();
Tym poleceniem pobieramy do tablicy $headerstuff cały nagłówek strony. Wśród wielu informacji jest także wpis o ładowanych skryptach zapisane pod indeksem scripts
Następnie poleceniami
$headerstuff['scripts'] = array();
$this->setHeadData($he aderstuff)
wywalam wszystko co w nagłówku zawarte co nie jest zawsze porządane, choć zwykle wystarczy. W tym przypadku usuwamy wszystkie ładowane skrypty - unikamy w ten sposób ich załadowania.. Możemy oczywiście usunąć tylko te, które chcemy używając np. array_walk()
Kanał RSS z komentarzami do tego postu.