Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
logo
Sommaire > Templates > phpBB2
        Qu'est-ce que phpBB2 ?
        Comment installer le moteur de templates de phpBB2 ?
        Comment instancier la classe de template de phpBB2 ?
        Quelle est la syntaxe d'un gabarit phpBB2 ?
        Comment charger un gabarit avec le moteur de phpBB2 ?
        Comment envoyer une variable au gabarit avec le moteur de phpBB2 ?
        Comment répéter un bloc du gabarit avec le moteur de phpBB2 ?
        Comment placer un bloc dans un autre (imbrication) avec le moteur de templates de phpB2 ?



Qu'est-ce que phpBB2 ?
auteur : Guillaume Rossolini
en phpBB2 est avant tout un script de forum prêt à installer sur tout type de serveur Apache / PHP / MySQL, mais c'est aussi une classe de gestion de templates fondée sur la phplib.

Il y a de cela plusieurs années, le phpBB Group a effectué un très gros travail autour du template de la PHPLib afin de le rendre plus performant. C'est la version phpBB2 (dont le script de forum sont actuellement en bêta) que je vais utiliser ici, plutôt que la version PHPLib qui manque de maturité. L'extension de fichier est ".tpl".

lien : en phpBB2
lien : fr Le système de templates de phpBB, par Genova
lien : fr Comparatif : Découverte des principaux moteurs de template en PHP, par Guillaume Rossolini

Comment installer le moteur de templates de phpBB2 ?
auteur : Guillaume Rossolini
Télécharger les scripts du forum complet sur en http://www.phpbb.com/.

Extraire le script offline/template.php de l'archive de la dernière version de phpBB2, puis le déplacer dans un répertoire accessible par les utilisateurs du serveur (mais situé hors de la racine du serveur Web). La classe utilise une fonction globale de phpBB, il faut donc s'en défaire :
Remplacez :
phpbb_realpath
Par :

Comment instancier la classe de template de phpBB2 ?
auteur : Guillaume Rossolini
$template = new Template('/path/to/templates/folder');

Quelle est la syntaxe d'un gabarit phpBB2 ?
auteur : Guillaume Rossolini
La syntaxe des variables est similaire à celle préconisée par PEAR, ici les variables {TITLE}, {META_*} et {CSS_*} :
<head>
    <title>{TITLE}</title>
    <meta http-equiv="Content-Type" content="text/html; charset={CHARSET}" />

    <meta name="generator" content="{META_GENERATOR}" />
    <meta name="description" content="{META_DESCRIPTION}" />
    <meta name="keywords" content="{META_KEYWORDS}" />
    <meta name="MS.LOCALE" content="{META_MSLOCALE}" />

    <link rel="stylesheet" type="text/css" href="{CSS_MAINSTYLE}" />
    <link rel="stylesheet" type="text/css" media="print" href="{CSS_PRINTER}" />
    <link rel="stylesheet" type="text/css" media="screen" href="{CSS_RIDAN}" />
</head>

La syntaxe des blocs est fondée sur les commentaires HTML, ici le bloc "subject" et la variable {subject.TITLE} :
<!-- BEGIN subject -->
    <div class="bloc_cours">
        <div class="titre_cours">{subject.TITLE}</div>
    </div>
    <br />
    <br />
<!-- END subject -->

Comment charger un gabarit avec le moteur de phpBB2 ?
auteur : Guillaume Rossolini
Le moteur de templates de phpBB2 permet de charger plusieurs gabarits dans un seul objet Template, au moyen de ce que l'on appelle des "handles" :
// Chargement des gabarits
$template->set_filenames(array
(
'header' => 'header.tpl',
'body' => 'index.tpl',
'footer' => 'footer.tpl'
)
);

//
// Mettre ici l'envoi des données au gabarit
//

// Fin du script
$template->pparse('header');
$template->pparse('body');
$template->pparse('footer');

La méthode set_filenames() peut être appelée autant de fois que nécessaire tout au long du script. La méthode pparse() doit être appelée une fois pour chaque handle de gabarit, à la fin du script.


Comment envoyer une variable au gabarit avec le moteur de phpBB2 ?
auteur : Guillaume Rossolini
Script PHP :
$template->assign_vars(
    array
    (
        'CHARSET' => $header['charset'],

        'META_GENERATOR' => $meta['generator'],
        'META_DESCRIPTION' => $meta['description'],
        'META_KEYWORDS' => $meta['keywords'],
        'META_MSLOCALE' => $meta['mslocale'],

        'CSS_MAINSTYLE' => $css['mainstyle'],
        'CSS_PRINTER' => $css['printer'],
        'CSS_RIDAN' => $css['ridan'],

        'TITLE' => $header['title']
    )
);
Gabarit HTML :
<head>
    <title>{TITLE}</title>
    <meta http-equiv="Content-Type" content="text/html; charset={CHARSET}" />

    <meta name="generator" content="{META_GENERATOR}" />
    <meta name="description" content="{META_DESCRIPTION}" />
    <meta name="keywords" content="{META_KEYWORDS}" />
    <meta name="MS.LOCALE" content="{META_MSLOCALE}" />

    <link rel="stylesheet" type="text/css" href="{CSS_MAINSTYLE}" />
    <link rel="stylesheet" type="text/css" media="print" href="{CSS_PRINTER}" />
    <link rel="stylesheet" type="text/css" media="screen" href="{CSS_RIDAN}" />
</head>

Comment répéter un bloc du gabarit avec le moteur de phpBB2 ?
auteur : Guillaume Rossolini
Les blocs sont des portions du gabarit que l'on peut ignorer, afficher ou bien dupliquer comme on le souhaite. Par convention, les noms des blocs sont écrits en minuscules et les blocs conditionnels (affiché/caché) sont, par convention d'écriture, préfixés de "switch_".

L'affectation d'un bloc se fait au moyen de la méthode assign_block_vars() :
Script PHP :
foreach($subjects as $subject)
{
    $template->assign_block_vars
    (
        'subject', // le nom du bloc
        array('TITLE' => $subject['title']) // le contenu
    );
}
Gabarit HTML :
<!-- BEGIN subject -->
    <div class="bloc_cours">
        <div class="titre_cours">{subject.TITLE}</div>
    </div>
    <br />
    <br />
<!-- END subject -->

Comment placer un bloc dans un autre (imbrication) avec le moteur de templates de phpB2 ?
auteur : Guillaume Rossolini
Script PHP :
$sql = 'SELECT id, title
        FROM subject';
$result = mysql_query($sql) or die(mysql_error());
while($subject = mysql_fetch_assoc($result))
{
    $template->assign_block_vars
    (
        'subject',
        array('TITLE' => $subject['title'])
    );

    $sql = 'SELECT id, title
            FROM category
            WHERE subject_id = '.$subject['id'];
    $categories = mysql_query($sql) or die(mysql_error());
    while($category = mysql_fetch_assoc($categories))
    {
        $template->assign_block_vars
        (
            'subject.category',
            array('TITLE' => $category['title'])
        );

        $sql = 'SELECT id, uri, title, description
                FROM tutorial
                WHERE category_id = '.$category['id'];
        $tutorials = mysql_query($sql) or die(mysql_error());
        while($tutorial = mysql_fetch_assoc($tutorials))
        {
            $template->assign_block_vars
            (
                'subject.category.tutorial',
                array
                (
                    'URI' => $tutorial['uri'],
                    'TITLE' => $tutorial['title'],
                    'DESCRIPTION' => $tutorial['description']
                )
            );
        }
    }
}
Gabarit HTML :
<!-- BEGIN subject -->
    <div class="bloc_cours">
        <div class="titre_cours">{subject.TITLE}</div>
    <!-- BEGIN category -->
        <div class="categorie_cours">{subject.category.TITLE}</div>
        <div class="liste_cours">
            <ul>
        <!-- BEGIN tutorial -->
                <li>
                    <a href="{subject.category.tutorial.URI}"
                    >{subject.category.tutorial.TITLE}</a> :
                    {subject.category.tutorial.DESCRIPTION}
                </li>
        <!-- END tutorial -->
            </ul>
        </div>
        <hr />
    <!-- END category -->
    </div>
    <br />
    <br />
<!-- END subject -->


Consultez les autres F.A.Q.


Les sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2011  Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com