29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / eZ Publish / Configuration / eZ Publish : le template d'impression print_pagelayout.tpl





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

eZ Publish : le template d'impression print_pagelayout.tpl

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