begin process at 2012 05 27 19:25:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > MOTEUR DE TEMPLATE PHPBB3 SIMPLIFIÉ EN PHP5

MOTEUR DE TEMPLATE PHPBB3 SIMPLIFIÉ EN PHP5


 Information sur la source

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Class et Objet ( POO ) Classé sous :moteur, template, phpBB3, classe Niveau :Débutant Date de création :08/05/2009 Vu / téléchargé :7 266 / 728

Auteur : gagah1

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (25)
Ajouter un commentaire et/ou une note


 Description

Voici une classe simplifiée pour l'utilisation de moteur de template phpBB3. J'ai regroupé en une seule classe 'template.class.php' les 2 classes template.php et function_template.php de phpBB3. Durant l'instanciation de la classe, il faut preciser le repertoire où se trouve les fichiers templates et le repertoire où on met les fichiers compilés(cache), et voir la documentation de phpBB3. Voici le lien:
"http://area51.phpbb.com/docs/coding-guideli nes.html#templating".
Bonne prog.

Source

  • // dans le zip
  • include('includes/template.class.php');
// dans le zip
include('includes/template.class.php');


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip CLASSE QUI PERMET DE GENERER UN ARBRE

 Sources de la même categorie

Source avec Zip GÉNÉRATION AUTOMATIQUE DE FICHIER .CLASS.PHP EN FONCTION D'U... par ig3
CLASSE D'OBJET DE CRYPTAGE ET DÉCRYPTAGE DE CHAINES DE CARAC... par 8Tnerolf8
Source avec Zip MY.DEVIANTART API par inwebo
CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter

 Sources en rapport avec celle ci

CLASS MOTEUR DE TEMPLATE PHP5 par choy
Source avec Zip MOTEUR DE TEMPLATE par FaustXVI
Source avec Zip Source avec une capture GALERIE PHOTO DYNAMIQUE GÉRÉE PAR MOTEUR TEMPLATE par darknessneo
Source avec Zip [PHP5]CLASSE DE TEMPLATE PHP AVEC CACHE par hametsu21
Source avec Zip [ CLASSE ] GÉNÉRER LA STRUCTURE D'UNE PAGE WEB À L'AIDE D'UN... par BreakingCentral

Commentaires et avis

Commentaire de sophoan le 05/06/2009 21:10:27

il y a une erreur de code:

Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' template.class.php on line 23

Commentaire de gagah1 le 05/06/2009 21:24:56

Je ne vois pas d'erreur sur la ligne 23:
"private $_tpldata = array('.' => array(0 => array()));"
Aucune idée!

Commentaire de marco_12 le 14/07/2009 13:15:33 9/10

j'ai eu le meme message d'erreur, et visiblement, c'etait "private" qui ne passait pas en PHP < 5, mais nikel en version 5 :p

Commentaire de Zoulcalibur le 02/10/2009 18:40:53 8/10

Bonjour, merci pour le code il a l'air de très bien fonctionner.

Par contre il semblerait qu'un fichier index.html s'est glissé dans tous les dossiers, il ne sert à rien il me semble.

Merci

Commentaire de gagah1 le 03/10/2009 09:54:30

Le fichier index.html permet de securiser le contenu d'un dossier. Si un curieux veut acceder au dossier template (http://www.monsite.fr/template) et que le serveur ne trouve pas un fichier nommé index.html ou index.php ou index.asp etc... , le serveur envoie la liste de tous les fichiers qui se trouvent dans ce dossier.

Commentaire de Alencar le 17/01/2010 20:49:09

Sympa comme idée =). Depuis le temps que je la cherchais cette class.
J'ai essayer de faire la même chose avec la class bbcode. J'ai donc supprimer tous ce qui concernait les balise additionnel via sql, j'ai regrouper tous les fonction, changer quelque variables et tous marche pour les balise par défaut. Seulement comme je ne sais pas très bien comment fonctionne (ni a quoi sert) le "bitfield" je n'arrive pas a ajouter de nouvelles balise.

Quelqu'un aurais une idée?

Commentaire de stevensf le 02/03/2010 10:41:48

bonjour...

J'aimerai désactiver le système de cache... qq pourait-il me dire comment faire SVP

MErci par avance

Commentaire de Alencar le 02/03/2010 11:27:27

c'est peut être possible en modifiant le fonctionnement de la fonction "display" qui est dans la class, mais a mon avis il doit y avoir d'autre modification. Je ne voudrais pas dire de bêtise mais je crois que cette modification ne peut pas ce faire par une simple configuration.
En plus, si tu n'utilise pas de cache, cela va demander plus de ressource a ton serveur puisqu'il devra reconvertir le template en code PHP a chaque affichage de la page.

Commentaire de gagah1 le 03/03/2010 14:50:44

C'est deconseiller de désactiver le système cache, mais si tu veux, change la fonction sur la ligne 184 comme celle ci:
private function _tpl_load(&$handle)
{
  // If we don't have a file assigned to this handle, die.
  if (!isset($this->files[$handle]))
    trigger_error("template->_tpl_load(): No file specified for handle $handle", E_USER_ERROR);

  $this->_tpl_load_file($handle);
    return false;
}

Commentaire de aikinhdo le 11/06/2010 16:04:31

Bonjour,

J'ai voulu suivre le tuto de phpbb3 forum.
Dès le début, j'ai un soucis.
Je n'arrive pas à affecter de variable simple.

Dans la page d'accueil.html
J'ai rajouté cette ligne

<!-- BEGIN mon_bloc --> <b>Hello ! Mon nom est {NAME} et mon IP est : {IP}</b><br /> <!-- END mon_bloc -->

et dans la page index.php

$template->assign_vars(array(
'NAME' => 'Genova',
'IP' => '12',
));

// On va afficher 5 fois le bloc
for ($i = 0; $i < 5; $i++)
{
// Cette fonction va créer le bloc, a chaque passage elle empilera le bloc a la suite, c'est à dire que
// l'appeler 5 fois de suite va créer le bloc 5 fois
$template->assign_block_vars('mon_bloc', array());
}

Quand j'affiche ma page, c'est tout vide.

Est ce que quelqu'un peut me dire pourquoi les variables ne sont pas affectées?

merci

Commentaire de Zoulcalibur le 11/06/2010 21:07:26

Tu n'as mis que ce code PHP dans ton index.php?

Commentaire de aikinhdo le 12/06/2010 22:27:51

Non c'est le bout de code que j'ai rajouté en plus dans le fichier index.php.
En fait, j'essaie de comprendre le tuto de phpbb3 en m'appuyant sur le script que j'ai downloader ici.

Commentaire de stevensf le 13/06/2010 00:48:55

avec pas mal de retard, j'avais pas vu ta réponse 'gagah1'... Merci pour l'info :)

Commentaire de gagah1 le 13/06/2010 20:53:36

Dans fichier: accueil.html
<!-- BEGIN mon_bloc --> <b>Hello ! Mon nom est {mon_bloc.NAME} et mon IP est : {mon_bloc.IP}</b><br /> <!-- END mon_bloc -->

Dans fichier: index.php
var $template = new Template(Dossier où se trouve accueil.html, Dossier où on met les fichiers caches);

// On va afficher 5 fois le bloc
for ($i = 0; $i < 5; $i++)
{
$template->assign_block_vars('mon_bloc', array(
'NAME' => 'Genova',
'IP' => '12'));
}

$template->set_filenames(array('body' => 'accueil.html'));
$template->display('body');



Commentaire de aikinhdo le 14/06/2010 11:34:22

Bonjour,

Merci pour les réponses rapide.
Il y a du mieux.

Voici le fichier index.php

<?php
// page d'accueil

include('includes/template.class.php');
include('includes/functions.php');
include('includes/config.php');

// on precise le repertoire où se trouve les fichiers templates et le répértoire où on met les fichiers compilés (cache)
$template = new Template('template', 'cache');

// on precise la variable langage
$template->set_language_var($lang);

page_header('Ma page d\'accueil', 'Accueil', 'HOME');
page_footer();

// On va afficher 5 fois le bloc
for ($i = 0; $i < 5; $i++)
{
$template->assign_block_vars('mon_bloc', array(
'NAME' => 'Genova',
'IP' => '12'));
}

$template->set_filenames(array('body' => 'accueil.html'));
$template->display('body');

?>

Voici le fichier accueil.html
<!-- INCLUDE header.html -->

<!-- BEGIN mon_bloc --> <b>Hello ! Mon nom est {NAME} et mon IP est : {IP}</b><br /> <!-- END mon_bloc -->

<p>Voici la page d'accueil.</p>
<p>Bla bla bla bla bla .........</p>

<!-- INCLUDE footer.html -->

Par contre, si je mets :
var $template = new Template(Dossier où se trouve accueil.html, Dossier où on met les fichiers caches);

J'ai cette erreur :Parse error: syntax error, unexpected T_VAR in S:\Applications\PortableApps\mowes_portable\www\phpbb3\index.php  on line 9

Sinon, j'ai bien une boucle qui s'affiche.

Accueil
Hello ! Mon nom est et mon IP est :
Hello ! Mon nom est et mon IP est :
Hello ! Mon nom est et mon IP est :
Hello ! Mon nom est et mon IP est :
Hello ! Mon nom est et mon IP est :

Voici la page d'accueil.

Bla bla bla bla bla .........

Mais, les variables ne sont pas passés.

Je ne trouve pas ou cela peut venir. Une config PHP pas à jour?

Merci de ton aide

Commentaire de aikinhdo le 14/06/2010 15:55:55

Bonjour,

Je crois que j'ai trouvé.

Dans la page accueil.html, il faut "indexer" la variable.
Et mettre :
<!-- BEGIN mon_bloc -->
<b>Hello ! Mon nom est {mon_bloc.NAME} et mon IP est : {mon_bloc.IP}</b><br />
<!-- END mon_bloc -->

A la place de
<!-- BEGIN mon_bloc -->
<b>Hello ! Mon nom est {NAME} et mon IP est : {IP}</b><br />
<!-- END mon_bloc -->

Par contre, est ce que c'est normal. Je laisse les gens qui s'y connaissent y répondre.

Commentaire de gagah1 le 15/06/2010 10:31:01

Les variables dans un bloc doivent etre indexés sauf si c'est une variable language.
Pour les variables de language, tu rajoutes un prefixe 'L_' à chaque clé: exemple pour $lang['NAME'] tu mets {L_NAME}.
Par contre pour les dossiers:
var $template = new Template(Dossier où se trouve accueil.html, Dossier où on met les fichiers caches);
C'est le dossier par rapport à l'emplacement du fichier Template.

Commentaire de eriden42 le 10/07/2010 22:28:39

Ayant besoin de faire un menu dynamique

<!-- BEGIN main_menu-->
   <!-- IF main_menu.S_FIRST_ROW -->
      <ul>
   <!-- ENDIF -->
       <li><a href="{main_menu.HREF}">{main_menu.NAME}</a></li>
   <!-- IF main_menu.S_LAST_ROW -->
      </ul>
   <!-- ENDIF -->
<!-- END main_menu-->


j'avais une erreure, j'ai donc regarder ce que je pouvais faire et j'ai trouver cette solution. Certe il existe peut être plus optimise, mais ça marche ^^



Ligne 250 remplacer
// Assign S_FIRST_ROW
if (!$s_row_count)
$vararray['S_FIRST_ROW'] = true;

// Now the tricky part, we always assign S_LAST_ROW and remove the entry before
// This is much more clever than going through the complete template data on display (phew)
$vararray['S_LAST_ROW'] = true;
if ($s_row_count > 0)
unset($str[$blocks[$blockcount]][($s_row_count - 1)]['S_LAST_ROW']);


par // Assign S_FIRST_ROW
if (!$s_row_count)
$vararray['S_FIRST_ROW'] = true;
else
$vararray['S_FIRST_ROW'] = false;


// Now the tricky part, we always assign S_LAST_ROW and remove the entry before
// This is much more clever than going through the complete template data on display (phew)
$vararray['S_LAST_ROW'] = true;
if ($s_row_count > 0)
$str[$blocks[$blockcount]][($s_row_count - 1)]['S_LAST_ROW'] = false;

Commentaire de ElFefe le 27/07/2010 01:16:19

Bonjour,

Merci pour ce code, j'commence à comprendre le principe. Par contre je ne sais pas comment rajouter des langues je n'arrive pas à comprendre comment appeler les fichiers langue.

Si quelqu'un pourrait m'expliquer, ça serai super sympa...

Merci.

Commentaire de Zoulcalibur le 01/08/2010 12:36:52

Fichier langue de quoi ?

Commentaire de ElFefe le 02/08/2010 10:16:48

Je m'explique...

Si je créer un dossier lang et que dedans je mets mes ficher fr.php et en.php, comment je dois procéder pour le code php (pour faire appel à ces fichier pour qu'il remplace le {L_WELCOME}).

je ne comprends pas vraiment la fonction lang dans le moteur de template et comment écrire la page php pour qu'il aille chercher les infos !

Je vous remercie par avance.

Commentaire de gagah1 le 03/08/2010 11:13:17

Dans fr.php:
$lang = array();
$lang['WELCOME'] = 'Bienvenue';

Dans en.php:
$lang = array();
$lang['WELCOME'] = 'Welcome';

Dans le fichier template:(exemple)
<p>{L_WELCOME}</p>

Dans le fichier principal:
// inclure le fichier langue (fr.php ou en.php selon la langue), à toi de gerer ça.
include('fr.php');
$template = new Template('dossier TEMPLATE', 'dossier CACHE', $lang);
$template->set_filenames(array('body' => 'fichier template'));
$template->display('body');

Commentaire de ElFefe le 06/09/2010 15:56:31

Désolé, j'avais oublié de répondre... merci, j'ai pu faire le fichier pour la sélection de langues et le remplacement des variables {L_VAR} dans les templates...
Par contre j'essaye depuis un moment de faire un menu multilingue dynamique(bdd) et en dur mais je n'arrive pas à faire la modification des langues...

mon code langues:

function set_lang()
{

  global $template;
  
  // on precise la variable langage
  $template->set_language_var($lang);

  $lang = array('en','fr');
  
  if (!empty($_GET['lang']) && (in_array($_GET['lang'], $lang)) ) {
$expire = 365*24*3600;
$lang = $_GET['lang'];
setcookie('lang', $lang, time() + $expire, null, null, false, true);
  }
  elseif (!empty($_COOKIE['lang'])  && (in_array($_COOKIE['lang'], $lang))) {
$lang = $_COOKIE['lang'];
  }
  else {
$lang = "fr";
  }
  include('lang/'.$lang.'.php');
}

mon code menu:

//Menu supérieur
$menu = array(
'L_HOME'       => 'index.php',
'L_PAGE1'   => 'page1.php',
'L_PAGE2'     => 'page2.php',
'L_PAGE3' => 'page3.php',
'L_PAGE4'   => 'page4.php',
'L_PAGE5'   => 'page5.php'
);

//Envoie des variables au gabarit
foreach($menu as $key=>$value){
        $template->assign_block_vars('nav', array(
            'URL'    => $value,
            'ITEM'   => $key));
    }

dans ma page il apparait (L_HOME, L_PAGE1, etc...), je vois pas comment faire...

Merci

Commentaire de xfifixdu42 le 30/01/2011 11:26:09

Bonjour,
J'ai testé avec une simple assignation mais avec un bloc ça ne marche pas.
j'ai testé avec des truc simple mais rien.
Est ce qui faut faire un truc en plus au niveau configuration pour utilisé le assign_block_vars??

merci d'avance

Commentaire de xfifixdu42 le 30/01/2011 12:23:29

C'est bon j'ai trouver mon erreur , faut juste mettre en majuscule les champs ^^

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

template.inc [ par joedalton ] bonjourVoila, je possede un fichier template.inc qui me permet de définir ma classe template, mais le probleme c'est que ce fichier est valable pour l Utiliser une classe template et une autre en meme temps... [ par big_mama ] Bonjour a tous.Mon probleme : Je suis entrain de me faire un pti site, pour cela j'utilise deux classe.La premiere gere les template et la seconde le Qui est le moteur de template de joomla ? [ par wassimbik ] Bonjour,à tousQui est le moteur de template de joomla ?Pouvez vous me donner le code source du moteur de template de joomla  et m'aider à comprendre c Quel framworks ? Quel moteur de template ? [ par chatis ] Bonjour, Je développe un site internet de réservation de court de tennis par internet et ma version 1 est terminée. Actuellement sur le site j'ai 150 php5 et moteur de template "smarty" [ par smahaneAAI ] Bonjour tout le monde! J'ai eu un projet de la création d'un site web concernant les appelles d'offre, ce projet doit être réalisé en langage php5 et Probleme script moteur de recherche [ par McGyver59 ] Bonjour Sur le web j'ai trouvé un moteur de recherche interne pour mon site il fonctionne trés bien mais j'ai un soucis avec. Meme si je ne met rien Développement web [ par alouane2010 ] svp , j'ai une application de gestion de controle, je veux créer une courbe pour le cout minute processus, ça bien marché, j'ai utilsé DhtmlX chart, m Moteur recherche SQL php [ par fregeal ] Bonjour Je cherche un moyen d'avoir un champs de recherche sql qui affiche les resultats sous forme d'un tableau mais tous les scritps que j'ai pus t classe de connection PDO : tester si une base existe [ par 555clR ] Bonsoir, J'essaie désespérément de tester si une base de données existe... mais je ne vois pas comment faire pour me servir des erreurs 'catchées'. J' modification template [ par hasony ] bonjour j'ai un problème lors d' insertion du Template pour mon site l'animation flash n'est pas bien fonctionner; au début tout est bien mais lors de


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales