Am 21.7.2015 um 09:19 schrieb Benjamin Giesbrecht: > Hallo Dieter, > > Danke für deine ausführliche Antwort. Ich habe gestern noch relativ > lange nach einer Lösung gesucht. Hier die Ergebnisse und offenen Fragen. > > Mein Wunsch "Protokoll". Könnte ja auch mit XML Aufgebaut sein, spielt > aus meiner Sicht keine Rolle man Wrapped ja einfach den HTML-Output > mit einer Struktur. > > { > "config": { > "targetSelector":".container", > "referrer":"index.php?id=2", > "backendLayout":"Basic" > "weitereParameter":"fooBar" > }, > "content":"<html>der angeforderte Teil der Website.</html>" > } > > Mittels stdWrap.postUserFunc = AjaxTools->pageToJson binde ich eine > PHP Methode ein, welche die Config um den HTML Content erstellt und > das Ganze dann mit json_encode rendert. > So weit so gut. Das Problem ist jetzt aber, dass postUserFunc > anscheinend vor dem Ende des PageRenderers ausgeführt wird. Konkret > heisst das, dass meine Fluid-Templates zwar von der pageToJson Methode > bearbeitet werden, nicht aber die auf der Seite enthaltenen CE's > welche ein Plugin enthalten. Diese werden bekanntlich beim Rendern nur > markiert und später eingebunden. Ich finde einfach keine Möglichkeit > nach all diesen Prozessen einzugreifen. Der PageRenderer hat leider > keine Hooks an dieser Stelle. > Wie baust due dir deine XML Struktur zusammen? Oder habe ich da was > nicht kapiert? _______________________________________________ > TYPO3-german mailing list > TYPO3-german@lists.typo3.org > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german Hallo Benjamin, Ich weiß nicht genau, was du genau an deiner Struktur brauchst.
Mein Ajax-Template wird wie eine normale Seite gerendert, nur dass halt beim aufrufenden Link der Get-Parameter &type= {Wert aus $root.config.listener.newPage.content} dranhängen muss. Dies mache ich per jQuery, aber man kann dies natürlich auch von Typo3 über Typolink erledigen lassen, um dann mit REALURL sogar noch sprechende Links generieren zu lassen. Es wird automatich der Content der jeweils verlinkte Seite per AJAX zurückgeschickt. # AJAX-Zugriffe auf das Inhaltselement #================================================= lib.ajax.content.styles.content.get = COA lib.ajax.content.styles.content.get { 10 < lib.styles.content.get 10.stdWrap.replacement { 10 { search = ![CDATA[ replace = !{CDATA{ } 12 { search = ]] replace = }CDATA} } } stdWrap.wrap = <![CDATA[|]]> } .... ajaxContent = PAGE ajaxContent { # $root.config.listener.newPage.content = 1692 typeNum = {$root.config.listener.newPage.content} # Configuration config { # Content type header #doctype = none doctype = xhtml_11 # Disable standard header disableAllHeaderCode = 1 # Dont convert any tags into xhtml #xhtml_cleaning = none # Verhindere überflüssige Angaben disableCharsetHeader = 1 # Additional headers additionalHeaders = Content-Type: application/xml # verhindere Ausgabe von parseTime debug = 0 } 10 = FLUIDTEMPLATE 10 { layoutRootPath = fileadmin/Resources/Private/Layouts/ partialRootPath = fileadmin/Resources/Private/Partials/ templateRootPath = fileadmin/Resources/Private/Templates/ file = fileadmin/Resources/Private/Templates/DefaultAjax.html variables { # default_ajax_html = TEXT # default_ajax_html.value = Hallo Welt # Aufruf con default_ajax_html < lib.ajax.content.styles.content.get default_ajax_css < lib.ajax.content.css default_ajax_javascript < lib.ajax.content.javascript default_ajax_parameter < lib.ajax.content.parameter } } } HTML-Template <f:layout name="DefaultAjax" /> <f:section name="default.ajax.html"> <htmlcode>{default_ajax_html}</htmlcode> </f:section> <f:section name="default.ajax.css"> <csscode>{default_ajax_css}</csscode> </f:section> <f:section name="default.ajax.javascript"> <javascript>{default_ajax_javascript}</javascript> </f:section> <f:section name="default.ajax.parameter"> <parameter>{default_ajax_parameter}</parameter> </f:section> HTML-Layout <?xml version="1.0" encoding="UTF-8"?> <data> <f:render section="default.ajax.html" /> <f:render section="default.ajax.css" /> <f:render section="default.ajax.javascript" /> <f:render section="default.ajax.parameter" /> </data> Das aufrufende und empfangende JavaScript muss nach dem Aufbröseln der XML-Struktur noch das CDATA wieder demaskieren. (jQuery.get...) Natürlich kann man sich auch komplexere Fälle vorstellen, aber solche Fälle kann man wieder auf diese Defaultstruktur reduzieren. Eigentlich tricky wird es erst, wenn man alles weiter dynamisieren will, indem man statt statischer Daden generische Daten übergibt. Ich denke, die Kombination AngularJS und TYPO3 könnte in Zukunft fruchtbar werden - insbesondere wegen des Two-Way-Data-Binding von AngularJS. Bislang fehlt mir aber leider die Zeit, um mich mit dem Entwurf einer Sprachlogik zu beschäftigen, mit welcher man ein Browser via AJAX mit TYPO3 auf generischer Basis kommunizieren könnte. Mir ist derzeit die Entwicklung meines Textgenerators für chemische Versuchsbeschreibungen wichtiger, der per TYPO3 aus Formulareingaben zu einem chemischen Experiment einen lesbarer Text baut und zukünftig vielleicht sogar eine experiment-orientierte Reaktionsgleichung konstruiert. Der Vorteil des Generators liegt dabei in der Tasache, dass die gesamte chemische Reaktion nach der Eingaben in einem relationalen Datenbankmodell gespeichert ist und so erstmalig statistische Untersuchungen zum Einfluss der Reaktionsbedingungen auf die Ausbeute von chemischen Reaktionen ermöglichen könnte. Gleichzeitig könnte das Modell eine sinnvolle Ergänzung zu den Stoff-basierten Reaktionsdatenbanken der Chemiker sein und die Arbeit im Labor erleichtern Dieter -- Dr. Dieter Porth - Mein kleines TYPO3-Labor: http://www.mobger.de/ _______________________________________________ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german