Date de publication: le mardi 1 janvier 2008 à 22h24
Dernière modification: par Pascal BOYER le mardi 1 janvier 2008 à 22h39
« Article précédent: Workflow : configurer un multiplexeur pour lancer un workflow à partir d'un workflow
eZ Publish : imprimer avec le template print_pagelayout.tpl
Par défaut, eZ Publish propose un template d'impression:
design/standard/templates/print_pagelayout.tpl
L'appel de ce template se fait par l'intermédiaire du module layout dont la documentation se trouve ici:
Le module Layout
Comme l'indique clairement la documentation, les URI d'impression doivent être de la forme:
http://www.monsite.fr/layout/set/print/content/view/full/45
Exemple d'utilisation
Soit l'URI traditionnel d'un article quelconque:
http://luxpopuli.fr/ez_publish__1/configuration__1/workflow_moderer_les_commentaires
Pour afficher cet article avec le template d'impression, il suffit donc d'insérer ceci dans l'URI:
http://luxpopuli.fr/layout/set/print/ez_publish__1/configuration__1/workflow_moderer_les_commentaires
Traduction d'URI
Il est possible d'améliorer encore la syntaxe des URI d'impression grâce au système de traduction d'URI que propose eZ Publish.
Cliquez sur l'onglet Administration de l'interface d'administration puis, dans le menu gauche, sur le lien Traducteur d'URL.
Remplissez alors le troisième cadre comme cela:
Après avoir valider en cliquant sur Ajouter, une nouvelle ligne s'affiche en bas de page:
Validez avec le bouton Appliquer les changements.
A présent, l'accès au template d'impression se fait avec cet URI:
http://luxpopuli.fr/imprimer/ez_publish__1/configuration__1/workflow_moderer_les_commentaires
Imprimer la page d'accueil du site
Si vous utilisez la réécriture d'URI pour supprimer index.php de vos URI et que vous avez configuré eZ Publish pour supprimer également des URI le nom du siteaccess par défaut, alors l'URI de la page d'accueil est le suivant:
http://www.monsite.fr
Pour traduire l'URI permettant d'afficher la page pour impression de la page d'accueil, il faut créer cette traduction:
Le contenu intégral du champ de droite est:
layout/set/print/content/view/full/2
...ce qui implique que dans notre exemple l'on considère que la page d'acceuil correspond au contenu du noeud de ID numéro 2
Après avoir validé avec le bouton Ajouter, une nouvelle ligne s'affiche au bas de la page (avant dernière ligne du tableau ci-dessous):
Maintenant, afficher la page d'impression de la page d'accueil du site est réalisé par l'URI suivant:
http://www.monsite.fr/imprimer/pageAccueil
Surcharge du template print_pagelayout.tpl
Pour personnaliser le template d'impression print_pagelayout.tpl, une première possibilité est d'en faire une copie dans le sous-répertoire templates du design concerné, comme ceci:
cp -p design/standard/templates/print_pagelayout.tpl design/plain/templates/
Puis videz les caches:
./bin/php/ezcache.php --clear-all
Clearing : Content view cache, Global INI cache, INI cache, Codepage cache, Expiry cache, Class identifier cache, Sort key cache, URL alias cache, Character transformation cache, Image alias, Template cache, Template block cache, Template override cache, RSS cache, User info cache
Le système, utilisera alors automatiquement la copie du template.
Une autre technique consiste à créer, dans le siteaccess public concerné, une surcharge du fichier de configuration layout.ini contenant ceci:
vi settings/siteaccess/plain_site/layout.ini.append.php
1 <?php /* ini charset="iso-8859-1" 2 3 [print] 4 PageLayout=impression.tpl 5 #Set UseAccessPass to false in order to exclude '/layout/set/[layout]' from the paths 6 # UseAccessPass=false 7 8 */ ?>
Vider les caches pour que le système prenne en compte le nouveau template d'impression:
design/plain/templates/impression.tpl
Enfin, une dernière approche consiste (ou consisterait, devrais-je dire) à créer une surcharge dans le fichier override.ini.append.php du siteaccess public concerné.
Une telle surcharge pourrait être:
[impression_articles] Source=node/view/full.tpl MatchFile=impression.tpl Subdir=templates Match[class_identifier]=article Match[layout]=print
Cela dit, je ne suis arrivé à aucun résultat probant avec cette dernière méthode que je n'utilise donc pas.
Cette technique m'a été inspirée par ce post: different_templates_between_pagelayout_and_print_pagelayout
Peut-être serez-vous plus perspicace que moi... ;-)
Les feuilles de style CSS
Pour mieux personnaliser la page d'impression de vos article il peut être bien d'importer tout ou partie des feuilles de styles importées par le template pagelayout.tpl puis de supprimer l'affichage des éléments indésirables grâce à l'usage de la propriété suivante:
display: none;
Une autre règle peut aider à masquer l'affichage d'éléments:
visibility: hidden;
La différence entre les deux règles étant que la seconde préserve l'espace d'affichage qu'occuperait l'élément caché s'il était visible. Cela peut aider à préserver, dans certaines conditions, la mise en page générale.
Ajouter un icône d'impression
Pour ajouter, par exemple, l'icône d'une imprimante sur chaque page du site afin que les visiteurs affichent, en cliquant sur cet icône, la mise en page de l'article destinée à l'impression, vous pouvez ajoutez ces lignes dans le template pagelayout.tpl:
{if eq($module_result.node_id,2)} <a id="btn_imprimer_article" title="Imprimer l'article" href="http://www.monsite.fr/imprimer/pageAccueil"></a> {else} <a id="btn_imprimer_article" title="Imprimer l'article" href={concat('http://www.monsite.fr/imprimer',$module_result.uri)}></a> {/if}
La première ligne ci-dessus vérifie que le contenu affiché correspond ou non au contenu du noeud de ID 2. Le cas échéant, l'URI d'impression spécifique à ce noeud est utilisé
Par ailleurs la règle CSS associée peut être:
#btn_imprimer_article { background-image:url(../images/boutons/imprimante.png); background-position: center; background-repeat: no-repeat; display:block; float:left; height:22px; width:28px; z-index: 1000; }
Commentaires














