Ex plugin classique : Différence entre versions

De TheliaDoc
Aller à : navigation, rechercher
Ligne 116 : Ligne 116 :
  
 
Nous décidons de ne rien faire de particulier à la désactivation du plugin.
 
Nous décidons de ne rien faire de particulier à la désactivation du plugin.
 +
 +
 +
<pre>
 +
function boucle($texte, $args){
 +
// récupération des arguments
 +
$ref= lireTag($args, "ref");
 +
 +
$search ="";
 +
$res="";
 +
 +
// préparation de la requête
 +
if($ref!="")  $search.=" and ref=\"$ref\"";
 +
 +
$commentaire = new Commentaires();
 +
 +
$query_commentaires = "select * from $commentaire->table where 1 $search";
 +
$resul_commentaires = mysql_query($query_commentaires, $commentaire->link);
 +
$nbres = mysql_numrows($resul_commentaires);
 +
if(!$nbres) return "";
 +
 +
while( $row = mysql_fetch_object($resul_commentaires)){
 +
$temp = str_replace("#NOM", "$row->nom", $texte);
 +
$temp = str_replace("#MESSAGE", "$row->message", $temp);
 +
$temp = str_replace("#DATE", substr($row->date, 0, 10), $temp);
 +
$temp = str_replace("#HEURE", substr($row->date, 11), $temp);
 +
 +
$res .= $temp;
 +
}
 +
 +
return $res;
 +
 +
}
 +
</pre>
 +
 +
La boucle commentaire est gérée ici. Voici ses caractéristiques :
 +
 +
<pre>
 +
Param entrée
 +
ref : référence du produit
 +
 +
Param sortie
 +
#NOM : nom de la personne qui a posté un commentaire
 +
#MESSAGE : contenu du commentaire
 +
#DATE : date du commentaire
 +
#HEURE : heure du commentaire
 +
 +
</pre>
 +
 +
Voici un exemple de son utilisation :
 +
 +
<pre>
 +
<THELIA_comment type="COMMENTAIRES" ref="#PRODUIT_REF">                                                     
 +
Message de #NOM : #MESSAGE <br />
 +
#HEURE #DATE
 +
</THELIA_comment>
 +
</pre>

Version du 11 juillet 2007 à 09:33

Nous allons créer un plugin "commentaires".

Celui-ci permettra aux internautes d'ajouter des commentaires sur une fiche produit.
Une nouvelle boucle permettra d'afficher ces commentaires et une interface d'administration de les supprimer si besoin.

Nous allons créer un répertoire "commentaires" contenant 2 fichiers :

- Commentaires.class.php (notre classe pour le plugin)
- commentaires_admin.php


Commençons par la classe.

Voici son allure générale :


<?php

include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsClassiques.class.php");
	
	
	class Commentaires extends PluginsClassiques{

		var $id;
		var $nom;
		var $message;
		var $ref;
		var $date;
		
		var $table="commentaires";
		var $bddvars = array("id", "nom", "message", "ref", "date");
		
		function Commentaires(){
			$this->PluginsClassiques();	
		}

		function charger($id, $lang=1){
		
		}


		function init(){
						
			
		}

		function destroy(){
		
		}		

		function boucle($texte, $args){
		
		}	

		function action($res){
			
			
		}
		
	}

?>


Notre plugin utilisera une table dans la base de données contenant 4 champs :
- id : identifiant du commentaire.
- nom : nom de l'auteur du commentaire.
- message : contenu du commentaire.
- ref : référence du produit associé au commentaire.
- date : date de l'ajout du commentaire.


Détaillons maintenant chaque méthode.


		function charger($id, $lang=1){
		
			return $this->getVars("select * from $this->table where id=\"$id\"");

		}

Cette méthode permet de charger un commentaire de la bdd via son identifiant.


		function init(){
						
			$cnx = new Cnx();
			$query_commentaires = "CREATE TABLE `commentaires` (
			  `id` int(11) NOT NULL auto_increment,
			  `nom` text NOT NULL,
			  `message` text NOT NULL,
			  `ref` text NOT NULL,
			  `date` datetime NOT NULL,
			  PRIMARY KEY  (`id`)
			) AUTO_INCREMENT=1 ;";
			$resul_commentaires = mysql_query($query_commentaires, $cnx->link);			

		}

L'initialisation du plugin va simplement créer une table commentaire dans la base de données Thelia.


		function destroy(){
		
		}	

Nous décidons de ne rien faire de particulier à la désactivation du plugin.


		function boucle($texte, $args){
			// récupération des arguments
			$ref= lireTag($args, "ref");

			$search ="";
			$res="";

			// préparation de la requête
			if($ref!="")  $search.=" and ref=\"$ref\"";

			$commentaire = new Commentaires();	

			$query_commentaires = "select * from $commentaire->table where 1 $search";
			$resul_commentaires = mysql_query($query_commentaires, $commentaire->link);
			$nbres = mysql_numrows($resul_commentaires);
			if(!$nbres) return "";

			while( $row = mysql_fetch_object($resul_commentaires)){
				$temp = str_replace("#NOM", "$row->nom", $texte);
				$temp = str_replace("#MESSAGE", "$row->message", $temp);
				$temp = str_replace("#DATE", substr($row->date, 0, 10), $temp);
				$temp = str_replace("#HEURE", substr($row->date, 11), $temp);

				$res .= $temp;
			}

			return $res;
	
		}	

La boucle commentaire est gérée ici. Voici ses caractéristiques :

Param entrée
ref : référence du produit

Param sortie
#NOM : nom de la personne qui a posté un commentaire
#MESSAGE : contenu du commentaire
#DATE : date du commentaire
#HEURE : heure du commentaire

Voici un exemple de son utilisation :

<THELIA_comment type="COMMENTAIRES" ref="#PRODUIT_REF">                                                      
Message de #NOM : #MESSAGE <br />
#HEURE #DATE 
</THELIA_comment>