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


  • Amelia Amelia
    Jedi-Meister
    0 x
    327 Beiträge
    0 Hilfreiche Beiträge
    01. 08. 2005, 13:07

    Okay. Danke! das klappt!

    Werde wohl noch an meiner Fragestellung arbeiten müssen! ;)

  • Fabian-K Fabian-K
    Jedi-Ratsmitglied
    0 x
    581 Beiträge
    0 Hilfreiche Beiträge
    02. 08. 2005, 11:52

    Aaaaaaaaaaaaaaargh.. hiiiiiiiiiiiiiilfe!!!

    Ich benutze realurl und den Source von der 1. (bzw. 2.) Seite des Threads hier.

    Aber immer wenn ich dann auf 'Drucken' klicke, wird die Seite 'www.foo.de/foo/bar/html.98.html' aufgerufen..

    Why?

    Hier mein Source (main-template; gaaaaanz oben an erster stelle) :

    1. # DRUCKEN
    2. temp.PRINT = COA
    3. temp.PRINT {
    4. wrap = <!!=|====>Drucken</a>
    5.  
    6. 10 = TEXT
    7. 10.data = getIndpEnv:REQUEST_URI
    8. 10.listNum.splitChar = .
    9. 10.listNum = 1
    10. 10.wrap = |.98.html
    11. }
    12.  
    13. [globalString = ENV:REQUEST_URI = *php?id*]
    14. temp.PRINT.10 >
    15. temp.PRINT {
    16. 10 = TEXT
    17. 10.data = getIndpEnv:REQUEST_URI
    18. 10.wrap = |&type=98
    19. }
    20. [GLOBAL]
    21.  
    22. print = PAGE
    23. print {
    24. typeNum = 98
    25. bodyTag =<body bgcolor="#ffffff" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onload="javascript:window.print()">
    26.  
    27. #10 < styles.content.getLeft
    28. 20 < styles.content.get
    29. #30 < styles.content.getRight
    30. #40 < styles.content.getBorder
    31. }

    wtf?
    Was mache ich falsch?
    Wieso wird ein falscher Link gesetzt?

    Achja, zum Thema RealURL:

    1. # RealURL
    2. config.simulateStaticDocuments = 0
    3. config.baseURL = 1
    4. config.tx_realurl_enable = 1

    (auch im main-template; direkt unter dem Druck-Zeugs)

    Kann mir jemand sagen was ich falsch mache?

    thanks.

  • Proximo Proximo
    Jedi-Ratsmitglied
    0 x
    563 Beiträge
    0 Hilfreiche Beiträge
    02. 08. 2005, 12:00

    Das ist ziemlich einfach:

    1. 10.listNum.splitChar = .
    2. 10.listNum = 1

    Ich habe nämlich die variable von der SPRACHE auchnoch hier eingebunden... also:

    seite.98.0.html

    Die 0 Stellt die aktuelle Sprache dar...

    Lösung: Ändere die Zahl von "10.listNum = 1"...

    MFG Proximo

  • Fabian-K Fabian-K
    Jedi-Ratsmitglied
    0 x
    581 Beiträge
    0 Hilfreiche Beiträge
    02. 08. 2005, 12:20

    Hi!
    Ja is mir auch gerade eingefallen.. hatte nur das beim Split durcheinander gebracht, dass 1 immer der erste eintrag NACH dem splitChar ist xD

    Naja okay, sieht gut aus.. jetz wird "foobar.de/foo/bar/foobar.98.html" aufgerufen, aaaaaaaaaaaber:

    [HTML]Error. Reason: Segment "foobar.98" was not a keyword for a postVarSet as expected![/HTML]
    Das kommt beim aufrufen des Drucken-Links.

    Why? Und wie kann ich es verhindern?

  • Fabian-K Fabian-K
    Jedi-Ratsmitglied
    0 x
    581 Beiträge
    0 Hilfreiche Beiträge
    03. 08. 2005, 08:25

    Okay, Sector cleared. Problem geloest.

    1. # DRUCKEN
    2. temp.PRINT = COA
    3. temp.PRINT {
    4. wrap = <!!=|====>Drucken</a>
    5.  
    6. 10 = TEXT
    7. 10.data = getIndpEnv:REQUEST_URI
    8. 10.listNum.splitChar = .
    9. 10.listNum = 0 # wenn der wert auf 1 steht, wird ein falscher Link ausgegeben.
    10. 10.wrap = |/print
    11. }
    12.  
    13. [globalString = ENV:REQUEST_URI = *php?id*]
    14. temp.PRINT.10 >
    15. temp.PRINT {
    16. 10 = TEXT
    17. 10.data = getIndpEnv:REQUEST_URI
    18. 10.wrap = |&type=98
    19. }
    20. [GLOBAL]
    21.  
    22. print = PAGE
    23. print {
    24. typeNum = 98
    25. bodyTag =<body bgcolor="#ffffff" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onload="javascript:window.print()">
    26.  
    27. #10 < styles.content.getLeft
    28. 20 < styles.content.get
    29. #30 < styles.content.getRight
    30. #40 < styles.content.getBorder
    31. }

    Es muss '10.wrap = |/print' lauten, anders geht es nicht.

    thanks. :)

  • Proximo Proximo
    Jedi-Ratsmitglied
    0 x
    563 Beiträge
    0 Hilfreiche Beiträge
    03. 08. 2005, 09:36

    np... /print? Hmm bin ich wirklich überfragt... aber wenn irgend eine Extension das fordert... naja dann schreibt man es hald hin ;)

    MFG Proximo

  • Fabian-K Fabian-K
    Jedi-Ratsmitglied
    0 x
    581 Beiträge
    0 Hilfreiche Beiträge
    03. 08. 2005, 10:59

    Ja anscheinend verlangt RealURL dass man einen Ordner angibt.

    Frag mich nicht warum, is halt so ;)

  • sven_hom sven_hom
    R2-D2
    0 x
    47 Beiträge
    0 Hilfreiche Beiträge
    03. 08. 2005, 15:50

    Hallo zusammen!

    @Fabian-K: Danke für den Hinweis in dem anderen Thread. Könntest Du bitte mal einen Auszug aus deiner localconf.php posten, der sich auf die Einstellungen für Real-URL bezieht?

    Vielen Dank im Voraus,
    Sven

  • Rookie Rookie
    Padawan
    0 x
    41 Beiträge
    0 Hilfreiche Beiträge
    12. 09. 2005, 05:23

    Hallo zusammen,

    erstmal ein großes Dankeschön an die beteiligten Autoren. Durch diesen Thread konnte ich meine Drucklinks erstmal wieder zum Laufen bringen.

    Auch zeigt mir RealUrl die Seiten .../print.html an.
    Dazu habe ich lediglich ein .html in das Setup eingefügt

    1. # Erzeugung des Links für Druckversion
    2. temp.PRINT_Text = COA
    3. temp.PRINT_Text {
    4. wrap = <!!=|====><img src="fileadmin/images/b_print.png" border="0" alt="Drucken" /></a>
    5.  
    6. 10 = TEXT
    7. 10.data = getIndpEnv:REQUEST_URI
    8. 10.listNum.splitChar = .
    9. 10.listNum = 0 # wenn der wert auf 1 steht, wird ein falscher Link ausgegeben.
    10. 10.wrap = |/print.html
    11. }
    12.  
    13. [globalString = ENV:REQUEST_URI = *php?id*]
    14. temp.PRINT_Text.10 >
    15. temp.PRINT_Text {
    16. 10 = TEXT
    17. 10.data = getIndpEnv:REQUEST_URI
    18. 10.wrap = |&type=98
    19. }
    20. [GLOBAL]

    und in der RealUrl ext_localconf den Wert im fileName angepasst:

    1. ...
    2. 'preVars' => array(
    3. 'GETvar' => 'L',
    4. 'valueMap' => array(
    5. 'en' => '2',
    6. 'de' => '1',
    7. ),
    8. 'GETvar' => 'type',
    9. 'valueMap' => array(
    10. 'print' => '98',
    11. 'pdf' => '123',
    12. ),
    13. 'noMatch' => 'bypass',
    14. ),
    15. ),
    16. 'pagePath' => array(
    17. 'type' => 'user',
    18. 'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
    19. 'spaceCharacter' => '-',
    20. 'languageGetVar' => 'L',
    21. 'expireDays' => 3,
    22. 'rootpage_id' => '1'
    23. ),
    24. 'fileName' => array (
    25. 'defaultToHTMLsuffixOnPrev' => 1,
    26. 'index' => array(
    27. 'page.html' => array(
    28. 'keyValues' => array (
    29. 'type' => 1,
    30. ),
    31. ),
    32. 'print.html' => array(
    33. 'keyValues' => array(
    34. 'type' => 98,
    35. ),
    36. ),
    37. 'page.pdf' => array (
    38. 'keyValues' => array (
    39. 'type' => 123,
    40. ),
    41. ),
    42. ),
    43. ),
    44. ...

    Jetzt habe ich nur noch zwei Fehler:
    Die eingebundenen CSS-Dateien

    1. # Erzeugte Druckseite mit Links zum Drucken und Schließen
    2. print_page = PAGE
    3. print_page {
    4. typeNum = 98
    5. 5 = TEXT
    6. 5.value = <div align="right"><a href="javascript:self.print()" title="Seite drucken">Drucken</a> <a href="javascript:self.close()" title="Seite schlie&szlig;en">Seite schließen</a></div>
    7. #10 < styles.content.getLeft
    8. 20 < styles.content.get
    9. #30 < styles.content.getRight
    10. #40 < styles.content.getBorder
    11. #20 = CONTENT
    12. #20 < styles.content.get
    13.  
    14. includeCSS {
    15. file4 = fileadmin/template/main/res/dropdownsitemap.css
    16. file3 = fileadmin/template/main/res/mininews.css
    17. file2 = fileadmin/template/main/res/print.css
    18. }
    19.  
    20. }

    greifen nicht. Sie sind zwar im Quelltext eingetragen:
    [HTML]<!--
    This website is brought to you by TYPO3 - get.content.right
    TYPO3 is a free open source Content Management Framework created by Kasper Skaarhoj and licensed under GNU/GPL.
    TYPO3 is copyright 1998-2005 of Kasper Skaarhoj. Extensions are copyright of their respective owners.
    Information and contribution at http://www.typo3.com
    -->

    <link rel="stylesheet" type="text/css" href="fileadmin/template/main/res/dropdownsitemap.css" />
    <link rel="stylesheet" type="text/css" href="fileadmin/template/main/res/mininews.css" />
    <link rel="stylesheet" type="text/css" href="fileadmin/template/main/res/print.css" />
    <title> ::: Inf-O-Net ::: Telematik Solutions</title>

    <meta name="generator" content="TYPO3 3.8 CMS" />
    <script type="text/javascript">
    [/HTML]

    aber es sind keine Formatierungen auf der Seite zu sehen. Wird die Druckseite ohne RealUrl aufgerufen nach dem Motto
    [HTML]../index.php?id=505&type=98[/HTML]
    wird die Seite komplett richtig angezeigt. Der Quelltext ist der Gleiche. Nur die aufgerufene URL ist unterschiedlich.

    Und zur zweiten Herausforderung:
    Auf der Startseite wird der Drucklink falsch gesetzt.
    Im Quelltext steht
    [HTML]href="//print.html"[/HTML]
    wodurch natürlich der Link http://print.html/ entsteht. Und der ist nicht erreichbar. Erst wenn ich eine der Unterseiten aufrufe, wird der Link wieder richtig gesetzt.
    Nehme ich den Slash im TypoScript Zeile 10 (s.o.) raus, funktioniert zwar die Startseite, aber die Unterseiten nicht mehr.

    Sind diese Probleme bei jemandem auch schon mal aufgetreten?
    Thx Rookie