Aggiungere un link per stampare il post su Blogger!

image Molto richiesta nel sondaggio, e in generale molto richiesta via mail, è sempre stata la possibilità di poter aggiungere un link per stampare direttamente il post dal blog. Modifica molto desiderata soprattutto dagli autori dei blog di cucina, tra i quali, ho scoperto recentemente, c’è un vero e proprio scambio continuo di guide culinarie in pdf (e in questo potrebbero tornare utili le guide su come creare documenti in pdf e alcuni servizi gratuiti per pubblicarli in rete).

Ho studiato vari modi in passato per farlo, molti su Blogger utilizzano PDF Online che permette un’integrazione gratuita (ma limitata), tuttavia nel blog di Iole ho trovato una soluzione molto elegante e che non richiede l’uso di strumenti esterni.

Riporto qui l’intervento, con qualche piccola personalizzazione.

Passo 1

Da Layout->Modifica HTML, selezioniate “Espandi i modelli widget” e cerchiate la seguente porzione di codice:

<div class='post hentry'>

Questa riga è presente nel template Minima (il più diffuso e base di partenza per la maggior dei template personalizzati), ma in altri template potrebbe essere leggermente diversa. Se non si riesce a trovare esattamente la riga, basta cercare solo la parte iniziale:

<div class='post hentry

Una volta individuata, bisogna inserire prima dell’ultimo carattere “>” questa porzione di codice:

expr:id='"hentry-" + data:post.id'

Nell’esempio del template Minima, la riga diventerà quindi:

<div class='post hentry' expr:id='"hentry-" + data:post.id'>

Quella in rosso è la parte da aggiungere.

Passo 2

Cercate questa porzione di codice:

<div class='post-footer'>

E subito sopra incollate questa porzione di codice:

<a class='printer' expr:onclick='"javascript:stampaPostCompleto(\"hentry-" + data:post.id + "\", \"Link: " + data:post.url + "\");"'>Stampa il post</a>

Se volete che il link per la stampa appaia solamente nella pagina del singolo post (utile per esempio se utilizzate la visualizzazione sintetica dei post) utilizzate invece questo codice (rispetto al primo ho aggiunto le due righe in rosso):

<b:if cond='data:blog.pageType == &quot;item&quot;'>
<a class='printer' expr:onclick='"javascript:stampaPostCompleto(\"hentry-" + data:post.id + "\", \"Link: " + data:post.url + "\");"'>Stampa il post</a>
</b:if>

Passo 3

Cercate questa riga nel template:

]]></b:skin>

E subito sopra incollate:

a.printer {
cursor: pointer;
background: url(http://tinyurl.com/lfk9jd) no-repeat;
padding-left: 20px;
margin-right: 10px;
}

Passo 4 (aggiornato)

Cercate questa riga di codice:

</head>

E subito sopra inserite questo codice:

&lt;script&gt; 
function stampaPostCompleto(divId,link) {
var postContent = document.getElementById(divId).innerHTML;
stampa(link+postContent);
}
function stampa(html) {
var printWindow = window.open(&quot;&quot;,&quot;printPost&quot;,&quot;top=100,left=200,width=600, height=400,scrollbars=yes,status=no,menubar=no,toolbar=no,locations=no&quot;);
printWindow.document.open();
printWindow.document.write(&#039;&lt;a href=&quot;#&quot; onclick=&quot;window.print();&quot;&gt;&lt;img src=&quot;http://tinyurl.com/lfk9jd&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;#&quot; onclick=&quot;window.print();&quot;&gt;Stampa il post&lt;/a&gt; &lt;br /&gt; &lt;br /&gt;&#039; + html);
printWindow.document.close();
}
&lt;/script&gt;


Passo 5



Salvate il template e visualizzate il blog. Sotto ogni post adesso vi apparirà il link per stamparlo:



image



Cliccandolo, si aprirà una pagina con la versione stampabile del post:



image



E basterà cliccarci sopra per far partire la finestra della stampante:



image



Questo comportamento può essere modificato, ad esempio aprendo direttamente la finestra della stampante senza passare dall’anteprima. Possiamo discuterne assieme.



Passo 6



Lasciate un ringraziamento nel blog di Iole, visto che ne è lei l’autrice!



Ho testato la modifica su Chrome, Firefox 3.4 e Internet Explorer 8, senza problemi. Vorrei sapere da voi se trovereste utile trovare anche qui la possibilità di stampare il post, così magari l’aggiungo anch’io.


Se ti è piaciuto l'articolo, iscriviti al feed per tenerti sempre aggiornato sui nuovi contenuti del blog! Per maggiori informazioni sui feed, clicca qui!




36 commenti:

daniela sognidiperlej12m13 09 luglio 2009 00.25  

Assolutamente sì. Credo che mi sarebbe molto utile, visto che ogni tanto mi stampo i tuoi utilissimi suggerimenti. Grazie sin da ora. ;;)

AUTOdiMERDA 09 luglio 2009 00.32  

Ciao Orazio.
Interessante come sempre anche questa modifica. Per quanto riguarda i documenti in PDF, come da te riportato, invece ho preferito inserire un piccolo script che, trovando tutti i .pdf pubblicati nel blog, li rimanda, dal semplice click sul documento stesso, a un sito a scelta per la lettura online, in modo da essere fruibile anche per chi non avesse Acrobat sul pc e che non avesse voglia di perdere tempo a copiare e incollare il link.

A parte ciò, scusa l OT, volevo chiederti se potresti scrivere un breve tutorial per la spedizione di cartoline personalizzate dal proprio blog senza servizi esterni. Click su un'immagine e parte la mail con la stessa al suo interno.. forse chiedo troppo. Cmq alla prox e grazie. :D

Mr.Nessuno 09 luglio 2009 03.30  

Ciao Orazio,
io uso 2 schermi, quindi non mi serve la possibilità per la stampa, ma, in considerazione che ad avere più di uno schermo siamo una manciata, direi proprio che dovresti inserire questa possibilità: uno può stampare il tuo post, poi mentre modifica il template segue quanto stampato e prende il codice dal tuo blog nel momento in cui gli serve...direi proprio che dovresti implementare la modifica appena finisci di leggere questo commento!!!

Ciao, otiima mod. come le altre del resto :-t

Iole 09 luglio 2009 11.01  

Ciao Tenebrae,
controllando i log delle visite, ne ho viste diverse provenienti dal tuo blog allora mi sono detta "vuoi vedere che sono stata nominata di nuovo da Tenebrae!!!" e infatti è così.
In effetti anche a me la richiesta della stampa dei post è stata fatta dall'autrice di un blog di cucina. Con un po' di ingegno sono riuscita a creare la funzione javascript per la stampa (in fondo è il mio lavoro) ma senza i tuoi post non sarei mai riuscita a mettere mano al template.
Quindi sono io che devo ringraziare te :-*

D1m1tR1 09 luglio 2009 11.29  

Hey tenebrae !
Io avrei un problemino con il mio nuovo template...
be vedi non riesco ad trovare la stringa < div class = 'post hentry

Andrea 09 luglio 2009 13.05  

Un ringraziamento sia ad Orazio che a Iole.
Molto carina come applicazione e credo utile per molti blog. Quando si apre la pop up però c'e' poca intuizione di dove dover cliccare per poter stampare, in quanto il mouse non cambia forma al passaggio sull'immagine della stampante.

Saluti d'oltreoceano

sabri 09 luglio 2009 16.04  

Ma grazie! Ogni volta dovevo fare un gran casino: preparare un pdf della ricetta, caricarlo su issuu e poi inserire il link nel post. Adesso provo a fare le modifiche.

Stefania 09 luglio 2009 16.24  

Carissimo Tenebrae,
appena ho visto questo post, cioè in pausa pranzo, mi sono detta, oggi non pranzo e metto la stampantina...purtroppo anche se la base del mio blog è minima non trovo la stringa < div class = 'post hentry
quella più simile (anche sbirciando il blog di Iole è:

div class='post-body' expr:id='"post-" + data:post.id'

puoi aiutarmi?
Grazie
Stefania

GabyPixar 09 luglio 2009 16.30  

A me non si vede l'icona della stampante ma solo Stampa Post. Che ho sbagliato?

sabri 09 luglio 2009 17.31  

Fatto, grazie mille. Ah ti avevo linkato già da un po', colgo l'occasione per dirtelo. Ciao

BU 09 luglio 2009 17.38  

Cioa, grazie innanzitutto cercavo da tempo questa funzione. ho seguito di pari passo circa 5 volte riprovando, alla fine blogger dice che manca un > o < ...e di controllare! Ho cercato di capire se era un mio errore e nella fretta cancellavo qualcosa, ma dopo 5 vole mi arrendo! Tu che dici? Io uso firefox 3.5 c'entra qualcosa? Grazie ancora!

Alex Nevskij 09 luglio 2009 19.31  

Salve.
Siamo un circolo politico, volevamo ringraziarti perché grazie al tuo blog abbiamo realizzato il nostro blog, puoi visitarlo al all'indirizzo www.prcserrenti.tk.

alexs 09 luglio 2009 19.51  

ciao tenebrae, oggi si è verificato un altro mistero, sono andata ad applicare la possibilità di stampa sul mio blog e inevitabilmente mi appare questo messaggio

Non è stato possibile analizzare il tuo modello, in quanto non è strutturato correttamente. Assicurati che tutti gli elementi XML presentino il tag di chiusura richiesto.
Messaggio di errore XML: Element type "div" must be followed by either attribute specifications, ">" or "/>".

ho provato più volte ma niente, sono andata sul blog di iole e ho provato lì ma niente, lo stesso risultato.... :-o come mai?
poi ti ricordi il problema delle faccine che mi sono venute in verticale? oggi ho applicato un nuovo contatore, nel disegno era in orizzontale e mi è venuto in verticale anche questo :-/ avrò involontariamente spostato qualche cosa io?
grazie ancora e ciao
Alessandra

Tenebrae 09 luglio 2009 22.56  

bene, allora aggiungerò anche in questo blog la possibilità di stampare i post :)

@paolo: non conosco servizi che permettano di farlo... se li trovi tu magari fammelo sapere

@iole: caspita, è pericoloso lasciarmi bacetti nei commenti, ragazza... mia moglie è sempre in agguato b-( siamo pari allora, dai ;)

@dimitri: forse nel tuo caso si chiama un po' diversamente, dovresti provare a cercare la parola hentry e vedere che trovi

@andrea: sono d'accordo con te, magari chiederò a iole o studierò io stesso qualcosa di alternativo

@stefania: brutto saltare la pausa pranzo per poi vedere vanificati i propri sforzi :( mandami in posta il template, vorrei studiarlo per capire come risolvere il problema in questi casi

@gabypixar: strano, guardando il codice sembra tutto a posto, forse qualcosa va in conflitto... anche a te chiedo di mandarmi il template, affinchè possa darci un'occhiata

@BU: no, non dovrebbe centrarci firefox, sembra più che altro un problema di inserimento del codice nel punto sbagliato, forse dovuto a una struttura diversa del template... dovresti assicurarti di non interrompere nessuna catena di < e >

@alex: grazie a te!

@alexs: ho appuntato il tuo problema, anche nel tuo caso: mi mandi il template?

mi aspetta una bella spulciata di codice :)

BU 09 luglio 2009 23.46  

...grazie, ho riprovato, nulla...ho lo stesso problema di alexs

- 10 luglio 2009 11.20  
Questo post è stato eliminato dall'autore.
mary47 10 luglio 2009 11.29  

Ciao Tenebrae, commento qui anche se non è la sezione giusta, sempre per via delle emoticon che non appaiono una volta commentato (c'è si la finestra con tutte le faccine, copio incollo i caratteri ma non appaiono) .
Sono una rompiscatole vero??
Ti chiedo scusa e ti ringrazio molto!! ~x( ~x( ~x(

Iole 10 luglio 2009 11.56  

Prometto che non lascerò più bacetti nei commenti!
Anche il mio ragazzo è molto geloso b-(

- 10 luglio 2009 15.26  
Questo post è stato eliminato dall'autore.
admin 10 luglio 2009 16.54  

Salve ragazzi, io ho un blog sull'iPhone: iPhoneSuite.it e cerco lettori interessati per alimentare il blog con news, update, applicazioni, giochi ed altro per iPhone e iPod Touch!

Entrate nel blog, commentate, inviate i vostri articoli e iscrivetevi ai feed per rimanere costantemente aggiornati! ;)

Cialla 10 luglio 2009 22.40  

Secondo me avere la versione stampabile anche nel tuo blog non sarebbe utile deppiu'!!!!! :D

giovanna 11 luglio 2009 19.13  

ciao Orazio,
mi pare una modifica interessante, utile per i miei ragazzi....
grazie!
vado a modificare!:-)
Sì, secondo me sarebbe utile anche qui da te la possibilità di stampare.
un saluto
g

giovanna 11 luglio 2009 19.35  

fatto! :-)
andato tutto ok
ri-grazie!
g

Andrea 14 luglio 2009 02.27  

Mi hai dato una mano in molte occasioni ed ora è giunto il momento che contraccambi la tua gentilezza e disponibilità.

Nel mio commento precedente ti avevo chiesto come poter rendere attivo il link della stampante della pop up passandoci su con il mouse.
Ci sono riuscito modificando il codice del PASSO 4 nel seguente modo:

Da inserire tra "script" e "/script"

function stampaPostCompleto(divId,link) {
var postContent = document.getElementById(divId).innerHTML;
stampa(link+postContent);
}
function stampa(html) {
var printWindow = window.open("","printPost","top=100,left=200,width=600, height=400,scrollbars=yes,status=no,menubar=no,toolbar=no,locations=no");
printWindow.document.open();
printWindow.document.write('<a href="#" onclick="window.print();"><img src="http://lh4.ggpht.com/_fyUYhNUOXMw/Sg2XCP2OJaI/AAAAAAAAATo/vW0r9tXrpzU/printer.gif" alt="" border="0" /></a> <a href="#" onclick="window.print();">Stampa il post</a> <br /> <br />' + html);
printWindow.document.close();
}


A fianco all'icona della stampante ho aggiunto di nuovo la dicitura "Stampa il post" perchè mi è sembrato più completo ma si può logicamente omettere.

L'ho testato su Firefox 3.5, Internet Explorer 8 e Google Chrome 2.0.

Ancora un ringraziamento e alla prossima! ;)

Saluti d'oltreoceano

Andrea 14 luglio 2009 02.36  
Questo post è stato eliminato dall'autore.
Andrea 14 luglio 2009 03.26  

ops... purtroppo il codice viene modificato una volta che commento ma si può riconvertire con la famosa pagina http://www.blogcrowds.com/resources/parse_html.php

mi sono dimenticato anche di postare un esempio:
http://itinerarimessicani.blogspot.com/2009/07/barrancas-del-cobre.html
a piè di pagina

Matteo Enrico 14 luglio 2009 17.20  
Questo post è stato eliminato dall'autore.
Matteo Enrico 14 luglio 2009 17.21  

Ti ringrazio tantissimo per questa applicazione, però (ahimè)ho lo stesso problema si alexs e BU...
come possiamo risolvere la questione?

Grazie mille anticipatamente!

Tenebrae 14 luglio 2009 21.09  

mi sono stati mandati i template che ho chiesto, purtroppo non ho avuto tempo di guardarli, ma appena lo farò vedrò come risolvere i problemi e ne darò indicazione a tutti

e al più presto farò la modifica anche qui!

@andrea: ma grande! speriamo che diventi una moda, quella di mandarmi versioni migliorate delle modifiche, sarebbe davvero comodo per me :)

appena potrò verificherò il codice che mi ha incollato e lo integrerò nel post (o magari ne farò uno a parte)

grazie!

€llY 15 luglio 2009 20.02  

Ciao Orazio, ho provato anche io ma ho lo stesso problema di alexs, cioè :Non è stato possibile analizzare il tuo modello, in quanto non è strutturato correttamente. Assicurati che tutti gli elementi XML presentino il tag di chiusura richiesto.
Messaggio di errore XML: Element type "div" must be followed by either attribute specifications, ">" or "/>".

Come devo fare? Mi piacerebbe tanto poter aggiungere il link per stampare....:(

Ti posso mandare anche il mio template????

ventopiumoso 23 luglio 2009 14.20  

ciao post (e blog) veramente molto utile.
ora vedo se riesco :)
saluti
ps: ti ho linkato, subito in alto a dx!!

ventopiumoso 23 luglio 2009 14.41  

ciao ho apportato le tue modifiche ma non riesco a salvarle, mi compare il messaggio che non tutti i div sono stati chiusi..

in effetti nel passo 1 se cerco

div class='post hentry'

non lo trovo, ma trovo bensì

div class='post hentry uncustomized-post-template'

allora ho fatto le sostituzioni che hai detto cancellando

uncustomized-post-template

no, eh!?

uhm..

saluti!

klick 03 agosto 2009 19.46  

@ ventopiumoso

non devi cancellarlo, ma aggiungerlo, così

div class='post hentry uncustomized-post-template' expr:id='"post-" + data:post.id'

Milla 19 settembre 2009 22.23  

Utilissimo, modifica veloce e veramente utile! Grazie

EssenZadiCanneLla 10 novembre 2009 10.54  

grazie Orazio...aggiunto.

cavoliamerenda 14 novembre 2009 10.54  

questa è l'unica cosa dei tuoi tanti consigli utili e messi in atto che proprio non mi funziona, eppure ho un Minima, non dovrebbe dare problemi... secondo te che può essere?


Prima di lasciare un commento, leggete qui

Posta un commento

Lettori fissi






Ricevi in posta i nuovi articoli del blog.
Inserisici il tuo indirizzo:



Prima di mandarmi una mail, leggete qui

Link a Creare blog

Se volete aggiungere un collegamento nel vostro blog a Creare Blog, potete utilizzare il seguente codice:





Se avete un link a Creare Blog nel vostro blog, fatemelo sapere che sarò felice di aggiungervi all'elenco di chi mi linka.

Alcuni articoli a caso