PDA

Zobacz pełną wersję : Ukrywanie kolumny prawej



gab.skim
22-05-2006, 13:12
Potrzebuje zrobic podmenu, ktore bedzie sie pokazywac na wybranych podstronach (ustawienia modulu) w czesci "right". Template ustawiony jest w skrocie w 2 kolumnach: lewa dla tresci artykulow, prawa obszar "right".

<tr>
<td bgcolor="#FFFFFF">
<?php mosMainBody(); ?>
</td>
<td bgcolor="#4C4849">
<?php mosLoadModules ( 'right'); ?>
</td>
</tr>
<tr>

Wszystko dziala ok tylko Joomla narzuca juz ten obszar dla kolumny "right" w podstronach gdzie nie jest on aktywowany na szerokosc okolo 6px a jest to pas w innym kolorze, wiec chcialbym go uniknac. Wydaje mi sie ze trzeba wrzucic jakis kod PHP, ktory wyczuwa aktywnosc modulu i odpowiednio to ustawia, ale nie wiem jak to dziala. Prosze o pomoc.

Rybik
22-05-2006, 18:11
Wiele templakow po macoszemu traktuje znikanie prawej kolumny i zostawia tam pusta celke <td>, jednak bez globalnego resetu marginesow w css i kilku dopiskow (cellpadding="0" cellspacing="0") w tabeli-matce ta pusta kolumna bedzie miala 1-10 pikseli szerokosci.
Najelegantszym chyba rozwiazaniem dla szablonow table-based jest "policzenie" ile modułów jest aktualnie publikowanych na danej pozycji (funkcja mosCountModules('right')), ewentualne zsumowanie z innymi pozycjami w prawej kolumnie. Dalej od niezerowej ilosci modulow uzalezniamy to czy srodkowa komorka z mainBody bedzie ladowana normalnie i obok kolejna komorka z naszymi modulami "right" (plus jakies inne), czy bedzie poszerzona na 2 kolumny a pozycja "right" nie zostanie zaladowana".

podaje kod alternatywny całego <tr>


<tr>

<?php if(mosCountModules('right') > 0) { ?>
<!-- Jezeli na pozycji right cos jest -->

<td bgcolor="#FFFFFF" >
<?php mosMainBody(); ?>
</td>
<td bgcolor="#4C4849">
<?php mosLoadModules ( 'right'); ?>
</td>

<?php } else { ?>
<!-- Jezeli na pozycji right nic nie ma -->

<td bgcolor="#FFFFFF" colspan="2">
<?php mosMainBody(); ?>
</td>

<?php } ?>

</tr>

linie pierwszego ifa mozna poszerzyc o inne pozycje modulow, ktore chcemy ladowac w prawej kolumnie:
if(mosCountModules('right') + mosCountModules('user1') > 0)
tylko trzeba je potem pod tym "right" zaladowac.