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

Proximo ·

Ich hab mich zwar auch grad gewundert, aber um das abschließen zu können... Probiers doch mal mit TS im bestehenden Druck-TS also bei:

print = PAGE
print {
...
}

und schreib

print = PAGE
print {
bodyTag =<body onLoad="javascript:window.print()">
}

MFG Proximo

Amelia ·

Momentmal! Also bevor Du Dich hier so niederträchtig auslässt:
Du hast meine Frage wohl falsch verstanden, bzw ich habe mich falsch ausgerückt!
Der Body-Tag wird u.a. von Typo3 erzeugt, richtig!? Ich setze per CSS die Parameter für den Body-Tag.

Proximo schrieb:

binde doch einfach folgendes in deinen BODY-TAG ein:<body onload="javascript:window.print()">

Daher meine Frage: Wie soll ich das in meinen Body-Tag einbinden, wenn dieser doch im CSS definiert wird.
Ist das also eine so unmöglich Frage, welche ich hier stellte!?

Proximo ·

Was sucht der Bodytag genau im CSS? Naja ich misch mich da normal nicht ein aber... das ist wohl Sache vom Typo... und falls nicht dann HTML Hardcoding...

MFG Proximo

Amelia ·

Okay dann die Frage etwas anders und ganz simple: Wie komme ich an den von Typo3 erzeugten Bodytag?

Proximo ·

?!

print.bodyTag =<body onLoad="javascript:window.print()">

?!???!?

Soweit ich weiß der einzige sinnvolle Weg... (meiner Meinung nach)

MFG Proximo

PS: Steht übrigens 2 Posts drüber

Fabian-K ·

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

# DRUCKEN
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]

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
}

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

Achja, zum Thema RealURL:

# RealURL
config.simulateStaticDocuments = 0
config.baseURL = 1 
config.tx_realurl_enable = 1

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

Kann mir jemand sagen was ich falsch mache?

thanks.

Proximo ·

Das ist ziemlich einfach:

   10.listNum.splitChar = .
   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 ·

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:

Error. Reason: Segment "foobar.98" was not a keyword for a postVarSet as expected!

Das kommt beim aufrufen des Drucken-Links.

Why? Und wie kann ich es verhindern?

Fabian-K ·

Okay, Sector cleared. Problem geloest.

# DRUCKEN
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 = 0 # wenn der wert auf 1 steht, wird ein falscher Link ausgegeben.
   10.wrap = |/print
}
 
[globalString = ENV:REQUEST_URI = *php?id*]
temp.PRINT.10 >
temp.PRINT {
   10 = TEXT
   10.data = getIndpEnv:REQUEST_URI
   10.wrap = |&type=98
}
[GLOBAL]

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
}

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

thanks. 🙂

Proximo ·

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

MFG Proximo

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