[Solved] Style des Block-Titel von der Existenz des Titel abhängig machen

Begonnen von reddragon, 31 Dezember 2009, 13:19:22

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

reddragon

HI,

Ich bastele gerade ein einem Theme, welches nur auf CSS basiert. In der theme.html sieht der Code für die Blöcke wie folgt aus:
                  <div>
                    <h3>{BLOCK_TITLE}</h3>
                      <div>
                      {BLOCK_CONTENT}
                      </div>
                  </div>


Wenn ich nun für den Block im CMS keinen Titel angegeben habe, dann wird leider der <h3>-Befehl immer noch angezeigt, wie folgt:
                  <div>
                    <h3></h3>
                      <div>
                      Inhalt bla bla bla
                      </div>
                  </div>


Ich habe daraufhin den <h3>-Befehl aus der theme.html entfernt, und diesen versucht in die functions.php integriert:

/**
* parsen der Seiten-Bloecke
*/
function themesidebox($title, $content, $block = array(), $noecho = 0)
{
    global $theme_template, $themesetting;
    switch (true) {
        case empty($block):
        case empty($block['position']):
        case $block['position'] === 'l':
            $block['position'] = 'l';
            $out = $theme_template['block_left'];
            break;
        case $block['position'] === 'r' && in_array($block['bid'], $themesetting['block_right_alternate']):
            $out = $theme_template['block_right_2'];
            break;
        case $block['position'] === 'r':
            $out = $theme_template['block_right_1'];
            break;
    }
    $out = str_replace('{BLOCK_CONTENT}' , $content , $out);
    $out = str_replace('{BLOCK_TITLE}' , '<h3>' . $title . '</h3>'  , $out);
    if ($noecho) {
        return $out;
    } else {
        echo $out;
    }
}


Das hat mir leider auch keine Veränderung gebracht.
Wie baue ich da nun eine Abfrage ein, so dass der <h3>-Befehl nur bei einem vorhanden Titel eingebaut wird?

Andi

Hoi :)

deine Lösung ist einfach und zweckmässig.
Widerspricht ein wenig dem Grundgedanken der Templates, aber für den Eigenbedarf ist das prima.

Dein Problem ist, dass du beim ersetzen mit str_replace() nicht beachtest, ob in der Variablen $title was drin ist.

Vorschlag, nicht getestet, sollte aber funzen:
<?php

if ($title) {
    
// wenn $title gefuellt, <h3> drumrum
    
$out str_replace('{BLOCK_TITLE}' '<h3>' $title '</h3>'  $out);
} else {
    
// wenn nicht, Platzhalter durch Leerstring ersetzen
    
$out str_replace('{BLOCK_TITLE}' ''  $out);
}

?>

schön´s Grüssle, Andi

reddragon

 :gott: :gott:  wie geil!!!

Es Läuft !!! :thumbup: :genie:


In die Richtung hatte ich auch was probiert, aber warum hatte meines nicht funktioniert?

if ($title = 0) {
    $out = str_replace('{BLOCK_TITLE}' , ''  , $out);
} else {
    $out = str_replace('{BLOCK_TITLE}' , '<h3>' . $title . '</h3>'  , $out);
}

bzw.

if ($title = '') {
    $out = str_replace('{BLOCK_TITLE}' , ''  , $out);
} else {
    $out = str_replace('{BLOCK_TITLE}' , '<h3>' . $title . '</h3>'  , $out);
}



Andi

Hoi :)

typischer PHP Anfänger/Umsteiger Fehler  :BD:

= ist ein Zuweisungsoperator, kein Vergleichsoperator

Dein Versuch, wäre so richtig gewesen:
if ($title == '') {  doppeltes ==
schön´s Grüssle, Andi

reddragon

 :mega_shok:

auch, stimmt ja! Der Boolesche Operator!  :'(  Das hatte ich ja schon mal alles in java....


Danke, und feire heute Abend schön  :drinks:      :BD: