Forum ZitePLUS

La communauté des utilisateurs du CMS ZitePLUS

Vous n'êtes pas identifié(e).

#1 15/11/2010 23:13:18

Satanas
Membre
Inscription : 27/01/2008
Messages : 84
Site Web

Imprimer uniquement le contenu d'une page

Bonsoir à tous et à chacun.
Je souhaiterai avoir un lien en bas de ma page afin d'imprimer le contenu de ma page.
Je me suis inspiré de ce tuto sur pompage.net

J'ai donc pompé la solution, en insérant cette ligne de code dans le fichier zite.php.

<!--- Imprimer la page -->
<a href="javascript:window.print()">Imprimer la page</a><br />

Ensuite j'ai créé une feuille de style pour imprimer et exclure le menu de navigation.

html {
  width:100%;
  margin:0;
  padding:0;
}

body {
	margin:0;
	padding:0;
	color:#000;
	background-color:#DEDEDE;
	text-align:center;
	font-family:"Trebuchet MS", Verdana, "Lucida Grande", Tahoma, Helvetica, Sans-Serif;
	font-size: 12pt;
}

#page {
	text-align:left;
	margin:10px 8% 10px 8%;
	position:relative;
	background:#fff;
	border:1px solid #CFCFCF;
	-moz-border-radius:6px;
	border-radius:6px;
	padding:0;
	zoom:1;
}

#main {
  width: auto;
  margin: 0 5%;
  padding: 0;
  border: 0;
  float: none !important;
  color: black;
  background: transparent none;
float: none !important;
  }

#side, #bot { display:none;}

Enfin, dans mon template.php, j'appelle la feuille de style.

<head>
bla bla bla ...
<link rel="stylesheet" type="text/css" media="print" href="print.css" />
<?php echo $this->head(); ?>

Quand je clique sur "Imprimer la page", ça imprime ... Mais, le contenu est en partie tronqué, et le menu de navigation est toujours présent.
Comment dois-je faire plus précisément ? Existe-t-il une autre méthode ?

J'ai l'impression que cette impression me laisse sur une mauvaise impression !

Merci de votre aide.

A+

Hors ligne

#2 16/11/2010 00:30:49

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : Imprimer uniquement le contenu d'une page

Bonsoir,
Plus simple encore wink

1) créer un fichier print.css qui contient:

#side, #bot, .zalert, #zadmin {
  display: none;
}

2) Modifier le template pour avoir:

<head>
bla bla bla ...
<?php echo $this->head(); ?>
 <link href="print.css" rel="stylesheet" type="text/css" media="print" />
bla bla bla ...

a+
Jean-Paul

ps: plutôt que de modifier le fichier zite.php, tu peux utiliser un panneau latéral de type 8 (après la page centrale) par exemple pour insérer ton lien d'impression
<a href="javascript:window.print()">Imprimer la page</a><br />

ps2: le contenu de la page est effectivement tronqué

Hors ligne

#3 16/11/2010 11:01:13

Satanas
Membre
Inscription : 27/01/2008
Messages : 84
Site Web

Re : Imprimer uniquement le contenu d'une page

Bonjour,
la problématique reste la même. La page est tronquée. je pense qu'il faut que je me penche sur la mise en page dans la feuille de style. Et le menu reste visible.
A+

Hors ligne

#4 16/11/2010 11:06:18

michael79
Membre
Lieu : Bruxelles, Belgique
Inscription : 23/07/2008
Messages : 422

Re : Imprimer uniquement le contenu d'une page

Satanas a écrit :

Bonjour,
la problématique reste la même. La page est tronquée. je pense qu'il faut que je me penche sur la mise en page dans la feuille de style. Et le menu reste visible.
A+

Jettes un coup d'oeil sur la feuille de style d'impression de Zite wink


ZiteCMS rocks !

Hors ligne

#5 16/11/2010 13:12:16

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : Imprimer uniquement le contenu d'une page

Satanas a écrit :

Bonjour,
la problématique reste la même. La page est tronquée. je pense qu'il faut que je me penche sur la mise en page dans la feuille de style. Et le menu reste visible.
A+

Pour le menu, si tu as suivi exactement l'ordre indiqué dans mon précédent message, il ne peut plus y être wink
Est-ce que tu as fait une mise à jour: CTRL-F5 pour forcer la relecture du fichier css ?

Pour la page tronquée, j'ai le même problème sous Firefox et IE ... par contre, cela fonctionne bien sous Chrome ...
... un mystère a éclaircir


a+
Jean-Paul

Hors ligne

#6 16/11/2010 16:19:38

Satanas
Membre
Inscription : 27/01/2008
Messages : 84
Site Web

Re : Imprimer uniquement le contenu d'une page

Bonjour,
après différents tests sur Firefox, IE et Chrome, cette feuille de style nommée print.css semble assez fonctionnelle. Je force un peu les largeurs de pages (voir les "width" et ceci evite de tronquer les pages à l'impression).

html {
  	width: 850px;
	height:100%;
  	margin:0;
  	padding:0;
}

body {
	margin:0;
	padding:0;
	color:#000;
	background-color:#DEDEDE;
	text-align:center;
	font-family:"Trebuchet MS", Verdana, "Lucida Grande", Tahoma, Helvetica, Sans-Serif;
	font-size: 12pt; 
}

#page {
	text-align:left;
	margin:10px 0% 10px 0%;
	position:relative;
	background:#fff;
	border:1px solid #CFCFCF;
	-moz-border-radius:6px;
	border-radius:6px;
	padding:0;
	zoom:1;  
	overflow:visible; /* Pour imprimer plusieurs pages sous Firefox*/
}

#main {
  	margin: 0 5%;
 	padding: 0;
  	border: 0;
  	float: none !important;
  	color: black;
 	background: transparent none;
  	float: none !important; 
	overflow:visible; /* Pour imprimer plusieurs pages sous Firefox*/
  }

#top, #side, #bot, .zalert, #zadmin, #sidebar {
  display: none; 
}

Il ne me reste plus qu'à trouver l'endroit le plus pertinent pour afficher une icône impression (dans l'entête, en bas de page, dans le menu side).
Le mieux effectivement serait en dehors du zite.php. Je vais y réfléchir.

Merci des conseils Jpg, cela m'a facilité la mise en forme de la css.

Hors ligne

#7 16/11/2010 19:08:22

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : Imprimer uniquement le contenu d'une page

Super smile

Ce qui pourrait donner pour un print.css général et minimal pour ZitePLUS:

html, body, #page, #main, #mid {
 margin:0;
 padding:0;
 border:0;
 overflow:visible; /* Pour imprimer plusieurs pages sous Firefox*/
 float: none !important;
 position:relative;
}
#top,#oppside, #side, #bot, .zalert, #zadmin, #filariane {
  display: none;
}

Je vais peut-être le mettre en standard wink

a+
Jean-Paul

Hors ligne

#8 16/11/2010 19:55:48

michael79
Membre
Lieu : Bruxelles, Belgique
Inscription : 23/07/2008
Messages : 422

Re : Imprimer uniquement le contenu d'une page

jpg a écrit :

Super smile

Ce qui pourrait donner pour un print.css général et minimal pour ZitePLUS:

html, body, #page, #main, #mid {
 margin:0;
 padding:0;
 border:0;
 overflow:visible; /* Pour imprimer plusieurs pages sous Firefox*/
 float: none !important;
 position:relative;
}
#top,#oppside, #side, #bot, .zalert, #zadmin, #filariane {
  display: none;
}

Je vais peut-être le mettre en standard wink

a+
Jean-Paul

Super! Je Prends wink


ZiteCMS rocks !

Hors ligne

#9 16/11/2010 20:29:14

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : Imprimer uniquement le contenu d'une page

cool

Hors ligne

#10 16/11/2010 23:09:15

Satanas
Membre
Inscription : 27/01/2008
Messages : 84
Site Web

Re : Imprimer uniquement le contenu d'une page

Bon ben voilà, peut-être, la synthèse finale de ce post.

Afin de respecter l'esprit de zite et ne pas inclure de message dans le fichier zite.php, j'ai effectué ceci. Dans le fichier message.ini, j'ai rajouté cette ligne :

imprimer_page = "Imprimer la page"

Ensuite dans zite.php, dans la fonction Output, autour de la ligne 340, j'ai rajouté le lien javascript:windows.print(), et le message de remplacement.

function output() { // mettre constante pour multilangue !!
	  if (!$this->isdoc) {
			$out='';
			$this->doevent(eOutput,eBefore,$out);
			$this->append($this->truepage?('<p align="right">'.($this->config['page_date']?('<small><br /><br /><br />
			<!--- Imprimer la page -->
			<a href="javascript:window.print()">'.$this->get_message('imprimer_page').'</a><br />

Et pour terminer, j'ai laissé tombé ma feuille de style print.css et ai adopté la tienne, plus simple et plus minimaliste (que la mienne ... et tout aussi fonctionnelle)

Jpg, le programmeur au clin d'oeil agile a écrit :

Ce qui pourrait donner pour un print.css général et minimal pour ZitePLUS:

Code:

html, body, #page, #main, #mid {
margin:0;
padding:0;
border:0;
overflow:visible; /* Pour imprimer plusieurs pages sous Firefox*/
float: none !important;
position:relative;
}
#top,#oppside, #side, #bot, .zalert, #zadmin, #filariane {
  display: none;
}
Je vais peut-être le mettre en standard ...

Sans oublier le fameux : wink

T'en penses quoi Jpg ?

Hors ligne

#11 17/11/2010 00:39:25

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : Imprimer uniquement le contenu d'une page

Satanas a écrit :

Et pour terminer, j'ai laissé tombé ma feuille de style print.css et ai adopté la tienne, plus simple et plus minimaliste (que la mienne ... et tout aussi fonctionnelle)

Et à laquelle tu as fortement contribuée wink

Satanas a écrit :

le programmeur au clin d'oeil agile

lol

Satanas a écrit :
jpg a écrit :

Je vais peut-être le mettre en standard ...

Sans oublier le fameux : wink

T'en penses quoi Jpg ?

Si je le mets en standard dans ZitePlus (99,99% de chance), cela sera fait ainsi:
- une feuille de style print.css sera proposé par défaut: celle que tu connais
- c'est la fonction head() qui mettra automatiquement la ligne pour ce style
- il y aura une ligne de plus dans le menu CONFIGURER pour avoir accès à la feuille de style d'impression (print.css)

Avec cela, un simple fichier|imprimer dans le navigateur (ou fichier|prévisualisation) suffit pour imprimer.

Pour tous ceux, qui comme toi, souhaitent intégrer un texte ou un bouton pour imprimer la page en cours, je conseille
la méthode suivante, déjà évoquée plus haut, plus souple pour le concepteur du site web: la création d'un panneau.
Au choix du designer, cela peut-être un panneau latéral de type 8 (après la page centrale) par exemple pour insérer le lien d'impression que tu proposais:
<a href="javascript:window.print()">Imprimer la page</a><br /> ou un autre type de panneau si on souhaite afficher le texte ou bouton ailleurs.
Cette méthode (l'utilisation des panneaux) est très souple.
ps: je rappelle d'ailleurs que l'on peut créer plusieurs panneaux distincts d'un même type

a+
Jean-Paul

Pour le plaisir wink

Hors ligne

Pied de page des forums