Avertissement
La façon normale et « standard » de procéder pour gérer l’impression est de fournir au navigateur (comme le fait la dist/) une feuille de style alternative destinée à l’impression.
<link rel="stylesheet" type="text/css" media="print" href="print.css" />
Pour plus de détail, nous vous renvoyons sur l’excellent article d’Openweb
Cette « petite contribution » ne s’adressera donc à vous que dans la mesure où vous voulez un squelette spécifique d’impression, que vous pourrez personnaliser à souhaît.
Jusqu’aux versions de SPIP 1.8
1/ Faire un squelette d’impression
2/ Faire un lien dans le squelette article, avec du texte ou une petite image d’imprimante, vers l’article en mode impression.
article_print.php3?id_article=[(#ID_ARTICLE)]
<a href="imprimer.php3?id_article=#ID_ARTICLE"
title="afficher une version imprimable de cet article">
Imprimer l'article
</a>
À partir de SPIP 1.9
Il n’ y a plus de fichier d’appel en .php3.
1/ Mettre le squelette imprimer.html dans le répertoire squelettes à la racine de spip ou dans dist à défaut.
2/ Dans le squelette article.html
Je me suis posée la question de savoir comment insérer ce lien en spip 1.9.
J’avais d’abord trouvé cette solution un peu naïve avec la balise #URL_SITE :
<a href="#URL_SITEspip.php?page=imprimer&id_article=#ID_ARTICLE" onclick="window.open(this.href,'_blank');return false;">
Imprimer
</a>
3/ Cela a pour effet d’ouvrir la page dans un target _blank [1].
Pour être accessible, penser à mettre un « title » dans le lien.
On peut également insérer une image d’impression. Pour valider la page en xhtml strict, qui ne validerait pas avec un target blank [2] classique, on se sert de cette astuce dans le lien.
http://www.webmaster-hub.com/lofive...
<a href='#'onclick="window.open
(this.href,'_blank');return false;">
Sauf que, petit hic encore, le &id ne valide pas en xhtml
- L’astuce donnée par James, consiste à remplacer par &
amp ;
<div>
<a href="#URL_SITEspip.php?page=imprimer&id_article=#ID_ARTICLE" title="afficher une version imprimable de cet article" onclick="window.open(this.href,'_blank');return false;">
<img src='squelettes/impresora.gif' alt="impression" title="impression" />
</a>
Imprimer cet article
</div>
En fait, tout cela n’est pas très SPIP !
Il y a une balise beaucoup plus appropriée et une syntaxe beaucoup plus « spip » pour faire cela. Merci, encore une fois à James, de me l’avoir indiquée.
- Utiliser : #URL_PAGE
Cf ce que dit la doc à propos de cette balisehttp://www.spip.net/
fr_article190...
#URL_PAGE (...) retourne une url de type « page » (...), vers la page passée en paramètre et qui pourra être utiliser dans un lien. Par exemple, pour accéder à la page générée par le squelette toto.html, située dans votre dossier-squelette, #URL_PAGEtoto généra automatiquement l’url spip.php ?page=toto. Un second paramètre est autorisé pour ajouter des paramètres à l’url. Exemple
#URL_PAGE {toto,id_article=#ID_ARTICLE}
génèrera l’url spip.php ?page=toto&id_article=XXX.
#URL_PAGE{imprimer}|parametre_url{id_article}
- La syntaxe peut même se racourcir à :
#URL_PAGE{imprimer,id_article=#ID_ARTICLE}
Nous devons donc mettre le lien suivant dans notre squelette article.html. Une syntaxe courte, belle, et qui en plus valide !
<div>
<a href="#URL_PAGE{imprimer,id_article=#ID_ARTICLE}" title="afficher une version imprimable de cet article" onclick="window.open(this.href,'_blank');return false;">
<img src='squelettes/impresora.gif' alt="impression" title="impression" />
</a>
Imprimer cet article
</div>
Cette solution en 1.9 reste pour tout ceux qui voudraient concevoir leur propre squelette d’impression, ou qui ne voudraient pas utiliser du javascript.
La solution plugin avec « Imprimir_documento » [3]
Mise à jour SPIP-Contrib (juin 2007)
ce plugin est désormais documenté, pour la version française, dans cette rubrique
Il y a désormais un plugin imprimir_documento fait par JoseLuis, et disponible sur la zone.
Il y a aussi une contribution en espagnol faîte par l’auteur lui-même du plugin.
Je ne parle pas du tout l’espagnol pour traduire l’article de Joseluis, mais rapidement, quelques mots concernant ce plugin :
1/ Comme pour tous les plugins, récupérez le dernier zip à jour de cette contrib sur http://zone.spip.org/files/spip-zone/, décompactez le et placez le dossier « imprimir_documento_1_9 » obtenu dans votre répertoire /plugins (à créer à la racine de votre spip s’il n’existe pas encore), puis allez sur l’interface de gestion des plugins (menu Configuration > Gestion des plugins), cochez le plugin « imprimir_documento_1_9 » puis validez.
2/ Ensuite, dans votre squelette d’article ou de brève, insérer à l’endroit souhaité la balise #IMPRIMIR_DOCUMENTO**
avec les deux astérix.
Ce petit plugin est basé sur un jeu de deux squelettes que vous pouvez très bien personnaliser si vous le souhaîtez, un de brève et un d’article :
- imprimir_articulo.html
- imprimir_breve.html
Et un petit script javascript qui lance une popup bien sympatique, contenu dans un script php :
- baliza_imprimir_documento.php
3/ Il est possible de personnaliser le plugin :
- Vous pouvez changer l’icone d’impression en renommant votre propre icone « impresora.gif » dans le répertoire plugin.
- La typographie du style appliqué entre la balise #IMPRIMIR_DOCUMENTO**
peut être changée à l’aide d’une balise span style dans le squelette, ou dans une feuille de style que ous créez :
<span style= "font-size: 65%;" >… </span>
- Toutes les autres modifications se font dans baliza_imprimir_documento.php.
Ce qu’il reste à faire encore sur ce petit plugin
- L’internationaliser en remplacant l’espagnol d’orgine des deux squelettes par des fichiers de langues et des chaînes de langues, ainsi que les quelques mots du fichier php.
- Rendre le javascript d’appel de la popup compliant et valide.
- et dans baliza_imprimir_documento.php, ligne 28, rajouter un attribut alt et title dans la balise img pour que ca valide xhtml.
<img src=\"$logo\" title=\"Impression\" alt=\"Impression\" />
En pièce jointe, le squelette de Joseluis, donné ici uniquement à titre d’exemple, pour appliquer la méthode d’impression en target _blank sans plugin, et sans javascript, ie dans une nouvelle fenêtre et une petite image d’impression fournie par le plugin. Mais naturellement, vous pouvez concevoir votre propre squelette d’impression.
Conclusion
Cette modeste contribution ne prétend en rien être novatrice, juste peut-être utile à certains. Cette question d’impression revient en effet souvent sur les listes et sur les forums.
Pour élargir un peu, dans le genre d’outil pratique pour le squelette article, signalons :
- le plugin de Fil « Recommander » par mail. [4]
- le plugin de Cédric « Article_pdf_1_9 », qui génère un .pdf de vos articles. [5]
À vos imprimantes !
Discussions par date d’activité
7 discussions
une vraie usine à gaz !
Répondre à ce message
Bonjour à toutes et à tous,
Tout d’abord, merci pour cette contrib, qui m’a éclairé sur pas mal de choses, mais un point qui m’est essentiel au vue de la structure de notre site, ce sont les impressions des rubriques. Il s’avère que nous avons pas mal de contenu dans des rubriques, et l’impression reste délicate.
Alors étant donné que nous n’utilisons pas les brèves, j’ai voulu modifier le plugin espagnol « imprimir_documento » et en remplacer l’appel de la page des brèves par une copie modifiée pour les rubriques. J’ai donc fait ce petit changement lors du test sur $_id_article :
$_id_article = champ_sql(’id_article’, $p) ;
$arg = « ’page=imprimir_articulo&id_article=’. ».$_id_article ;
$url = generer_url_public(’’,$arg) ;
// la modif ici :
if (!$_id_article)
$_id_rubrique = champ_sql(’id_rubrique’, $p) ;
$arg = « ’page=imprimer_rubrique&id_rubrique=’. ».$_id_rubrique ;
$url = generer_url_public(’’,$arg) ;
$p->code =« preparar_enlace_imprimir($arg) » ;
J’ai bien entendu créer un nouveau masque « imprimer_rubrique.html » que j’ai mis au bon endroit, seulement je ne comprends pas le script ne monte pas la bonne page, il m’envoi la page articulo, alors que le tag est placé dans mon rubrique.html, et que je teste la validité de la balise article.
On dirait que l’identifiant de l’article est trouvé même si une rubrique est chagée ...
Quelqu’un aurait il une soluce ?
Merci beaucoup, car je ne dois pas être le seul dans ce cas.
Ah oui pour les versions : spip 1.9.1 + pllugin installé
Bon alors voilà, je vais me répondre en fait :
la solution que j’ai trouvé est la suivante :
if ($_GET[’article’])
$_id_article = champ_sql(’id_article’, $p) ;
$arg = « ’page=imprimir_articulo&id_article=’. ».$_id_article ;
$url = generer_url_public(’’,$arg) ;
else
$_id_rubrique = champ_sql(’id_rubrique’, $p) ;
$arg = « ’page=imprimer_rubrique&id_rubrique=’. ».$_id_rubrique ;
$url = generer_url_public(’’,$arg) ;
$p->code =« preparar_enlace_imprimir($arg) » ;
$p->statut = ’html’ ;
return $p ;
Ce n’est peut être pas ce qu’il y a de mieux, mais en tous cas ça fonctionne !
A savoir que nous n’utilisons pas les breves, donc attention à ceux qui voudraient se servir ce ça pour ajouter comme nous des choses à imprimer dans un squelette spécifique.
Merci pour avoir posté ton code qui fonctionne en détournant les brèves. Je pense qu’on pourrait contacter Jose Luis, l’auteur du plugin, pour lui demander dans quelle mesure il serait possbile de l’étendre aussi sur les rubrique. Pour ma part, je n’ai pas de compétence en développement.
Salut a tous,
j ´ai moi aussi ce probleme pour imprimer rubriques ou articles à volonté. Mais ce code ne fonctionne pas, les breves activées ou non c´est le même résultat... il se prend pas en compte les valuers lorsque nous sommes dans un article et imprime les rubriques...
Y a t- il du mouvement ou ce plug est il abandonné ?
Salutations
Rano
Répondre à ce message
n’est-ce pas à la feuille de style de dire comment imprimer le document HTML ? Ainsi dès qu’on lance l’impression la mise en forme peut être complétement modifiée.
- Je me trompe ou quoi ?
Répondre à ce message
Bonjour,
je souhaite réaliser un squelette dans lequel on trouverai le même article plusieurs fois (10 fois le même sur 2 colonnes) pour imprimer en ligne des flyers par exemple.
Je comprend les balises de base style #TEXTE mais là, je ne vois pas bien où placer la balise #IMPRIMIR_DOCUMENTO**.(que signifient les 2 astérisques ?)
Il me semblait qu’en la mettant au début de la < div > à imprimer ça irait, mais non ! j’ai du oublier quelque chose quelque part !
Pourtant le plugin est bien activé, j’ai crée un squelette article=34.html spécialement pour ça que j’ai placé dans le dossier plugins/squelette_egt/
Si quelqu’un(e) a une idée...merci
Bonjour,
J’ai le même problème.
Quelqu’un peut-il nous éclairer ?
Répondre à ce message
génial le plugin Imprimir_documento
merci !
Répondre à ce message
Bonjour,
J’ai utilsé la version « À partir de SPIP 1.9 » (celle avec la balise #URL_page). Le bouton d’impression s’affiche dans mes articles mais lorsque je clique dessus j’obtiens une erreur 404. Vu la simplicité du code, je ne vois pas ou j’ai pu me tromper. QQ aurait-il une idée ? Y a t’il un autre fichier à modifier que mon squelette article ?
Merci
Répondre à ce message
je voulais savoir si il etait possible d’enlever « version imprimable » ?? si oui comment ??
merci
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |