Résultats de 1 à 7 sur 7

Sujet : Templates en PHP (modèle)

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    1 695

    Templates en PHP (modèle)

    Bonjour à tous !

    J\'aimerai savoir si certain d\'entre vous utilise le système des templates en PHP, si oui, lequel ? J\'en recherche un plutôt simple (pas bourrer de truc inutile) mais uqi soit rapide, je suis à bout j\'en sens que je vais finir par le faire moi-même.

    Merci d\'avance, Bloodshed

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    329
    Je te conseille cette adresse : http://codewalkers.com/tutorials/58/1.html

    Personnellement j\'ai déjà utilisé SEAGULL avec PEAR qd j\'ai participé au développement d\'un site communautaire et j\'ai trouvé le système particulièrement puissant et efficace

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    1 695
    Merci je vais allez voir ton lien (Cool ton site)

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    1 695
    Bon ben j\'ai commencé mon petit système de templates, je l\'ai appélé templX (prononcé tenplehixe),

    J\'ai commencé par le truc de base, remplacé les balise {VALUE} dans un fichier, je vais attaqué cet aprem les blocs,

    Voici le début de mon script avec un exemple :

    La classe templx.class.php :
    ---------------------------------
    Code:
    <?php
    
     /******************************************/
     /*                Xosc
     /*             ----------
     /* templX : templx.class.php
     /* Description : Moteur de Templates
     /* Date : 05/02/2004
     /* Auteur : Mickaël Menu [Bloodshed]
     /* Contact : support@xosc.org
     /* Site : Xosc [http://www.xosc.org/]
     /* Dernière Modification : 05/02/2004
     /* Version : Version 1b1 [V1.0 bêta 1]
     /* Copyright : (c) 2004 Xosc
     /******************************************/
     
     /***************************************************************************/
     /*
     /*   This program is free software; you can redistribute it and/or modify
     /*   it under the terms of the GNU General Public License as published by
     /*   the Free Software Foundation; either version 2 of the License.
     /*
     /***************************************************************************/
    
    // Définition de la classe templX
    class templX
      {
        // $template : Chemin vers le modèle HTML
        var $template;
        // $fields : Tableau des valeurs à remplacé
        var $fields = array();
        // $page : Modèle HTML
        var $page;
        
        // Définition de la fonction templX() : Chargement du modèle
        function templX ($template)
          {
            // Définition de la variable $template
            $this->template = $template;
            
            // Ouverture du modèle
            $tpl = fopen ($template, \'r\');
            // Définition de la variable $page
            $this->page = fread ($tpl, filesize ($template));
            // Fermeture du modèle
            fclose ($tpl);
          }
          
        // Définition de la fonction assign() : Remplacement des valeurs
        function assign ($field, $value)
          {
            // Ajout d\'une ligne dans le tableau $fields
            $this->fields[\"$field\"] = $value;
          }
          
        // Définition de la fonction parse() : Mise à jour du modèle
        function parse ()
          {
            // Parcours du tableau $fields[]
            foreach ($this->fields as $key => $value)
              {
                // Remplacement des valeurs dans le modèle
                $value = ereg_replace (\"{\".$key.\"}\", $value,$this->page);
                $this->page = $value;
              }
          }
          
        // Définition de la fonction end() : Affichage du modèle
        function end ()
          {
            // Affichage du modèle
            echo $this->page;
          }
    
      }
    
    ?>
    Le gabarit (template) de test template.tplx :
    ---------------------------------
    Code:
    <html>
    <head>
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
    <title>{TITRE}</title>
    </head>
    <body>
    {TEST}<br>
    {BODY}
    </body>
    </html>
    Le fichier d\'exemple d\'utilisation index.php :
    ---------------------------------
    Code:
    <?php
    
     /******************************************/
     /*                Xosc
     /*             ----------
     /* templX : index.php
     /* Description : Exemple d\'utilisation de la classe
     /* Date : 05/02/2004
     /* Auteur : Mickaël Menu [Bloodshed]
     /* Contact : support@xosc.org
     /* Site : Xosc [http://www.xosc.org/]
     /* Dernière Modification : 05/02/2004
     /* Version : Version 1b1 [V1.0 bêta 1]
     /* Copyright : (c) 2004 Xosc
     /******************************************/
    
     /***************************************************************************/
     /*
     /*   This program is free software; you can redistribute it and/or modify
     /*   it under the terms of the GNU General Public License as published by
     /*   the Free Software Foundation; either version 2 of the License.
     /*
     /***************************************************************************/
    
    // Inclusion de la classe templX()
    require_once (\"templx.class.php\");
    
    // Création d\'un nouvel objet de la classe
    $templX = new templX (\"template.tplx\");
    
    // Remplacement des valeurs
    $templX->assign (\"TEST\", \"Test\");
    $templX->assign (\"TITRE\", \"templX 1b1 : le système de template de Xosc\");
    $templX->assign (\"BODY\", \"Je progresse peu à peu vers le système de template complet !\");
    
    // Remplacement du modèle
    $templX->parse ();
    
    // Affichage du modèle
    $templX->end ();
    
    ?>



    Amélioréation ?

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    28
    La PHPlib est tres bien et tres simple. Elle apparteint au package PEAR. http://pear.net et se trouve dans les distrib recente de PHP. Sinon, SMARTY, est un peu plus complexe mais super puissant. Il te donnera un gain de temps considerable.

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    1 695
    Oui je les connait (jen connait beaucoup) mais c que jaimerai surtout créer ma propre classe (c un peu dure) et donc ben voila !

    (jaime pas faire de la pub dans mes appli c pour sa que jessai de programmer pratiquement la totalité )

  7. #7
    Membre MP
    Inscrit
    août 2013
    Messages
    1 695
    ca y est j\'ai presque finis ma classe, elle gère les variables, les blocs, l\'invisibilité et le multi-parsing

    voic la derniere version beta :

    Code:
    <?php
    
     /******************************************/
     /*                Xosc
     /*             ----------
     /* templX : templx.class.php
     /* Description : Moteur de Templates
     /* Date : 16/02/2004
     /* Auteur : Mickaël Menu [Bloodshed]
     /* Contact : support@xosc.org
     /* Site : Xosc [http://www.xosc.org/]
     /* Dernière Modification : 17/02/2004
     /* Version : Version 1b3 [V1.0 bêta 3]
     /* Copyright : (c) 2004 Xosc
     /******************************************/
     
     /***************************************************************************/
     /*
     /*   This program is free software; you can redistribute it and/or modify
     /*   it under the terms of the GNU General Public License as published by
     /*   the Free Software Foundation; either version 2 of the License.
     /*
     /***************************************************************************/
    
    class templX
      {
        /* Déclaration des attributs */
        
        // $box : Contient le contenu des boîtes sans modifications
        var $box = array();
        // $content : Contient le contenu des boîtes avec modifications
        var $content = array();
        // $field : Contient les valeurs des champs
        var $field = array();
        // $buffer : Tampon utilisé pour le \"multi-parsage\" d\'une boîte
        var $buffer = array();
        // $main_box : Nom de la boîte principal
        var $main_box;
        
    
        /* Déclaration des méthodes */
        
        // template() : Constructeur, charge le modèle principal
        function templX ($box_name, $file)
          {
            // Chargement du modèle
            $template = @fopen ($file, \'r\');
            $tpl = @fread ($template, @filesize ($file));
            @fclose ($template);
            
            // Création de la boîte
            $this->box[$box_name] = $tpl;
            $this->content[$box_name] = $tpl;
            $this->field[$box_name] = array ();
            $this->main_box = $box_name;
          }
          
        // assign() : Initialise les champs des boîtes
        function assign ($field, $value, $box)
          {
            // Initialisation du champ
            $this->field[$box][$field] = $value;
          }
          
        // display() : Affichage du résultat
        function display ($box)
          {
            // Affichage de la boîte
            echo $this->content[$box];
          }
          
        // box() : Création d\'une nouvelle boîte
        function box ($box_name, $box)
          {
            // Extraction de la boîte
            preg_match(\'`<\\!-- BEGIN (\'.$box_name.\') -->(.+?)<\\!-- END \\1 -->`si\', $this->box[$box] , $box_content);
            
            // Création d\'une nouvelle boîte
            $this->box[$box_name] = $box_content[0];
            $this->content[$box_name] = $box_content[2];
            $this->field[$box_name] = array ();
            $this->buffer[$box_name] = \'\';
          }
          
        // stamp() : Création d\'un motif d\'une boîte pour son tampon
        function stamp ($box)
          {
            // Parcours du tableau des champs de la boîte
            foreach ($this->field[$box] as $key => $value)
              {
                // Remplacement des valeurs dans le tampon
                $result = eregi_replace (\"{\".$key.\"}\", $value, $this->content[$box]);
                $this->buffer[$box] .= $result;
              }
          }
    
        // parse() : Remplacement des champs et des boîtes
        function parse ($box_name, $box = \'\', $hidden = \'\')
          {
            if ($box_name == $this->main_box)
              {
                foreach ($this->field[$box_name] as $key => $value)
                  {
                    // Remplacement des valeurs dans la boîte
                    $result = eregi_replace (\"{\".$key.\"}\", $value, $this->content[$box_name]);
                    $this->content[$box_name] = $result;
                  }
              }
              
            else {
                if ($hidden == \"hidden\" || $hidden == \"HIDDEN\")
                  {
                    // Remplacement de la boîte
                    $result = eregi_replace ($this->box[$box_name], \"\", $this->content[$box]);
                    $this->content[$box] = $result;
                  }
    
                else {
                    // Vérification de l\'existance d\'un tampon
                    if ($this->buffer[$box_name] == \"\")
                      {
                        foreach ($this->field[$box_name] as $key => $value)
                          {
                            // Remplacement des valeurs dans la boîte
                            $result = eregi_replace (\"{\".$key.\"}\", $value, $this->content[$box_name]);
                            $this->content[$box_name] = $result;
                          }
                      }
                  
                    else {
                        $this->content[$box_name] = $this->buffer[$box_name];
                      }
    
                    // Remplacement de la boîte
                    $result = eregi_replace ($this->box[$box_name], $this->content[$box_name], $this->content[$box]);
                    $this->content[$box] = $result;
                  }
              }
          }
      }
    ?>
    Edit le 12-04-2005 : cf. le projet templX sur MP

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé
Please disable Adblock!