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?
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);
}
?>
: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);
}
Hoi :)
typischer PHP Anfänger/Umsteiger Fehler :BD:
= ist ein Zuweisungsoperator (http://de2.php.net/manual/de/language.operators.assignment.php), kein Vergleichsoperator (http://de2.php.net/manual/de/language.operators.comparison.php)
Dein Versuch, wäre so richtig gewesen:
if ($title == '') {
doppeltes ==
: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: