Lernen am Beispiel: Printversion [Gelöst]

  • Proximo Proximo
    Jedi-Ratsmitglied
    0 x
    563 Beiträge
    0 Hilfreiche Beiträge
    13. 07. 2005, 11:20

    Als Erstes muß ich erwähnen das große Teile dieser Printversion irgendwo in Schnippseln im Buch "Typo3 Enterprise Content Management" der Open Source Press zu finden sind.

    Der Grund für diese "Präsentation" ist die Tatsache das ich täglich Leute im Forum sehen die Neulingen erklären wollen das sie 2 Seiten Code in ihr eh meist schon ziemlich großes und unübersichtliches Project (das ist Tatsache wenn man eine Typoseite zum 1. oder 2. mal zusammenbastelt ;) ) reinbasteln müssen, nur um eine Printversion zu gestalten.

    Ich will beweisen das dies nicht der Fall ist:

    Als 1. definieren wir also die Druckversion:

    1. temp.PRINT= COA
    2. temp.PRINT {
    3. wrap = <!!=|====>Drucken</a>
    4.  
    5. # Diese Methode verwendet Typo wenn wir SimulateStaticHTML verwenden... sie fügt uns
    6. # den Type in die URL ein, und zwar so das SimulateStaticHTML damit zurechkommt
    7. 10 = TEXT
    8. 10.data = getIndpEnv:REQUEST_URI
    9. 10.listNum.splitChar = .
    10. 10.listNum = 1
    11. 10.wrap = |.98.html
    12. }
    13.  
    14. # Diese Methode verwendet Typo wenn wir kein SimulateStaticHTML verwenden
    15. [globalString = ENV:REQUEST_URI = /index.php*]
    16. temp.PRINT.10 >
    17. temp.PRINT {
    18. 10 = TEXT
    19. 10.data = getIndpEnv:REQUEST_URI
    20. 10.wrap = |&type=98
    21. }
    22. [GLOBAL]

    Nun haben wir einen Link geschaffen den wir irgendwo auf der Seite unserer Wahl einbauen können, zb im Marker "DRUCKEN" (###DRUCKEN###) also nicht vergessen dies auchnoch an der richtigen stelle mit

    marks.DRUCKEN < temp.PRINT

    einzubauen!

    Als nächstes definieren wir noch "was ist eine Druckversion?".´

    Nun das erklären wir Typo folgendermaßen:

    1. print = PAGE
    2. print {
    3. typeNum = 98
    4. bodyTag =<body bgcolor="#ffffff" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onload="javascript:window.print()">
    5.  
    6. 10 < styles.content.getLeft
    7. 20 < styles.content.get
    8. }

    Achtung! Dieser ganze Absatz darf nicht in irgendwelchen Klammern stehen (es ist ja ein Seitentype für sich alleine) UND er MUß im Haupttemplate stehen! (falls ihr mehrere habt)

    Toll ist auch das dies nicht nur für 1 Seite sondern für alle funktioniert ;) (das stimmt natürlich nur solange wie unser Inhalt ausschließlich in der Hauptspalte und der Linken zu finden ist ;) )

    So und nun... nein Spaß^^ das wars schon... einfach oder? (jaja das sagen sie alle ;)

    MFG Proximo


  • imu imu
    Leonidas
    0 x
    150 Beiträge
    0 Hilfreiche Beiträge
    18. 09. 2005, 10:40

    Mal eine Frage:
    ich habe meine Druckversion damit erstellt, daß ich nur die Zeile:

    1. <link rel="stylesheet" type="text/css" media="print" href="fileadmin/d3gmbh/css/d3gmbh_print.css" />

    in das HTML-Template integriert habe. Und dann eben
    das Stylesheet so gestaltet habe, daß nur der Text-Haupt-bereich, keine Navi, keine Hintergrundbilder angezeigt werden. Was spricht eigentlich dagegen?
    Drücke ich auf den Printbutton des Browsers wird dieses Template ausgeführt, statt des "normalen", für den Screen bestimmten.
    Ist diese ganze Printversion-Erstellung über TS wirklich notwendig?

  • theo theo
    Jedi-General
    0 x
    2011 Beiträge
    0 Hilfreiche Beiträge
    18. 09. 2005, 11:04

    [quote="imu"]Mal eine Frage:
    ...
    Ist diese ganze Printversion-Erstellung über TS wirklich notwendig? [/quote]

    Nö.

  • imu imu
    Leonidas
    0 x
    150 Beiträge
    0 Hilfreiche Beiträge
    19. 09. 2005, 09:29

    [quote="imu"]
    Schreibfehler oben
    ... muss heißen
    Drücke ich auf den Printbutton des Browsers wird dieses [u]Stylesheet[/u] ausgeführt, statt des "normalen", für den Screen bestimmten.
    [/quote]

    @theo
    ... aber warum dann ? ..., ist diese TS-Printversion einfach ein Überbleibsel aus den Zeiten, als der CSS-Standard noch nicht soweit war und statt über Klassen über HTML-Format-Tags formatiert wurde?

  • Rookie Rookie
    Padawan
    0 x
    41 Beiträge
    0 Hilfreiche Beiträge
    24. 09. 2005, 06:26

    Hallo zusammen,

    erstmal sorry, dass ich so lange nicht reagiert habe. Ich hatte ein paar Tage Urlaub :D . Muss auch mal sein.

    @AnneK
    Danke für die Hinweise. Ich habe sie mal ausprobiert, hatte aber auf die Schnelle kein Erfolg. Der Link auf der Startseite ist immer noch ohne Domain. Muss ich wohl noch weiter testen. Ich konnte auf keinem der drei von Dir aus der Anleitung aufgeführten Wege die baseUrl einfügen.

    @imu
    Den Ansatz werde ich mal weiterverfolgen. Danke für den Einwurf. Das würde das Ganze natürlich wesentlich vereinfachen. Warum einfach wenn`s auch umständlich geht ;-).

    Grüße
    Rookie

  • Rookie Rookie
    Padawan
    0 x
    41 Beiträge
    0 Hilfreiche Beiträge
    02. 11. 2005, 15:46

    Hallo zusammen,

    habe wie irgendwann mal bemerkt den Ansatz mit der Printversion per CSS weiterverfolgt. Dank @ imu. Durch die einfachen Zeile display: none; für die nicht-druckrelevanten Bereiche bleibt z.B. nur noch der interessante Hauptteil übrig.

    Wer will kann ja noch mal seine Lieblingsschrift einstellen.
    Vor allem hat das den großen Vorteil, dass man eine Seitenansicht mit Umbruchvorschau bekommt.

    Wer weitere Vorschläge dazu hat, kann sich natürlich gerne melden. Neuigkeiten lese ich immer gerne :-).

    Grüße
    Rookie

  • firefox firefox
    T3PO
    0 x
    12 Beiträge
    0 Hilfreiche Beiträge
    03. 11. 2005, 08:49

    ich danke imu tausendfach, genau wie rookie, denn css ist für mich die lösung. also:

    • css konseqent nutzen
      weg mit plugin.alt.print
      keine zusätzliche anpassung der localconf.php

    im html-template:
    [HTML]<a href="javascript:self.print()"><img src="fileadmin/template/grafik/icon_print.gif" alt="drucken" title="drucken" /></a>[/HTML]
    im ts-template setup hier mit templavoila:
    1. # Default PAGE object:
    2. page = PAGE
    3. page {
    4. typeNum = 0
    5. 10 = USER
    6. 10.userFunc = tx_templavoila_pi1->main_page
    7. includeCSS {
    8. file2 = fileadmin/template/css/default.css
    9. file1 = fileadmin/template/css/print.css
    10. file1.media = print
    11. }
    12. }

    im default.css alles was ihr wollt also z.B.:
    [HTML]#wasweissich {background-image:url(../grafik/wasweissich.jpg);
    background-repeat:no-repeat;
    width:500px;
    height:500px;
    position:absolute;
    top:10px;
    left:10px;}
    [/HTML]
    im print.css:
    [HTML]#wasweissich {display:none;}
    [/HTML]
    alles andere muss nicht angepasst werden, also im ts-template nach wie vor:
    1. # RealURL
    2. config.simulateStaticDocuments = 0
    3. config.baseURL = 1
    4. config.tx_realurl_enable = 1

  • snoop86 snoop86
    T3PO
    0 x
    13 Beiträge
    0 Hilfreiche Beiträge
    22. 01. 2006, 15:21

    [quote="Proximo"]
    *Kopfschüttel* fangen wir nochmal an:

    Ich setze folgende Minimalzustände vorraus:
    - Installiertes Typo
    - Include static: styles.content (default) (im Maintemplate)
    - Inhalt in irgendeiner Spalte (auf der jeweiligen Seite)

    Als aller erstes füge ich nun ins Haupttemplate, UNTER ALLES, vorallem AUßERHALB JEDER KLAMMER folgenden TS im SETUP ein:

    1. temp.PRINT = COA
    2. temp.PRINT {
    3. wrap = <!!=|====>Drucken</a>
    4.  
    5. 10 = TEXT
    6. 10.data = getIndpEnv:REQUEST_URI
    7. 10.listNum.splitChar = .
    8. 10.listNum = 1
    9. 10.wrap = |.98.html
    10. }
    11.  
    12. [globalString = ENV:REQUEST_URI = *php?id*]
    13. temp.PRINT.10 >
    14. temp.PRINT {
    15. 10 = TEXT
    16. 10.data = getIndpEnv:REQUEST_URI
    17. 10.wrap = |&type=98
    18. }
    19. [GLOBAL]

    Und jetzt nochmal AUßERHALB JEDER KLAMMER genau drunter:

    1. print = PAGE
    2. print {
    3. typeNum = 98
    4. bodyTag =<body bgcolor="#ffffff" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onload="javascript:window.print()">
    5.  
    6. 10 < styles.content.getLeft
    7. 20 < styles.content.get
    8. 30 < styles.content.getRight
    9. 40 < styles.content.getBorder
    10. }

    Nachdem man dies einfach alles eingefügt hat OHNE ES ZU ÄNDERN darf man jetzt anfangen zu denken, man muß den inhalt von "temp.PRINT" nun in einen Marker oder Subpart befördern... das macht man am besten indem man schaut wo man seine anderen marker hat die zb so ausschauen können:

    1. marks.bild = IMAGE
    2. marks.bild.file = ...

    Genau unter so einen Eintrag schreiben wir dann:
    1. marks.PRINT < temp.PRINT

    Und im HTML-Template schreiben wir dann noch irgendwo (am besten auch ganz nah an irgendeinem vorhanden Marker damit wir auch ja nix falschmachen)
    1. ###PRINT###

    rein!

    Ich hoffe das war jetzt für alle verständlich!

    Schlusswort:
    Das was ihr 2 da anstellt hat 1. Jede Menge Klammern, ist 2. Kompliziert, 3. (in Folge) total unübersichtlich und 4. Ziemlich sinnlos^^

    Ja genau ich habe extra drauf verzichtert anzufangen alles zu verschachteln und zusätzlich noch Templates einzubinden weil die meisten Typoanfänger mehr Ahnung von CSS haben wie von Typo und sich deshalb so viel einfacher tun!

    Die größte Sinnlosigkeit die ich dabei gesehen habe ist allerdings:

    1. marks{
    2. dein_marker = CONTENT
    3. dein_marker{
    4. table = tt_content
    5. where = colPos = 0
    6. orderBy = sorting
    7. }
    8. }
    9. }

    Da 1. "styles.content (default)" diese Aufgabe für uns übernimmt, und mann 2. keinen Marker braucht wenn man nur 1 Element ausgeben will *g*

    MFG Proximo

    Edit: Nachdem ich gesehen hab wir der Aufbau und die Strukturierung mancher Haupttemplates und TS in diesem Forum aussieht habe ich mich entschlossen das nächste Tutorial über "Strukturierung von TS und TS-Templates" also genauergesagt "Effizients und Übersichtlichkeit" zu schreiben (coming soon)
    [/quote]

    hi erstmal,
    also ich hab genau die schritte gemacht die du oben beschrieben hast aber irgendwie bekomme ich überhaupt keine anzeige/output. wenn ich meine seite im FE anschaue sehe ich nirgends den link zur printversion. *verzweifle*

    kann mir jemand helfen was ich vielleicht falsch mache. thxx

  • 0 x
    102 Beiträge
    0 Hilfreiche Beiträge
    21. 03. 2006, 09:12

    Moin!

    Ich hab schon tief in der Forensuche gekramt, doch leider nix zu meinem Problem gefunden:

    Ich nutzte Statische Seiten, weil ein Kunde das so wünscht.
    Die Url erscheint dann so:

    http://www.domain.de/*Seitenname*.*seitenid*.*sprachid*.html

    Die hier in dem Beispiel angegeben funktion klapp nicht.
    Ich dachte zunächst ich hab mit listnumm einfach die falschen Werte extrahiert.

    Doch als Printlink erschein auf den statischen Seiten immer:

    http://www.domain.de/index.php?id=*ID-der-Startseite*&ADMCMD_view=1&ADMCMD_editIcons=1&type=98

    Wenn ich mir die Seiten dynamisch anschaue, gehts wunderbar.
    :o

    Weiß jemand was ich falsch mache?
    Das Typoscript habe ich 1:1 aus dem Post von Proximo.
    Typo3-Version ist 3.7

  • Rookie Rookie
    Padawan
    0 x
    41 Beiträge
    0 Hilfreiche Beiträge
    21. 03. 2006, 09:22

    Moin, moin,

    die Probleme hatte ich am Anfang auch.
    Aber seit dem ich CSS nutze brauche ich diese komplizierte Konfiguration nicht mehr.
    Einfach eine separate CSS-Datei mit media=print einbinden. In dieser CSS-Datei die nichtgewünschten Container mit display:none ausblenden und schon hast Du Druckansicht und sogar Druckvorschau im Browser.

    Was hindert Dich daran neue Wege auszuprobieren?

    Grüße Rookie