Page 1 of 1

Konditional ersetzen

Posted: Thu 4. Jun 2015, 21:35
by update
Wie kriege ich das hin, bei

Code: Select all

    if( ! (strpos($content["all"],'{ARTICLE_TITLE}')===false)) {
       $content["all"] = str_replace('{ARTICLE_TITLE}', $content['article_title'], $content["all"]);
    }
so Wrapper wie [ARTICLE_TITLE]<h1>{ARTICLE_TITLE}</h1>[/ARTICLE_TITLE] dazuzubasteln, damit im Falle der Nichtbefüllung der Tag h1 keinen Platz einnimmt, sondern aus dem Code verschwindt? Oder wo und wie wird das definiert?
Jetzt werden die nämlich nicht gerendert, sondern stehen im Klartext blöd rum ;) ...

(Hintergrund: Artikeltitel und ~untertitel sollen nicht über dem Artikel stehen, sondern an anderer Stelle im Template)

Re: Konditional ersetzen

Posted: Fri 5. Jun 2015, 00:10
by Old Boy
Hast du mal versucht:

Code: Select all

[ARTICLE_TITLE_ELSE][/ARTICLE_TITLE_ELSE][ARTICLE_TITLE]<h1>{ARTICLE_TITLE}</h1>[/ARTICLE_TITLE]
Aber wieso wird <h1> angezeigt?
Im Template article_summery.tmpl steht doch:

Code: Select all

[TITLE]<h1>{TITLE}</h1>[/TITLE]
Wenn also der Titel NICHT vorhanden ist wird doch auch garkein <h1> generiert!!!

Re: Konditional ersetzen

Posted: Fri 5. Jun 2015, 07:40
by Oliver Georgi
Grundsätzlich — Keep it simple.
update wrote:Wie kriege ich das hin, bei

Code: Select all

    if( ! (strpos($content["all"],'{ARTICLE_TITLE}')===false)) { … }
Das ist erst mal nur ein Hinweis, 2x nachzudenken beim Schreiben von Code. Effektiv bleiben. Schon spart man einen Prüflauf!

Code: Select all

(!(strpos($content["all"],'{ARTICLE_TITLE}')===false)) === (strpos($content["all"],'{ARTICLE_TITLE}')!==false)
Ich weiß nicht, ob Du das im Frontend Render genau so machen möchtest, oder nur exemplarisch benutzt. Das Beispiel wird nichts, da solche Tags an der Stelle bereits nicht mehr existieren, da bereits geparst.

Möchtest Du eigene Templates mit dieser Methodik bauen, dann hilft das hier:

Code: Select all

[TAG]It's true {TAG}[/TAG][TAG_ELSE]Or not true, in this case (else) take {TAG_ELSE}[/TAG_ELSE]
$text = render_cnt_template($text, 'TAG', $textReplaceIfTrue, $textReplaceElse);
Der Else-Part ist erst später hinzugekommen und wird was Replacer im System anbelangt bisher kaum (denke sogar nicht) benutzt. Aber für die Custom Entwicklung und Module ist das unter Umständen hilfreich.

Daneben existiert noch eine andere Funktion, die nur zum Entfernen da ist, wenn man z.B. Bereiche einfach nicht mehr benötigt und in Gänze entfernen möchte.

Code: Select all

$text = replace_cnt_template($text, 'TAG', '<!-- just nothing, or what else you like to see when tag section is replaced -->');

Re: Konditional ersetzen

Posted: Fri 5. Jun 2015, 10:46
by update
Danke für Deine Hinweise! :)
Ich habe Titel und Untertitel nicht über dem Artikelinhalt sondern außerhalb. Das Artikeltemplate hat demzufolge auch kein TITLE und SUB. Und weil, wie Du ja sagst, das dann nicht mehr gerendert wird, habe ich dieses kleine Konstrukt im FE-renderer eingesetzt. Das macht ja (Deine Anregung habe ich eingebaut) auch brav, was es soll. Weil es aber auf einer Artikellisting-Seite (weil automatisch) keinen Titel mit Untertitel gibt, habe ich das hier im Template

Code: Select all

<!-- Page Titles -->[ARTICLE_TITLE]<h1>{ARTICLE_TITLE} </h1>[/ARTICLE_TITLE][ARTICLE_TITLE_ELSE][/ARTICLE_TITLE_ELSE][ARTICLE_SUBTITLE]
						<h2>{ARTICLE_SUBTITLE} </h2>[/ARTICLE_SUBTITLE][ARTICLE_SUBTITLE_ELSE]	[/ARTICLE_SUBTITLE_ELSE]<!-- /Page Titles -->
Das funktioniert mit article_title und article_subtitle auch wie geschmiert, bis auf eben das Rendering der Ausdrücke in den eckigen Klammern. Die kriege ich einfach nicht weg (mal abgesehen von der ELSE, aber das wäre dann der nächste Schritt) ...

Re: Konditional ersetzen

Posted: Fri 5. Jun 2015, 10:50
by Oliver Georgi

Code: Select all

$content["all"] = render_cnt_template($content["all"], 'ARTICLE_TITLE', $content['article_title']);

Re: Konditional ersetzen

Posted: Fri 5. Jun 2015, 10:57
by update
Autsch! Ich hatte immer noch dieses str_replace da drin. Danke! Erste Sahne! :)