Les plugins classiques

De TheliaDoc
Aller à : navigation, rechercher

Les plugins classiques peuvent ajouter des actions, des boucles à Thelia. Ils peuvent aussi enrichir l'interface d'administration.

Si vous avez lu la partie Introduction_aux_plugins, nous pouvons avancer.

Voici une structure de classe typique d'un plugin de type "classique".

<?php
	include_once(realpath(dirname(__FILE__)) . "/Baseobj.class.php");
	include_once(realpath(dirname(__FILE__)) . "/Cache.class.php");
	include_once(realpath(dirname(__FILE__)) . "/Modulesdesc.class.php");

	
	class PluginsClassiques extends Baseobj{

		var $nom_plugin;
		
		function PluginsClassiques($nom=""){
			$this->Baseobj();	
			$this->nom_plugin = $nom;			
		}

		function init(){
			
		}

		function destroy(){
			
		}		
		
		function getTitre(){
			
			if($_SESSION['navig']->lang == "")
				$lang="1";
			else $lang=$_SESSION['navig']->lang;

			$modulesdesc = new Modulesdesc();
			$modulesdesc->charger($this->nom_plugin, $lang);
			
			return $modulesdesc->titre;
			
		}
				
		function getChapo(){

			if($_SESSION['navig']->lang == "")
					$lang="1";
				else $lang=$_SESSION['navig']->lang;
		
				$modulesdesc = new Modulesdesc();
				$modulesdesc->charger($this->nom_plugin, $lang);

				return $modulesdesc->chapo;
		}
		
		function getDescription(){

			if($_SESSION['navig']->lang == "")
				$lang="1";
			else $lang=$_SESSION['navig']->lang;
			
			$modulesdesc = new Modulesdesc();
			$modulesdesc->charger($this->nom_plugin, $lang);
			
			return $modulesdesc->description;		
		}

		function ajout_desc($titre, $chapo, $description, $lang=1, $devise=""){
					
			$modulesdesc = new Modulesdesc();
			$res = $modulesdesc->verif($this->nom_plugin, $lang);
			
			$modulesdesc->plugin = $this->nom_plugin;
			$modulesdesc->titre = $titre;
			$modulesdesc->chapo = $chapo;
			$modulesdesc->description = $description;
			$modulesdesc->lang = $lang;
			$modulesdesc->devise = $devise;
			
			if($res)
				$modulesdesc->maj();
			else $modulesdesc->add();
			
			
		}
		
		function demarrage(){
			
			
		}

		function inclusion(){
			
			
		}
		
		/* Chargé avant le  fond */
		function pre(){
			
			
		}
		
		function action(){
			
			
		}
		
		function boucle($texte, $args){
			
		}		

		function post(){
			
			
		}
				
		function statut($commande){
			
		}
		
		function confirmation($commande){
			
		}
		
		function modprod(\Produit $produit){
			
		}

                function modrub(\Rubrique $rubrique){
			
		}

                function moddos(\Dossier $dossier){
			
		}

                function modcont(\Contenu $contenu){
			
		}
               
		function apresclient($client){

		}

		function aprescommande($commande){

		}

		
	}

?>


init : méthode appelée à l'activation du plugin. Elle peut permettre de créer des tables par exemple.

destroy : méthode appelée à la désactivation d'un plugin. Utile pour vider le cache, supprimer des tables ...

getTitre : renvoie le titre du plugin

getChapo : renvoie le chapo du plugin

getDescription : renvoie la description du plugin

ajout_desc : permet de définir titre, chapo, description du plugin


Certaines méthodes des plugins seront appelées à chaque chargement de page suivant l'ordre suivant :

1) méthode demarrage() des plugins

2) action thelia

3) méthode pre() des plugins

4) ouverture template par thelia

5) méthode inclusion() des plugins

6) inclusion thelia

7) méthode action() des plugins

8) analyse thelia (parse + boucle) + méthode boucle() des plugins

9) filtres thelia

10) méthode post() des plugins

La méthode statut() sera appelée lors du changement du statut d'une commande (via interface admin).

La méthode modprod() sera appelée lors de la modification d'un produit (via interface d'admin)

La méthode confirmation() sera appelée lors d'une confirmation de commande par la banque distante.

La méthode apresclient() sera appelée lors de la création d'un client, juste après sa création et le renvoi sur la page nouveau.php.

La méthode aprescommande() sera appelée lors de la création d'une commande juste avant l'appel des plugins de paiement.

Il est parfois nécessaire de pouvoir inclure du code avant le démarrage de la session pour être capable de stocker de nouveaux objets en session par exemple. Si vous placez un fichier inclure_session.php dans le répertoire de votre plugin, il sera inclue avant le démarrage de la session.

Ex_plugin_classique