Zum Inhalt springen

daten aus ContentElement "php-script" in Druckansicht übernehmen

Erstellt am 22. September 2008 · 3 Antworten · letzte Antwort am 25. September 2008

Tags: Inhaltselemente, PHP, Frage

tupdate ·

Guten Abend,
Nach ewiger Suche in sämtlichen Foren habe ich mich dazu entschlossen, hier im wie ich finde umfangreichsten zu Posten.

Das Problem: die Werte aus dem Contentelement "php-script" werden nicht in die Druckansicht übernommen.

Das Contentelement enthält einfache php-variablen die wunderbar aus einem Formular kommen wie:

$a3 = $a1 * $a2;
echo"$a3";

Im Frontend wird auch wunderbar 4 (als $a3) ausgespuckt.
Auch der Marker funktioniert wunderbar, in dem Fall ###INHALT###

Nun habe ich erfolgreich die Druckansicht im TS integriet mit:

marks {
      PICOBEN< styles.content.getLeft
      INHALT < styles.content.get
      I < styles.content.getRight
      RECHTSCON < styles.content.getBorder

PRINTVIEW = IMAGE
  PRINTVIEW.file = fileadmin/print.jpg
  PRINTVIEW.imageLinkWrap = 1
  PRINTVIEW.imageLinkWrap { 
     enable = 1
     typolink {
        parameter.data = page:uid
        additionalParams.insertData=1
        additionalParams =&type=1
        target = _blank 
        addQueryString=1
        postUserFunc.include_post_vars = 1
        postUserFunc.target = _blank 
        include_post_vars = 1
      }
   }

außerdem:

druckversion = PAGE
druckversion.typeNum = 1
druckversion.includeCSS.file = fileadmin/neu.css
druckversion.10 = TEMPLATE
druckversion.10.template = FILE
druckversion.10.template.file = fileadmin/print.php
druckversion.10.workOnSubpart = DOKUMENT
druckversion.10.marks.INHALT < styles.content.get

Auch hier funktioniert jede Seite wunderbar.

Nur leider wird mir als $a3 nicht mehr 4 ausgegeben sondern 0!

Kann mir jemand sagen, wie ich mein $a3 auch richtig in die Druckansicht kriegen kann?

Vielen Dank im voraus!

tupdate ·

evtl. kann jemand damit etwas anfangen.
Das Contentelement heisst im Quelltext:

<!-- CONTENT ELEMENT, uid:93/page_php_content_pi1 [begin] -->

Vielen Dank

Sutter ·

Das Problem kommt mir bekannt vor.

Der Hintergrund, wieso es nicht auf Anhieb funktioniert ist folgender:

Die Druckversion wird von Typo3 erzeugt und ruft dabei die
Seite z.Bsp. mit dem Parameter &type=98 auf.

Der Content aus dem php-Script wird dabei wunderbar übernommen,
wie z.Bsp. das Eingabeformular. Allerdings werden die Daten,
die per php_script per POST übergeben werden dabei verloren.

Die einfachste Variante ist auf der Ausgabeseite eine JavaScript
Druckfunktion einzubauen und per CSS die Ausgabe anzupassen.

Die andere Variante ist etwas komplizierter, hierzu muss im Script
und TypoScript eine globale Variable gesetzt werden, die beim Absenden
des Formulars geändert wird. Dann muss das Script in zwei Teile
zerlegt werden, das Abhängig vom Übergabeparameter entweder das
Eingabeformular oder die Ausgabe aufruft. Die Variable muss
dann natürlich auch an den Drucklink weitergegeben werden
z.Bsp. index.php?id=111&type=98&submit=1.

Die eleganteste Lösung ist die abgesendeten Variablen
in mySQL zu Speichern und per action eine andere Page ID
aufzurufen, auf der sich das Script zur Ausgabe befindet.
Die Nummer des Datensatzes müsste dann per Übergabeparameter
an den Drucklink mit angehängt werden und vom Script dann
die zugehörigen Daten ausgegeben werden.

P.S.: müsste da nicht echo $a3; stehen ???

tupdate ·

Hallo Sutter,
vielen Dank für deine Antwort.

Du hast recht, Typo gibt mir die Variablen nicht einfach weiter.
Ich habe es jetzt folgendermaßen gelöst:
die Variablen habe ich in den Drucklink gepackt.

Auf der Druckseite lese ich die Werte dann wieder per GET aus der Url.

Es mag mit Sicherheit sauberere Lösungen geben aber so funktioniert es auch 😃

Den drucklink habe ich im Template über ein weiteres PHP-script integriert.
Hier ist darauf zu achten, dass unter anderem keine Leerzeichen um den PHP-Code stehen. Sonst kriegt man vom Server den tollen "Header already sent"-Fehler!

P.S.: müsste da nicht echo $a3; stehen ??? -- Das ist gehupft wie gesprungen. beide Schreibweisen funktionieren

n schönen Abend noch