Programowanie
Szablon
Ukrywanie kodu modułów | Ukrywanie kodu modułów |
|
|
Użyteczna możliwość określania we właściwościach modułów, na których stronach mają być wyświetlane wymaga takiej elastyczności szablonu, by zapobiec pojawianiu się na nieplanowanych pustych przestrzeni czy też generowaniu w kodzie strony pustych elementów <div>. Służą temu celowi omówione już techniki ukrywania kolumn oraz techniki ukrywania modułów.
Czy są tu moduły?W obu technikach korzystamy z instrukcji warunkowej PHP oraz funkcji Joomla <?php if (mosCountModules('pozycja')) { ?> Tutaj instrukcja wczytująca moduły i ewentualnie znaczniki obejmujących ją elementów div <?php } ?> Tłumacząc na prosty język, napisaliśmy: Jeśli są moduły opublikowane w obszarze ’pozycja’ wykonaj instrukcję wczytującą moduły i ewentualnie umieść znaczniki HTML. Ukrycie kodu wczytującego modułyW najprostszym przypadku używamy następującej instrukcji: <?php if (mosCountModules('pozycja')) { ?> <?php mosLoadModules( 'pozycja');?> <?php } ?> Oznacza ona: Jeśli w obszarze ’pozycja’ są opublikowane moduły, umieść obszar ’pozycja’ i zawartość modułów. Gdybyśmy tego nie uczynili, w kodzie źródłowym strony mógłby się znaleźć taki np. fragment: <div class="moduletable"> </div> Zupełnie niepotrzebnie. A jeśli na dodatek w arkuszu stylów ustawimy we własnościach klasy Ukrycie kodu HTML i modułówInstrukcję wczytującą moduły umieszczamy niekiedy między znacznikami elementu <?php if (mosCountModules('user1')) { ?> <div id="naskroty"> <?php mosLoadModules( 'user1,-1');?> </div> <?php } ?> Ukrycie modułów w kilku pozycjachJeśli chcemy ukryć moduły, dla których planujemy miejsce w zagnieżdżanych elementach, korzystamy z operatora logicznego <?php if (mosCountModules('left') || mosCountModules('user1')) { ?> <div id="lewakol"> <div class="ramka_wewn"> <div id="navmod"> <?php mosLoadModules('user1',-2);?> </div> <?php mosLoadModules('left',-2);?> </div> </div> <?php } ?> W wyniku dzialania tego kodu najpierw następuje sprawdzenie, czy w pozycji ’left’ lub w pozycji ’user1’ zostały umieszczone i opublikowane jakieś moduły. Możliwe są cztery sytuacje:
Taki kod wynikowy (w pliku HTML) uzyskamy w pierwszym przypadku: <div id="lewakol"> <div class="ramka_wewn"> <div id="navmod"> </div> ZAWARTOŚĆ MODUŁÓW UMIESZCZONYCH w left </div> </div> W drugim przypadku otrzymamy następujący kod wynikowy: <div id="lewakol"> <div class="ramka_wewn"> <div id="navmod"> ZAWARTOŚĆ MODUŁÓW UMIESZCZONYCH w user1 </div> </div> </div> W trzecim przypadku: <div id="lewakol"> <div class="ramka_wewn"> <div id="navmod"> ZAWARTOŚĆ MODUŁÓW UMIESZCZONYCH w user1 </div> ZAWARTOŚĆ MODUŁÓW UMIESZCZONYCH w left </div> </div> W czwartym przypadku nie otrzymamy żadnego kodu wynikowego. Zastosowane rozwiązanie ma pewną usterkę. W pierwszym przypadku otrzymamy w kodzie jeden pusty element. Wystarczy nieco rozbudować instrukcję, by takiego zdarzenia uniknąć: <?php if (mosCountModules('left') || mosCountModules('user1')) { ?> <div id="lewakol"> <div class="ramka_wewn"> <?php if (mosCountModules('user1')) { ?> <!-- dodana linia --> <div id="navmod"> <?php mosLoadModules( 'user1,-1');?> </div> <?php } ?> <!-- dodana linia --> <?php mosLoadModules('left',-2);?> </div> </div> <?php } ?> W szablonie opartym na tabelachNie polecamy wprawdzie stosowania zagnieżdżonych tabel w projektowaniu szablonów, ale zdarza się przecież, że trzeba zmodyfikować zakupiony lub pobrany z Sieci szablon, oparty na tabelach. Zobaczmy, jak w takim szablonie ukryć moduły. Przykład ma dodatkowy walor: zwróć uwagę, ile kodu zaciemniającego czytelność szablonu trzeba umieścić: </td><!-- KONIEC KOLUMNY CENTRALNEJ --> <?php if ((mosCountModules('right')) || (mosCountModules('user5') ) || (mosCountModules('user6') )) {?> <td width="180" valign="top"><!-- PRAWA KOLUMNA --> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td width="100%" valign="top"> <?php loadModules( 'right' ); ?> </td> </tr> <?php if (mosCountModules( 'user5' )); { ?> <tr> <td width="100%" valign="top"> <?php loadModules( 'user5' ); ?> </td> </tr> <?php } ?> <?php if (mosCountModules( 'user6' )); { ?> <tr> <td width="100%" valign="top"> <?php loadModules( 'user6',-2 ); ?> </td> </tr> <?php } ?> </table> </td><?php }?> </tr> Uwagi, źródłaJeżeli masz sugestie odnośnie treści lub chcesz zgłosić poprawki do tego rozdziału, skomentuj go albo umieść wiadomość na forum: Dokumentacja - Propozycje, zmiany, poprawki Dziękujemy! Stefan Wajda, Zespół Dokumentacji PCJ |
| « poprzedni artykuł | następny artykuł » |
|---|






