Konditional ersetzen

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
Post Reply
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Konditional ersetzen

Post 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)
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
Old Boy
Posts: 1203
Joined: Fri 23. Nov 2012, 13:52

Re: Konditional ersetzen

Post 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!!!
User avatar
Oliver Georgi
Site Admin
Posts: 9907
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Konditional ersetzen

Post 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 -->');
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Konditional ersetzen

Post 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) ...
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
User avatar
Oliver Georgi
Site Admin
Posts: 9907
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: Konditional ersetzen

Post by Oliver Georgi »

Code: Select all

$content["all"] = render_cnt_template($content["all"], 'ARTICLE_TITLE', $content['article_title']);
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Konditional ersetzen

Post by update »

Autsch! Ich hatte immer noch dieses str_replace da drin. Danke! Erste Sahne! :)
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
Post Reply