Hallo zusammen!
Ich bin am verzweifeln!
Ich benutze für meine Extension ein HTML Template. Das funktioniert soweit wunderbar.
Ich verwende dabei ###MARKER### und <!-- ###MARKER### --> gemischt.
Jetzt habe ich ein neues Sub-Template angelegt und darin wieder so ein Konstrukt verwendet:
<!-- ###MARKER1### -->
<!-- ###MARKER2### -->
###MARKER3###
<!-- ###MARKER2### -->
<!-- ###MARKER1## -->
Aber jetzt wird plötzlich das hier im Quelltext ausgegeben:
<!-- INHALT-VON-MARKER1 -->
<!-- ###MARKER2### -->
###MARKER3###
<!-- ###MARKER2### -->
<!-- INHALT-VON-MARKER1 -->
Dabei soll der Teil ###MARKER1### durch mehrere Zeilen erseztz werden.
Die Zeilen werden aus dem von ###MARKER2### eingeschlossenen Template erstellt.
Warum wird auf einmal nicht mehr der Teil zwischen den Kommentare-Markern ersetzt sondern nur der ### ### Teil??
HILFE!
ohne zu wissen was Du im Code machst kann man wenig dazu sagen 😉
Das Problem ist einfach, dass statt dem SubPart nur der Marker im Kommentar ersetzt wird.
Das hat zu Folge, dass:
1. Die Marker im SubPart ungeparst im Content auftauchen.
2. Der gewollte Content zwar erzeugt wird. Aber DOPPELT dargestellt wird und dennoch nicht sichtbar ist. Weil er ja zwischen den Kommentaren steht!
Das ganze sieht im Quelltext so aus:
$template['sub-subpart'] = $this->cObj->getSubpart($template['templatesubpart'],'###MARKER2###');
foreach($array as $key){
$subpartArray{'###MARKER3###'] = $key['wert'];
$str .= $this->cObj->substituteMarkerArrayCached($template['sub-subpart'],$suppartArray);
}
$markerArray['###MARKER1###'] = $str;
$content = $this->cObj->substituteMarkerArrayCached($template['showmessage'],$markerArray);
EDIT: Code nochmal neu geschrieben - jetzt gehts.
das ist auch nicht korrekt, der Aufruf lautet:
function substituteMarkerArrayCached($content,$markContentArray=array(),$subpartContentArray=array(),$wrappedSubpartContentArray=array())
Subparts sind an 3. Stelle, wenn Du also Subparts nimmst, musst Du auch den Aufruf entsprechend machen.
Die Vorgehensweise ist die: Subpart auslesen, dort die Marker ersetzen und diesen Inhalt mit der Funktion ersetzen.