Template Verständnis Frage

  • 0 x
    123 Beiträge
    0 Hilfreiche Beiträge
    05. 07. 2012, 12:42

    Hi, ich verwende jetzt in meiner Extension eine template Datei. Hatte das vorher hart im Code untergebracht was doof ist. :) Ich bin nun an ein Problem gestoßen. Also ich habe einen Merkzettel. Dort gibt es eine Listen- und eine Gruppenfunktion. Ich brauche allerdings dafür 2 verschiedene subparts. Wie mache ich das. Im Moment probiere ich es so:

    <!-- ###NOTEPAD### start -->

    Hier der normale Inhalt

    <!-- ###LIST### start -->
    HIER SOLL DER INHALT DER LISTENANSICHT REIN
    <!-- ###LIST### end -->

    <!-- ###GROUP### start -->
    HIER SOLL DER INHALT DER GRUPPENANSICHT REIN
    <!-- ###GROUP### end -->

    <!-- ###NOTEPAD### end -->

    Wie greife ich nun auf die Subparts aus meiner Extension zu. Bis jetzt habe ich nur Marker verwenden müssen.

    Kann mir da einer einen Tipp geben?

    Vielen Dank.


  • SomehowLost SomehowLo...
    Jedi-Meister
    0 x
    278 Beiträge
    0 Hilfreiche Beiträge
    05. 07. 2012, 14:18

    Hi,

    schau dir doch mal die Klasse class.tslib_content.php in der TSLIB an.
    Ansonsten heißt eine mögliche Antwort:

    1. $this->cObj->substituteMarkerArrayCached($content,$markContentArray=array(),$subpartContentArray=array(),$wrappedSubpartContentArray=array());

    Da kannst Du Deine Marker- und Subpart-Arrays ensrepchend rendern.

    Viele Grüße

    [url=http://www.andreas-hoffmeyer.de/]Andreas Hoffmeyer - Websites & mehr...[/url]
    [url=http://typo3-4-newbies.blogspot.de/]TYPO3 für Einsteiger: typo3-4-newbies.blogspot.de[/url]

  • 0 x
    123 Beiträge
    0 Hilfreiche Beiträge
    05. 07. 2012, 14:46

    Hey danke, aber diese Funktion cached die Daten in der Datenbank. Das muss nicht sein. Und bei $this->cObj->substituteMarkerArray kann ich die subParts nicht angeben. Wie genau würde denn der Befehl für mein Beispiel oben mit substituteSubpart aussehen? Danke.

  • 0 x
    123 Beiträge
    0 Hilfreiche Beiträge
    05. 07. 2012, 17:24

    Hm, also ich bekomme es einfach nicht hin mit subParts. Entweder wird mir alles doppelt ausgegeben oder eben gar nichts. Jemand evtl. noch einen Tipp?

  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    05. 07. 2012, 18:13

    Benutz doch lieber gleich Fluid zum Templaten und befasse dich gar nicht mehr mit der grauen Vorzeit.

    http://www.aemka.de/

  • 0 x
    123 Beiträge
    0 Hilfreiche Beiträge
    05. 07. 2012, 18:53

    Hi, ja. Aber die Extension ist halt aus der Steinzeit und muss nur mal bisschen gepimpt werden. Ausserdem möchte ich es gerne verstehen. Hab aber noch keine richtig guten Tutorials dazu gefunden. Wo das alles mal ganz genau erklärt wird. Kennst Du evtl .eins?

  • 0 x
    123 Beiträge
    0 Hilfreiche Beiträge
    06. 07. 2012, 15:47

    Hi ,
    also ich bin nun ein ganzes Stück weiter gekommen.
    Also mein Template sieht so aus:

    1. <!-- ###NOTEPAD### start -->
    2.  
    3. Hier der normale Inhalt
    4.  
    5. <!-- ###LIST### start -->
    6. HIER SOLL DER INHALT DER LISTENANSICHT REIN
    7. <!-- ###LIST### end -->
    8.  
    9. <!-- ###GROUP### start -->
    10. HIER SOLL DER INHALT DER GRUPPENANSICHT REIN
    11. <!-- ###GROUP### end -->
    12.  
    13. <!-- ###NOTEPAD### end -->

    Ich habe nun entsprechende Marker und SubParts gemappt. Am Ende der Funktion rufe ich nun:

    $content = $this->cObj->substituteMarkerArrayCached( $notepadLoginTemplate, $markers, $subParts );

    return $content;

    auf.

    Dies finde ich nun suboptimal , da die Daten ja nun gecached werden. Was in meinem Fall nicht sein darf.

    Ich bin nun umgestiegen auf:

    $content = $this->cObj->substituteMarkerArray( $notepadLoginTemplate, $markers );

    foreach($subParts as $subPart => $subContent) {
    $content = $this->cObj->substituteSubpart($content, $subPart, $subContent );
    }

    return $content;

    Ich ersetze damit erst alle Marker und durchlaufe dann die Subparts und ersetze die im aktuelle Dokument. Zumindest solles so sein. Aber es klappt nicht mit den Subparts. Was und warum könnte da schief gehen? Hat eine ne Idee? Danke.

  • 0 x
    123 Beiträge
    0 Hilfreiche Beiträge
    12. 07. 2012, 11:46

    hm, ist die Frage echt so schwer? gibt es denn keine Möglichkeit?

  • 0 x
    123 Beiträge
    0 Hilfreiche Beiträge
    18. 07. 2012, 17:21

    hm, anscheinend führe ich hier ein selbstgespräch :D

    Schade. Ich möchte doch nur die subparts und die marker erstzen aber eben ohne das die Daten gecacht werden.

    Also ich dachte so:

    $content = $this->cObj->substituteMarkerArray($template, $markers);
    foreach ($subParts as $subPart => $subContent) {
    $content = $this->cObj->substituteSubpart($content, $subPart, $subContent);
    }

    Aber die subParts werden nicht ersetzt. Das stehen immer nur die Marker.

    Hat denn keiner einer einen Tipp? :)
    Ich bin doch nicht der erste der das braucht... oder doch? 8-)

    Beste Grüße

  • FabianX FabianX
    R2-D2
    0 x
    103 Beiträge
    2 Hilfreiche Beiträge
    06. 12. 2012, 15:17

    Hast du das Problem lösen können ?

    Stehe gerade vor dem gleichen Problem.

    Meine Marker werden ersetzt. Die Subparts jedoch nicht.
    Hier werden nur die Marker wie sie im Template stehen ausgegeben.

    Wenn ich mir das subpartArray per var_dump ausgeben lasse scheint alles korrekt zu sein.
    Nur will er die Marker nach dem substitute nicht ersetzten.