Verschachtelte ifsets/ifnotsets und neu: ifvalue

Fragen zur Implementierung und/oder Anpassung von ConPresso 4 werden in diesem Forum diskutiert.
Antworten
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Marky hat geschrieben:ja ... bei den Templates muss ich mal auf "IFSET-Validität" prüfen :wink:
Das macht ja im Grunde das Script und gibt Hinweise...

allerdings wird bei Dir ein Tag nicht erkannt oder eben vergessen, denn bei jedem ifset: ... not closed! sollte dabeistehen welches das ist.

Wäre also gut, wenn Du das Template mal veröffentlichen könntest, damit ich weiß, was es zu prüfen gilt...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Marky
ConPresso-Checker
Beiträge: 382
Registriert: 11.12.2005 15:29
Hat sich bedankt: 29 Mal
Danksagung erhalten: 18 Mal
Kontaktdaten:

Beitrag von Marky »

Hi,

Template der Artikelseite

Code: Alles auswählen

<h2><!-- Value: Title; --></h2>
<!-- ifSet: Logo; --><p class="logo"><img src="../_data/<!-- Image: Logo; file; -->" alt="<!-- Image: Logo; alttext; -->" /></p><!-- /ifSet -->
<!-- ifSet: InfoText; -->
<p><!-- HTML: InfoText; nl2br;--></p>
<!-- /ifSet -->
<!-- ifSet: PartnerLinks; -->
<table id="infos">
<tr>
<td id="headline" colspan="2"><strong>Ansprechpartner / Adressen</strong></td>
</tr>
<tr>
<td id="left">
<!-- HTML: PartnerLinks; nl2br;-->
</td>
<td id="right">
<!-- HTML: PartnerRechts; nl2br;-->
</td>
</tr>
</table>
<!-- /ifSet -->
<!-- ifSet: Homepage; -->
<p id="internet">Internet:<a href="<!-- URL: Homepage; url; -->" target="<!-- URL: Homepage; target; -->"><!-- URL: Homepage; text; --></a></p>
<!-- /ifSet -->
<!-- ifSet: MailLinkText; -->
<!-- ifSet: Homepage; --><p id="email">E-Mail:<a href="mailto:<!-- Text: Mailadresse; -->"><!-- Text: MailLinkText; --></a></p><!-- /ifSet -->
<!-- ifNotSet: Homepage; --><p id="email_alone">E-Mail:<a href="mailto:<!-- Text: Mailadresse; -->"><!-- Text: MailLinkText; --></a></p><!-- /ifNotSet -->
<!-- /ifSet -->
<!-- ifSet: Bild; -->
<p class="spacer_15"/>
<p class="attachment"><img src="../_data/<!-- Image: Bild; file-->" alt="<!-- Image: Bild; alttext-->" /></p>
<p class="bild_footer"><!-- Text: Bildtext; strip_tags; --></p>
<!-- ifSet -->
<!-- Artikel-Box -->
Gruß
Marky
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Ah jetzt ja...

ganz am Ende das
<!-- ifSet -->
hätte wohl noch ein / verdient...

(da dort kein Platzhaltername steht kommt auch diese Meldung korrekt ohne Name zustande)
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Marky
ConPresso-Checker
Beiträge: 382
Registriert: 11.12.2005 15:29
Hat sich bedankt: 29 Mal
Danksagung erhalten: 18 Mal
Kontaktdaten:

Beitrag von Marky »

danke für den Hinweis!
Jetzt sind auch die Meldungen verschwunden.

@edit: Meiner Ansicht nach funktioniert der "neue" Parser ohne Probleme. Ich kann zumindest auf unserem kompletten Auftritt keine Fehler erkennen. :D
Gruß
Marky
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Ursprünglich hier begonnen, möchte ich das Thema in diesem Thread fortsetzen.

Folgendes Template für die Rubrikseite verhält sich falsch:

Code: Alles auswählen

<div>
Inhalt des Kurztext-Feldes "Minimenu_aktivieren" ist: <!-- TEXT: Minimenu_aktivieren; -->
<!-- ifSet: Minimenu_aktivieren; -->
<ul>
<!-- ifSet: Sprungziel01; --><li><a href="#Artikel_01"><!-- TEXT: Sprungziel01; --></a></li><!-- /ifSet -->
<!-- ifSet: Sprungziel02; --><li><a href="#Artikel_02"><!-- TEXT: Sprungziel02; --></a></li><!-- /ifSet -->
<!-- ifSet: Sprungziel03; --><li><a href="#Artikel_03"><!-- TEXT: Sprungziel03; --></a></li><!-- /ifSet -->
</ul>
<!-- /ifSet -->
</div>
Dieses Template soll mehrfach von Artikeln auf der Rubrikseite verwendet werden.

Fall 1: 2 Artikel, das Kurz-Textfeld "Minimenu_aktivieren" ist bei beiden Artikeln belegt. Ergebnis: okay, beide Artikel mit der Linkliste.

Fall 2: 2 Artikel, das Kurz-Textfeld "Minimenu_aktivieren" ist nur beim 1. Artikel belegt. Ergebnis: Beide Artikel ohne Linkliste!

Fall 3: 3 Artikel, das Kurz-Textfeld "Minimenu_aktivieren" ist beim 2. Artikel nicht belegt. Ergebnis: Die Linkliste erscheint beim 1. und beim 2.(!!) Artikel, aber nicht beim 3..

Ich interpretiere das so, dass der Parser nicht bei jedem der Artikel von neuem beginnt, die ifSet-Verschachtelung aufzudröseln, sondern dies Artikel-übergreifend macht.

Mr. M.
[nach Schreiben außer Haus]
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Vielleicht hilft es noch ein paar weitere Variablen zu plätten.

Füge am Ende des Parsers doch mal

Code: Alles auswählen

unset ($thisiftags,$replacer,$iftaglevel,$maxlevel,$taglevel,$content);
hinzu. Allerdings werden diese eigentlich bei jedem Durchlauf neu initialisiert... :roll:
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Gerade wieder nach Hause gekommen und flugs deine Änderung eingebaut: Funzt!!

Werde aber morgen sicher noch 'ma weiter testen.
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Dabei wäre es gut wenn Du ermitteln könntest, welche der Variablen den Fehler verursacht und zurückgesetzt werden muß, also jede mal einzeln mit unset zurücksetzen.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Leider bin ich über Nacht wg. eines grippalen Infekts aus den Latschen gekippt...

... die Tests ergaben, dass schon ein

Code: Alles auswählen

unset ($thisiftags);
am Ende des Parsers genügen sollte. Ich sage sollte, denn vielleicht tritt der Fehler bei anderen Template-Konstellationen ja wieder auf!? Oder was meinst Du?
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Das könnte es sein... wenn man den Code gezielt liest, dann macht das Sinn.
Ich werde es in einer späteren Version am Anfang mit neu initialisieren lassen.
Danke!

Und gute Besserung! (Du weißt schon, daß Sommer ist... :wink: SCNR)
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Ich habe noch einen Verbesserungsvorschlag, nämlich wie im Thread
http://community.conpresso.de/viewtopic ... 6016#16016
beschrieben, in _include/parser.php folgende Zeile ganz am Ende einzufügen:

Code: Alles auswählen

$template_datei = str_replace('<br>', '<br />', $template_datei);
Das sorgt bekannterweise dafür, dass br-Tags XHTML-konform geschlossen werden, was bei HTML nicht stört, aber für XHTML wichtig ist.
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hi Mr. Magpie,

in der Datei _include/insertdb_fields.inc.php werden doch über $value['html'] = preg_replace(...) auch <br> in <br /> gewandelt oder nicht?

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Das stimmt zwar, aber, wenn der Template-Ersteller so nachlässig ist, im Template <br> einzugeben, werden diese erst durch die zusätzliche Zeile zu <br /> umgewandelt.
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hm. Findest Du nicht, dass man bei einem Template-Ersteller davon ausgehen sollte, dass er weiss, was er da tut?

Ich würde in dem Fall davon ausgehen und denken, dass er das mit Absicht macht, weil er z.B. kein XHTML, sondern HTML 4 Transitional oder ähnliches benutzt. :)

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
matteng
ConPresso-Newbie
Beiträge: 8
Registriert: 19.06.2007 23:54
Wohnort: Karlsruhe
Hat sich bedankt: 1 Mal

Parser-Modul korrekt?

Beitrag von matteng »

Hi!

Also ich habe erst jetzt von MarkusR's neuem Parser gelesen, war gleich begeistert, dass sich jemand dieses Problems angenommen hat und es gleich installiert.
Die Fehlerausgabe (bei fehlenden Schlusstags) find ich hervorragend! Allerdings habe ich die Befürchtung, dass er nicht korrekt arbeitet:

Code: Alles auswählen

<!-- ifSet: item1; -->
<!-- text: item1; --><br />
<!-- ifSet: item2; --><!-- Text: item2; --><br /><!-- /ifSet -->
<!-- ifNotSet: item2; -->kein item2 da!<br /><!-- /ifNotSet -->
<!-- /ifSet -->

<!-- ifNotSet: item1; -->kein item1 da!<br />
<!-- ifSet: item2; --><!-- Text: item2; --><br /><!-- /ifSet -->
<!-- ifNotSet: item2; -->kein item2 da!<br /><!-- /ifNotSet -->
<!-- /ifNotSet -->
Habe ich mit 4 Artikeln getestet (alle möglichen Kombinationen von item1 und item2). Im Prinzip müssten ja immer genau 2 Zeilen ausgegeben werden, aber das war das Ergebnis:

artikel1:item1
artikel1:item2

artikel2:item1
kein item2 da!


artikel3:item2

kein item1 da!
kein item2 da!

Beim dritten Artikel ist also item1 nicht gesetzt, aber item2. *zosh*
Vielleicht hab ich mich auch einfach vertan -- was meint ihr? Am mangelnden Lookahead kanns ja nich liegen - is ja ein "trivialer" Fall mit nur 2 Ebenen...


LG, Martin
Antworten