Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Templates > phplib et phpBB
phplib et phpBB Forum d'entraide sur les moteurs de templates phplib et phpBB. Avant de poster -> FAQ gabarits phpBB2, Cours phpBB2 et Sources phpBB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/03/2006, 00h08   #1
Membre du Club
 
Inscription : décembre 2004
Messages : 94
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 94
Points : 42
Points : 42
Envoyer un message via MSN à nicolaskarp
Par défaut [phpBB 2] gérer la présence ou l'absence d'une donnée pour l'afficher

Bonjour,

Je réalise mon livre d'or et j'utilise les templates pour l'afficher.

Voici mon fichier tpl (juste la partie qui nous interesse) :
Code :
1
2
3
4
 
<!-- BEGIN site -->
		<a href="{site.SITE}" title="Site Web du posteur" > <img src="../templates/images/1/livreDor/home.GIF" border="0" /> </a>
<!-- END site -->
Ensuite voici mon cde php :
Code :
1
2
3
4
5
6
7
8
9
 
while(.....){
   //Affichage d'une autre partie du message qui apparait tout le temps (date, pseudo, note,..)
   if ($donnees['site'] != ""){	
	$template->assign_block_vars('site',array(
		'SITE'	=> $adresseSite
         ));
   }
}
Cependant lorsque mon premier message a un site, le second prendra automatquement le site du premier?? J'aimerais donc savoir si au début de ma boucle affichant les messages, je ne pourrais pas vider le block 'site'..

J'espère avoir été clair....

Merci d'avance

Nicolas.
nicolaskarp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2006, 10h00   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Non, ton code fonctionne tel quel et rien ne sera remplacé.
Au passage, j'imagine que tu utilises un système de templates à la phpLib/phpBB ?

test.tpl
Code :
1
2
3
<!-- BEGIN site -->
      <a href="{site.SITE}" title="Site Web du posteur" >{site.SITE}</a><br />
<!-- END site -->
test.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
 
require('template.php');
 
$template = new Template('./');
$template->set_filenames(array('body' => 'test.tpl'));
 
foreach(array('site_1', 'site_2', 'site_3') as $adresseSite){
   $template->assign_block_vars('site', array(
         'SITE'   => $adresseSite));
}
 
$template->pparse('body');
 
?>
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2006, 10h18   #3
Membre du Club
 
Inscription : décembre 2004
Messages : 94
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 94
Points : 42
Points : 42
Envoyer un message via MSN à nicolaskarp
Oui mon code marche mais il ne marche pas comme je le voudrais

En fait les utilisateurs ne sont pas obligés d'entrer un site internet.. Et si jamais le message précédent possède un site internet et bien le post suivant qui n'en possède pas recupera le précédent.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
while ($donnees = mysql_fetch_array($req)){
		$date = date("d.m.Y" , $donnees['date']);
		$heure = date("H:i", $donnees['date']);
	    $message = str_replace($smiley, $image, $donnees['comm']);
 
		$template->assign_vars(array(
				'AUTEUR'	=> $donnees['pseudo'],
				'DATE'		=> $date,
				'HEURE'		=> $heure,
				'NOTE' 		=> $donnees['note'],
				'CONTENU'	=> $message
 
		));
		if ($donnees['site'] != ""){
			echo"entre";
			$template->assign_block_vars('site',array(
				'SITE'	=> $donnees['site']
			));
		}
		$template->pparse('messages');
}
et mon fichier tpl :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<div class="message">
	<div class="titre"> 
		<span class="note">
			{NOTE}/10
		</span>
		Par {AUTEUR}, le {DATE} à {HEURE} 
 
		<!-- BEGIN site -->
		<a href="{site.SITE}" title="Site Web du posteur" > <img src="../templates/images/1/livreDor/home.GIF" border="0" /> </a>
		<!-- END site -->
 
	</div>
 
	<div class="contenu">
		{CONTENU}
	</div>
</div>
 
<br/>
J'espère que tu m'auras compris Kirkis et que tu pourras m'aider ;-) Mais je te remercie deja beaucoup de m'apporter ton aide.

Nicolas.
nicolaskarp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2006, 11h40   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Ah, tu dois donc répéter le code de ce template ?
Je pense que tu fais fausse route, cependant je ne comprends pas l'erreur. À l'heure actuelle, il devrait tout remplacer sauf le site (c'est le seul élément qui devrait être répété) !

Voici ce que j'imagine que tu souhaites faire.

test.tpl
Code :
1
2
3
4
5
6
<!-- BEGIN actualite -->
   Par {actualite.AUTEUR} le {actualite.DATE}
   <a href="{actualite.SITE}" title="Site Web du posteur" >{actualite.SITE}</a>
   Note :  {actualite.NOTE}
   <br />
<!-- END actualite -->
test.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
require('template.php');
 
$template = new Template('./');
$template->set_filenames(array('body' => 'test.tpl'));
 
$actualites[] = array('auteur' => 'Auteur 1',
                  'date' => time(),
                  'note' => "Note de l'auteur 1",
                  'site' => "Site de l'auteur 1");
 
$actualites[] = array('auteur' => 'Auteur 2',
                  'date' => time(),
                  'note' => "Note de l'auteur 2",
                  'site' => '');
 
$actualites[] = array('auteur' => 'Auteur 3',
                  'date' => time(),
                  'note' => "Note de l'auteur 3",
                  'site' => "Site de l'auteur 1");
 
foreach($actualites as $actualite){
   $template->assign_block_vars('actualite', array(
         'AUTEUR'   => $actualite['auteur'],
         'DATE'   => 'À '.date('H:i:s', $actualite['date']).' le '.date('d/m/Y', $actualite['date']),
         'NOTE'   => $actualite['note'],
         'SITE'   => $actualite['site']));
}
 
$template->pparse('body');
Avec cet exemple, le lien existe mais, puisqu'il ne comporte pas de texte, il n'est pas affiché dans le navigateur. Si tu souhaites complètement éviter sa transmission, tu as deux options :
  • construire le lien dans l'appel à $template->assign_block_vars(), ce qui te permet d'attribuer une chaîne vide ou un lien complet
  • utiliser un block imbriqué de type <!-- BEGIN switch_site -->, ce qui est à mon sens la meilleure méthode
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h13.


 
 
 
 
Partenaires

Hébergement Web