Contenido 4.8.7, Ajax, ob_clean, Ausgabepuffer löschen

Gesperrt
projumper
Beiträge: 73
Registriert: Do 5. Jun 2008, 09:58
Kontaktdaten:

Contenido 4.8.7, Ajax, ob_clean, Ausgabepuffer löschen

Beitrag von projumper »

Hallo @ all,

ich bin gerade ein wenig am verzweifeln.

Für ein Projekt bin ich gezwungen AJAX einzusetzen. Was an sich garnicht so schlimm ist. Das Problem ist nur das ich aus meinem Modul nur ein bestimmtes html Segment benötige. Das Contenido liefert mir aber natürlich alles mit.

Code: Alles auswählen

<html><head>...</head><body>....<div>Der benötigte code</div>
Den "Footer" (....</body></html>) habe ich dur eine die() Funktion weggeschnitten.

Das Problem ist jetzt der "Header".

Das einsetzen von ob_clean oder ob_end_clean brachten kein Erfolg :( . Ich habe das Gefühl das Contenido das einfach ignoriert.

Weis jemand einen Rat für mich. Bin für jede Hilfe dankbar.

mfg

projumper
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Contenido 4.8.7, Ajax, ob_clean, Ausgabepuffer löschen

Beitrag von xmurrix »

Hallo projumper,

warum verwendest du nicht ein Template, dass auf ein Layout mit nur diesem einen Modul basiert? Das wäre viel einfacher.

Mit ob_start() usw. würde es auch gehen. dafür müsstest du ganz am Anfang im Template ob_start() aufrufen und am Anfang deines Moduls den Ausgabepuffer einer Variablen zuweisen und leeren, damit bisherige Ausgaben nicht an den Client rausgehen.

Code: Alles auswählen

$code = ob_get_contents();
ob_end_clean();
unset($code);
Danach kannst du im Modul die Ausgabe machen, am Ende des Moduls dann die weitere Ausgabe mit die() beenden. Das ist aber keine gute Lösung, mit einem vorzeitigen die() werden Änderungen an der Session nicht übernommen, könnte als Nebeneffekte geben...

Sieh dir auch mal das Modul "Article_Include" des Beispielmandanten an, damit lassen sich ganze Seiten einbinden. In Verbindung mit einem eigenen Template, das nur dieses Modul enthält und der Ausgabe von <!--start:content--> am Anfang und <!--end:content--> am Ende deines Moduls, dessen Ausgabe du benötigst, kannst du eine Proxyseite erstellen, die dir die Modulausgabe aus der gewünschten Seite extrahiert und ausgibt.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
projumper
Beiträge: 73
Registriert: Do 5. Jun 2008, 09:58
Kontaktdaten:

Re: Contenido 4.8.7, Ajax, ob_clean, Ausgabepuffer löschen

Beitrag von projumper »

Hallo,

vielen Dank für die schnelle Antwort. Ich wollte eigentlch nicht extra Modul-Templates oder blind-Layouts dafür basteln.

Zur Zeit habe ich das Problem gelöst in dem ich ein leeres nur mit <container ....> bestücktes Layout gebastelt habe.

In der Version 4.8.8 hat das funktioniert:

Code: Alles auswählen

  
    ob_clean();
    
    echo "<img src=\"".$bigbild."\" style=\"margin-left:".$aBreiteHohe['breite']."px; margin-top:".$aBreiteHohe['hohe']."px;\"/>";
    
    ob_end_flush();
    
    die();
Gibt einen Grund warum das in der 4.8.7 nicht läuft?

mfg

projumper
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Contenido 4.8.7, Ajax, ob_clean, Ausgabepuffer löschen

Beitrag von xmurrix »

In 4.8.8 ist die Ausgabepufferung integriert, der Code der Seite landet per Default immer im Ausgabepuffer und wird nicht sofort an den Client geschickt. Daher kannst du auch in einem Modul mit ob_clean() den Inhalt des Ausgabepuffers leeren, und nur den Modulcode ausgeben.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
projumper
Beiträge: 73
Registriert: Do 5. Jun 2008, 09:58
Kontaktdaten:

Re: Contenido 4.8.7, Ajax, ob_clean, Ausgabepuffer löschen

Beitrag von projumper »

Hallo,

also vermute ich das ein Update mir weiter hilft?!?! :)

mfg

projumper
funomat
Beiträge: 345
Registriert: Do 26. Feb 2004, 22:13
Wohnort: Neuss
Kontaktdaten:

Re: Contenido 4.8.7, Ajax, ob_clean, Ausgabepuffer löschen

Beitrag von funomat »

Hallo zusammen,

ich hab ein ähnliches Problem mit Contenido und Ajax und da hier die einzige Diskussion läuft, die ich finden konnte, die in etwa in die gleiche Richtung geht, poste ich mein Problem direkt hier und hoffe, dass das ok ist.

Also, ich muss über eine Ajax-Funktion, die ich in einem Layout drin habe, eine Datei aufrufen die unterhalb des Ordners cms liegt. Diese Datei soll zum einen eine Rückgabe an die Ajax-Funktion liefern und zum anderen über die Funktion setProperty('...') Daten zu einem FrontendUser in die DB schreiben. Diese Datei benötigt natürlich einige Contenido-Variablen um zum einen den User zu erkennen und zum anderen um setProperty überhaupt kennen zu können. Jetzt habe ich natürlich das Problem, dass diese Variablen beim Aufruf über die Ajax-Funktion nicht zur Verfügung stehen.

Kann mir jemand sagen, wie ich das Problem lösen kann?

Ich habe auch versucht ein Layout mit nur einem Container zu erstellen und in diesem Container meine Datei als Modul zu integrieren, das Template einem Artikel zuzuweisen und den Artikel von der Ajax-Funktion aufrufen zu lassen. Das hat aber auch nicht funktioniert.

Ob ich es jetzt nun mit einem Artikel oder der extra Datei lösen kann, ist mir eigentlich egal. Hauptsache das Ergebnis stimmt.

Wäre für jeden Wink dankbar.

Gruß,
funomat

PS: Bei mir ist es Contenido 4.8.12 !
tiago.de | adk-msi.de | iseringhausen.de | the-iseringhausen.de
Manchmal glaube ich, der beste Beweis dafür, dass es anderswo im Weltall intelligentes Leben gibt, ist der, dass noch niemand versucht hat, Kontakt zu uns aufzunehmen. (Calvin & Hobbes)
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Contenido 4.8.7, Ajax, ob_clean, Ausgabepuffer löschen

Beitrag von xmurrix »

projumper hat geschrieben:...also vermute ich das ein Update mir weiter hilft?!?! :)...
Wenn du Glück hast, reicht es aus, wenn du die cms/front_content.php aus 4.8.4 in dein 4.8.7 übernimmst - natürlich ohne Gewähr.

Solltest du ein Update in Erwägung ziehen, nimm doch gleich die 4.8.12.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Contenido 4.8.7, Ajax, ob_clean, Ausgabepuffer löschen

Beitrag von xmurrix »

funomat hat geschrieben:...Also, ich muss über eine Ajax-Funktion, die ich in einem Layout drin habe, eine Datei aufrufen die unterhalb des Ordners cms liegt. Diese Datei soll zum einen eine Rückgabe an die Ajax-Funktion liefern und zum anderen über die Funktion setProperty('...') Daten zu einem FrontendUser in die DB schreiben. Diese Datei benötigt natürlich einige Contenido-Variablen um zum einen den User zu erkennen und zum anderen um setProperty überhaupt kennen zu können. Jetzt habe ich natürlich das Problem, dass diese Variablen beim Aufruf über die Ajax-Funktion nicht zur Verfügung stehen....
Hallo funomat,
beim Aufrufen einer Datei außer der front_content.php, fehlen, wie du schon angemerkt hast, einige Contenido Variablen.

Besser ist es, wenn du den Weg über "Layout mit einem Modul -> Template -> Artikel" gehst. Das sollte eigenlich funktionieren. Wenn nicht, kann es daran liegen, dass bei dir z. B. die Sessionid per Get der URL angehängt werden muss - dann muss auch der Ajax-Request die Sessionid beim Absenden des Requests an das Frontent schicken.

Du kannst auch eine andere Datei als die front_content aufrufen. dann musst du sicherstellen, das das Frontend in der Datei korrekt initialisiert wird und die Verarbeitung der Seite richtig abgeschlossen wird (Stichwort page_close()).

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
funomat
Beiträge: 345
Registriert: Do 26. Feb 2004, 22:13
Wohnort: Neuss
Kontaktdaten:

Re: Contenido 4.8.7, Ajax, ob_clean, Ausgabepuffer löschen

Beitrag von funomat »

Danke für die, wie immer, schnelle Hilfe. Die Session stand zur Verfügung, die $auth aber leider nicht. Die habe ich jetzt einfach mal mit übergeben und schon läuft es.

Gruß,
Tiago
tiago.de | adk-msi.de | iseringhausen.de | the-iseringhausen.de
Manchmal glaube ich, der beste Beweis dafür, dass es anderswo im Weltall intelligentes Leben gibt, ist der, dass noch niemand versucht hat, Kontakt zu uns aufzunehmen. (Calvin & Hobbes)
projumper
Beiträge: 73
Registriert: Do 5. Jun 2008, 09:58
Kontaktdaten:

Re: Contenido 4.8.7, Ajax, ob_clean, Ausgabepuffer löschen

Beitrag von projumper »

Bei mir hat das Update auf die vers. *.12 geholfen ....

vielen Dank!
Gesperrt