Zum Inhalt springen

Lernen am Beispiel: Printversion

Erstellt am 13. Juli 2005 · 64 Antworten · letzte Antwort am 8. Januar 2007 · Seite 3 von 4

Tags: Tipp

sven_hom ·

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 ·

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

# Erzeugung des Links für Druckversion
temp.PRINT_Text = COA
temp.PRINT_Text {
   wrap = <a href="|" name="Drucken" title="Drucken" target="_blank" class="print"><img src="fileadmin/images/b_print.png" border="0" alt="Drucken" /></a>
   
   10 = TEXT
   10.data = getIndpEnv:REQUEST_URI
   10.listNum.splitChar = .
   10.listNum = 0 # wenn der wert auf 1 steht, wird ein falscher Link ausgegeben.
   10.wrap = |/print.html
}
 
[globalString = ENV:REQUEST_URI = *php?id*]
temp.PRINT_Text.10 >
temp.PRINT_Text {
   10 = TEXT
   10.data = getIndpEnv:REQUEST_URI
   10.wrap = |&type=98
}
[GLOBAL]

und in der RealUrl ext_localconf den Wert im fileName angepasst:

...
  'preVars' => array(
    array(
      'GETvar' => 'L',
      'valueMap' => array(
        'en' => '2',
        'de' => '1',
      ),
      'GETvar' => 'type',
      'valueMap' => array(
        'print' => '98',
        'pdf' => '123',
      ),
      'noMatch' => 'bypass',
    ),
  ),
  'pagePath' => array(
    'type' => 'user',
    'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
    'spaceCharacter' => '-',
    'languageGetVar' => 'L',
    'expireDays' => 3,
    'rootpage_id' => '1'
  ),
  'fileName' => array (
    'defaultToHTMLsuffixOnPrev' => 1,
    'index' => array(
      'page.html' => array(
        'keyValues' => array (
          'type' => 1,
        ),
      ),
      'print.html' => array(
        'keyValues' => array(
          'type' => 98,
        ),
      ),
      'page.pdf' => array (
        'keyValues' => array (
          'type' => 123,
        ),
      ),
    ),
  ),
...

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

# Erzeugte Druckseite mit Links zum Drucken und Schließen
print_page = PAGE
print_page {
  typeNum = 98
  5 = TEXT
  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>
  #10 < styles.content.getLeft
  20 < styles.content.get
  #30 < styles.content.getRight
  #40 < styles.content.getBorder
  #20 = CONTENT
  #20 < styles.content.get

  includeCSS { 
    file4 = fileadmin/template/main/res/dropdownsitemap.css
    file3 = fileadmin/template/main/res/mininews.css
    file2 = fileadmin/template/main/res/print.css 
  }

}

greifen nicht. Sie sind zwar im Quelltext eingetragen:

<!-- 
	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">

aber es sind keine Formatierungen auf der Seite zu sehen. Wird die Druckseite ohne RealUrl aufgerufen nach dem Motto

../index.php?id=505&type=98

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

href="//print.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

AnneK ·

Hallo Rookie,

...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?

Ja, bei mir sind die Probleme auch aufgetaucht... Ich habe dann in der DOC zu der extension folgenden Hinweis gefunden:

value: emptyUrlReturnValue

type: string

description: If the URL is empty it usually is meant to be a link to the frontpage.

If you set this value to a string, that will be the URL returned if the URL is otherwise empty.

If you set this value true (PHP boolean, "TRUE"), then it will return the baseURL set in TSFE.

Setting it to "./" should work as a reference to the root as well. But it is not so beautiful.

Ich habe dann in die CONSTANTS des übergeordneten Templates folgendes eingetragen:

plugin.tx_realurl_pi1.emptyUrlReturnValue = TRUE

Danach kommt jetzt auch auf der Startseite die richtige URL.

Gruss AnneK
_______________________________

Nachtrag:

Leider wurde eine Druckseite oder die Seite als PDF nur dann ausgegeben, wenn ein Pfad (z. Bsp.: http://url/[b]home[/b]/print.html) angegeben war.

Lösung:

In der ext_localconf.php folgenden Eintrag machen:

  'redirects' => array(
    '' => 'home/',
  ),
imu ·

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

<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?

imu ·
imu schrieb

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

@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 ·

Hallo zusammen,

erstmal sorry, dass ich so lange nicht reagiert habe. Ich hatte ein paar Tage Urlaub 😃 . 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 ·

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 ·

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:

<a href="javascript:self.print()"><img src="fileadmin/template/grafik/icon_print.gif" alt="drucken" title="drucken" /></a>

im ts-template setup hier mit templavoila:

# Default PAGE object:
page = PAGE
page {
   typeNum = 0
   10 = USER
   10.userFunc = tx_templavoila_pi1->main_page
   includeCSS {
      file2 = fileadmin/template/css/default.css
      file1 = fileadmin/template/css/print.css
      file1.media = print
   }
}

im default.css alles was ihr wollt also z.B.:

#wasweissich {background-image:url(../grafik/wasweissich.jpg);
         background-repeat:no-repeat;
         width:500px;
         height:500px;
         position:absolute;
         top:10px;
         left:10px;}

im print.css:

#wasweissich {display:none;}

alles andere muss nicht angepasst werden, also im ts-template nach wie vor:

# RealURL
config.simulateStaticDocuments = 0
config.baseURL = 1
config.tx_realurl_enable = 1
snoop86 ·
Proximo schrieb

*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:

temp.PRINT = COA
temp.PRINT {
   wrap = <a href="|" name="Drucken" title="Drucken" target="_blank" class="print">Drucken</a>
   
   10 = TEXT
   10.data = getIndpEnv:REQUEST_URI
   10.listNum.splitChar = .
   10.listNum = 1
   10.wrap = |.98.html
}

[globalString = ENV:REQUEST_URI = *php?id*]
temp.PRINT.10 >
temp.PRINT {
   10 = TEXT
   10.data = getIndpEnv:REQUEST_URI
   10.wrap = |&type=98
}
[GLOBAL]

Und jetzt nochmal AUßERHALB JEDER KLAMMER genau drunter:

print = PAGE
print {
   typeNum = 98
   bodyTag =<body bgcolor="#ffffff" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onload="javascript:window.print()">

   10 < styles.content.getLeft
   20 < styles.content.get
   30 < styles.content.getRight
   40 < styles.content.getBorder
}

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:

marks.bild = IMAGE
marks.bild.file = ...

Genau unter so einen Eintrag schreiben wir dann:

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)

###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:

marks{
      dein_marker = CONTENT
      dein_marker{
        table = tt_content
        select {
          where = colPos = 0
          orderBy = sorting
        }
      }
    }

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)

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

parallaxis ·

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 ·

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

parallaxis ·

Hi!

Zwei Dinge hindern mich:
Das derzeitige CSS/Template hat jeman anderes gemacht.
Das is sowas von Kraut und Rüben... #angry#

Und zum anderne Wünscht der Kunde das genau so.
Aber ich denke das mit dem CSS kann ich ihm auch erklären. 😉

Danke 😃

slechelmayr ·

Hi,

ich hatte gerade ein Projekt, bei dem das ganze so nicht funktioniert hat. Problem war, dass simulateStaticDocuments so konfiguriert war, dass die PageID *nicht* nicht in der URL vorkommt (addTitle = 0)

mit folgender Anpassung funktioniert es dann trotzdem wunderbar:

   10.data = TSFE:id
   10.wrap = |.98.html

statt

   10.data = getIndpEnv:REQUEST_URI
   10.listNum.splitChar = .
   10.listNum = 1
   10.wrap = |.98.html

Also sprich, die PageID statt REQUEST_URI verwenden.

EDIT: ups.. habe gerade erst gesehen, dass der Thread schon sieben Seiten lang ist. Falls das schonmal gepostet wurde tut's mir leid fuer die Redundanz 😃

gunther ·

Ergänzung bei der Verwendung von tt_news + simulateStaticDocuments:

ich bin wirklich etwas spät dran aber mir hat das Ausgangsposting von Proximo sehr weitergeholfen und gefallen: keine extra Extension und kein seitenlagnes TS. Nur die tt_news wollten nicht so richtig.

Ergänzen:

#teil static
   
20 = TEXT
20.data = GPvar : tx_ttnews|tt_news
20.wrap = ?&tx_ttnews[tt_news]=|
20.stdWrap.htmlSpecialChars = 1
20.required = 1

#teil kein static

temp.PRINT.20 >

Ganzes Listening:

#printpage

temp.PRINT= COA
temp.PRINT {
   wrap = <a href="|" target="_blank">Seite drucken</a>

# Diese Methode verwendet Typo wenn wir SimulateStaticHTML verwenden... sie fügt uns
# den Type in die URL ein, und zwar so das SimulateStaticHTML damit zurechkommt
   10 = TEXT
   10.data = getIndpEnv:REQUEST_URI
   10.listNum.splitChar = .
   10.listNum = 1
   10.wrap = |.98.html

   20 = TEXT
   20.data = GPvar : tx_ttnews|tt_news
   20.wrap = ?&tx_ttnews[tt_news]=|
   20.stdWrap.htmlSpecialChars = 1
   20.required = 1

}


# Diese Methode verwendet Typo wenn wir kein SimulateStaticHTML verwenden
[globalString = ENV:REQUEST_URI = /index.php*]
temp.PRINT.10 >
temp.PRINT.20 >
temp.PRINT {
   10 = TEXT
   10.data = getIndpEnv:REQUEST_URI
   10.wrap = |&type=98
}
[GLOBAL]

grüße gunther

RIBS ·

Hallo

Ich bin einiger Zeit, für eine mit Typo3 generierte Website für jede Seite eine
Druckversion zu erstellen. Diese Beiträge haben mir schon ein Stückchen weitergebracht, aber noch nicht zum Ziel. Ich habe es mit der Fassung versucht, wie sie von Proximo vorgeschlagen wird. Nur das ich statt

wrap = <a href="|" name="Drucken" title="Drucken" target="_blank" class="print">Drucken</a>

wrap = <a href="index.php?id=|" name="Drucken" title="Drucken" target="_blank" class="print">Drucken</a>

verwende, weil sonst immer eine Seite aufgerufen wurde, die nicht vorhanden ist:

http://localhost/quickstart/.98.html

Ansonsten bin ich aber vorgegangen, wie vorgeschlagen. Mein Problem habe ist, dass ich immer nur die Startseite als Druckansicht aufgerufen bekomme und nicht die aktuelle Seite.

Wo könnte hier das Problem liegen?

Vielen Dank für einen Ratschlag im voraus

RIBS

slack1982 ·

Hallo,

möchte mich mal hier "nahtlos" einhängen und folgendes fragen:
Funktioniert die "Druckverion" bei euch auch im IE7?
Habe alle erforderliche Punkte gemacht und es klappt auch im Firefox.

PS: den TS-Code erspare ich mir an dieser Stelle, weil er genau so ist, wie auf der ersten Seite.

Danke im Voraus

Gruß Alex

Was ich soeben auch feststellen musste ist, dass er mir sporadisch einfach die exakt gleiche Seite aufruft ohne das Fenster "Drucken" anzubieten?!!
Vielleicht könnt ihr mir helfen.