Moin
mal ein kleiner Schnellkurs dazu...
In der theme.html befindet sich normalerweise HTML-Code in folgender Art:
<td class="blocksLeft" width="160" valign="top">
<!-- START blocks_left_loop -->
<!-- START block_left -->
hier irgendwelcher html-code
<!-- END block_left -->
<!-- END blocks_left_loop -->
</td>
Das ist die linke Tabellenspalte, die wiederum den html-Code für die linken Blöcke enthält.
Diese Tabellenspalte wird auch in 160 pixel Breite angezeigt, wenn gar keine Blöcke darin angezeigt werden.
Die muss also weg, wenn die Blöcke nicht angezeigt werden.
Das können wir erreichen mit der theme-engine Funktion
theme_extract_part(). Mit dieser Funktion können wir aus dem Template jede beliebigen Teil entfernen oder ersetzen, der mit den speziellen Start und End-Kommentaren gekennzeichnet ist:
<!-- START block_left -->xxxxx<!-- END block_left -->
Vorgehensweise:
1. Wir ergänzen die theme.html an der oben genannten Stelle wie folgt:
<!-- START schmeiss_die_linken_bloecke_weg -->
<td class="blocksLeft" width="160" valign="top">
<!-- START blocks_left_loop -->
<!-- START block_left -->
hier irgendwelcher html-code
<!-- END block_left -->
<!-- END blocks_left_loop -->
</td>
<!-- END schmeiss_die_linken_bloecke_weg -->
Der String "schmeiss_die_linken_bloecke_weg" kann beliebig gewählt werden, er ist ein eindeutiger Name für diesen Bereich.
2. In der functions.php des Themes ergänzen wir die Funktion
theme_replace_end() um den folgenden Codeschnippsel, der dem bereits bekannten Schnippsel zum ausblenden der linken Blöcke sehr ähnelt:
if (isset($_REQUEST['name'])) {
if ($_REQUEST['name'] == 'Forum') {
theme_extract_part($template, 'schmeiss_die_linken_bloecke_weg');
}
}
3. das war's schon
Die Funktion theme_extract_part entfernt also nach dem generieren des HTML-Codes, alles was zwischen
<!-- START schmeiss_die_linken_bloecke_weg --> und
<!-- END schmeiss_die_linken_bloecke_weg --> steht. In dem Fall also, die Tabellenspalte, die die linken Blöcke enthält.
Nachteil ist, dass die Datenbankabfragen der Blöcke trotzdem ausgeführt werden. Um das zu unterbinden, muss ich mich selbst erst wieder näher mit der Engine beschäftigen. Melde mich nochmal....