Beitrag auf eine eigene Druckversion verlinken

  • Hallo zusammen,


    ich würde gern in einem Beitrag einen link einfügen, der auf den gleichen Beitrag in einem neuen Fenster mit anderem CSS verweist. Damit will ich eine Druckversion zur Verfügung stellen, die auf einem eigenen CSS basiert und entsprechende DIVs ausblendet, die dort nichts zu suchen haben.


    Geht das irgendwie mit vertretbarem Aufwand?


    Ich hab schon ein eigenes template dafür angelegt, muss dann aber für jede zu druckende Seite ein Menü, einen Menüeintrag und ein Modul erzeugen und dann im Beitrag einbinden. Geht, ist aber sehr umständlich … :S

  • Danke für deine Antwort. Es soll kein neuer Menüpunkt sein, sondern ein link der Bestandteil des Beitrags ist. Unter einem Text steht ein link "Beitrag drucken", der mit dem gleichen Beitrag verlinkt ist und nur auf ein anderes CSS zugreift.


    ?tmpl=component&layout=print kenne ich nicht. Wie und wo setzt man das ein?

  • Du kannst Dein Druck-Stylesheet global so im <head>-Bereich Deiner Template-index.php einbinden:

    PHP
    <head><irgendwas><link href="<?php echo JURI::base($pathonly=true).'/'?>templates/<?php echo $this->template ?>/css/print.css" rel="stylesheet" type="text/css" media="Print" />                            <irgendwas></head>


    Also im Ordner Deines Templates liegt im Unterordner css die Datei print.css


    Dann wird immer Alles sauber gedruckt (vorausgesetzt Du hast in der print.css passende Sachen drin).
    Dann kannste Dir auch den Quatsch mit der Joomla!-Druckfunktion sparen.


    Dein Druck-Button kann dann einfach die Druck-Funktion des Browsers (per Javascript) aufrufen.


    Im Code Deines Templates gibst Du einfach allen Bereichen, Die Du nicht drucken wollst, die CSS-Klasse "noprint" mit.
    Du kannst das auch " noprint" in Modulklassen-Suffixe reinschreiben.


    Code
    <div id="footer" class="noprint">                <jdoc:include type="modules" name="meintemplate-footer" style="xhtml" />            </div>


    Die CSS-Datei sieht bei mir so aus:


    Code
    .noprint, .pagenav {
        display: none;
    }


    Alles was die CSS-Klasse "noprint" hat, wird dann einfach nicht gedruckt. In der print.css Datei kannst Du noch weitere Anweisungen setzen. Beispielsweise die Schrift schwarz machen, wenn Du auf der Webseite ein schlecht druckbares Grau hast, und so Sachen.


    Schreib mir eine PN für Beispiel-Seiten.

  • Eine eignenes print.css einzubinden ist der richtige Weg. Aber &tmpl=component.php gibt es ja genau dafür, dass man sich das ganze .noprint sparen kann? Ein Button sieht dann z.b. so aus


    Code
    <div class="prin-button">
    <a href="...?tmpl=component&amp;print=1&amp;id="xx" 
    title="Imprimer" 
    onclick="window.open(this.href,'win2','status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,/resizable=yes,width=640,height=480,directories=no,location=no'); return false;" 
    rel="nofollow">
    Imprimer
    </a>
    </div>
    • Hilfreich

    Das mit dem norpint dauert bei der Template-Entwicklung 5 Minuten und die Ausgabe lässt Teile des Layouts weg, die man evt. im Druck mit drin haben will.


    Sie bringt auch nix, wenn der Anwender einfach die Druckfunktion des Browsers verwendet.

  • Danke first lady. Nur hab ich das leider immer noch nicht ganz verstanden. Ich hab den Code, so wie du ihn geschrieben hast in mein Dokument kopiert … aber wo ist die Stelle, die auf meine eigene druck.css verweist? Und was macht id=xx? Da muss doch sicher auch was anderes hin, oder?


    Wenn ich den Code einfach nur so nehme, öffnet er mir zwar ein Fenster, aber mit einer Fehlermeldung.


    Ich hab ein eigenes template verwendet, also keines, das joomla vorgibt. Ist da der Haken an der Geschichte?

  • Vielen Dank auch Dir 89hf4edc, ich versuch mal bei einem Weg zu bleiben und den zu verstehen. Aber es ist sehr hilfreich eine Alternative gezeigt zu bekommen!


    EDIT! Es hat funktioniert! Das war ja ganz einfach!!! Der Drucker druckt mit meinem CSS!!!