skip to content
rift-valley-foundation.org

Template mit variablen Content Blöcken

Problematik:

man möchte eine Website realisieren, die teils Seiten mit zweispaltigem Content (also 2 Content Blöcke) enthält und teils Seiten mit einspaltigem Content, der über die gesamte Breite läuft. So kann man z.B. Seiten realisieren, die links Bilder und rechts Text beinhalten.

In der info.php werden dazu mehrere Content Blöcke definiert:

$block[1]   = 'linke Spalte';

$block[2]   = 'rechte Spalte';

$block[3]   = 'breiter Content';

Normalerweise müsste man hierzu 2 Templates anlegen, einmal eines für linke/rechte Spalte und eines für den breiten Content.

Es geht aber auch anders, alles in einem Template mit einer variablen Anpassung an die in den späteren Einstellungen in  "Abschnitte verwalten" der jeweiligen Seite.

      <?php
            // puffern, in eine Variable ausgeben, Ende Pufferung
            ob_start();
            page_content(3);
            $block4=ob_get_contents();
            ob_end_clean();
           
            ob_start();
            page_content(2);
            $block3=ob_get_contents();
            ob_end_clean();
           
            ob_start();
            page_content(1);
            $block2=ob_get_contents();
            ob_end_clean();
      ?>

 Es werden 3 PHP-Variablen definiert und jeweils mit dem Inhalt eines Blocks als Wert belegt. Anschliessend kann im Template durch eine konditionale Abfrage mit if und else eine Weiche gelegt werden:

 <?php if ($block3!="") {   /*wenn 3. Block nicht leer*/ ?>

  <div id="breitStyle"><?php echo $block3; ?></div>

<? }else{   /*andernfalls, wenn 3. Block doch leer*/  ?>

  <div id="linkeSpalteStyle"><?php echo $block1; ?></div>

  <div id="rechteSpalteStyle"><?php echo $block2; ?></div>

<? } ?>

In der Bedingung if wird abgefragt, ob der Content Block 3 für den breiten Content leer ist oder nicht. Wenn dieser nicht leer ist, wird der Inhalt der Bedingung ausgeführt: ein DIV-Element mit der darin enthaltenen Ausgabe der Variablen $block3 wird angezeigt.

Wenn der Content Block 3 leer ist, soll es also eine 2-spaltige Seite sein und der Rest der Bedingung in else wird ausgeführt: es werden 2 DIV-Elemente für die beiden Spalten mit den darin enthaltenen Ausgaben der Variablen $block1 und  $block2 angezeigt.