Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: come usare bTemplate

  1. #1

    come usare bTemplate

    Ho visto che su questo forum si elogia molto il template engine in oggetto di Massari. Vorrei utilizzarlo anch'io in un piccolo progetto web. Non sono molto pratico di OOP, diciamo che ho solo creato cosette in php in modo tradizionale. Ho cercato di leggere la documentazione, ma ci ho capito poco. Dove posso trovare una tutorial possibilmente in italiano e qualche esempio (completo) da provare subito. Magari smanettando su qualcosa di pronto posso capire praticamente come si implementa la classe e come si utilizza. Io ho già un sitetto con un template artigianale fatto di include(), vorrei migliorarlo e possibilmente cambiare il template senza mettere mano al codice già scritto. Grazie
    salvatore schirone

  2. #2
    Non c'è proprio nessuno che mi può aiutare, magari dandomi un dritta per iniziare ad usare bTemplate? grazie
    salvatore schirone

  3. #3
    Utilizzare bTemplate è piuttosto semplice, e gli esempi della documentazione sono abbastanza esplicativi. Che cosa non riesci a fare?

  4. #4
    Grazie per la risposta.
    Allora, io ho questo file index.php:
    Codice PHP:
    <?php
    include "config.php";
    //funzione per caricare il contenuto centrale della pagina
    function pagina() {
      
    $p="main";              //pagina di default per i contenuti centrali

    if(isset($_GET['page'])){      //pagina passata via parametro

        
    $p=$_GET['page'];

        if(
    $p!=basename($p) || !preg_match("/^[A-Za-z0-9\-_]+$/",$p) || $p=="index" || !file_exists($p.".php"))

            
    $p="error";     //pagina di errore

        
    }

    // se invece passto path:
    if(isset($_GET['path'])){
    $path=$_GET['path'];
    include(
    $path."/index.php");
    }
    //altrimenti carico la pagina principale
    include($p.".php");
    }
    include 
    "template/template.php";
    ?>
    che richiama questo template tradizionale fatto con include():

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it">
    <head>
    <title><?php echo $titolo; ?></title>
    <link rel="stylesheet" type="text/css" href="template/css/style.css" />

    </head>

    <body>
    <div id="container">
    <div id="header">
    <div id="testata"> </div>
    </div>
    <div id="top">

    <?php include("menu.php"); ?>

    </div>
    <div id="main">
    <div id="leftbar">
    <?php include("left.php"); ?>
    </div>
    <div id="content">
    <?php //include("main.php");
    pagina();
    ?>
    </div>
    <div id="footer">note di copyright</div>
    </div>
    </div>
    </body>
    </html>

    Come faccio ad implemtare bTemplate? cosa devo modificare, lasciando inalterata
    la struttura del mio sito? grazie
    salvatore schirone

  5. #5
    Ti crei un file nel quale inserisci i tag di bTemplate al posto della chiamata a pagina e degli include.

    Poi utilizzi il metodo set() per impostare il valore dei tag con il contenuto che intendi metterci (es. tramite file_get_contents(), etc.).

  6. #6
    scusami ma sono un po' tufagno ... mi faresti un esempio, relativo alla pagina da includere nel corpo principale? grazie.
    salvatore schirone

  7. #7
    ok, ho capito in linea di massima, ma se devo includere un file e non un valore di variabile? E se questo file ha dell'php? la cosa si complica e la documentazione, che sto pian piano leggendo, non è molto chiara su questo.
    Comunque faccio qualche prova...
    salvatore schirone

  8. #8
    Ok, ho fatto qusto e funziona ma non so se è corretto metologicamente.
    il template l'ho cambiato così:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it">
    <head>
    <title><tag:title /></title>
    <link rel="stylesheet" type="text/css" href="template/css/style.css" />

    </head>

    <body>
    <div id="container">
    <div id="header">
    <div id="testata"> </div>
    </div>
    <div id="top">


    <tag:menuTop />
    </div>
    <div id="main">
    <div id="leftbar">
    <tag:menu />
    </div>
    <div id="content">
    <tag:content />
    </div>
    <div id="footer">note di copyright</div>
    </div>
    </div>
    </body>
    </html>

    mentre l'index,php cosi:
    Codice PHP:
    <?php
    include_once('bTemplate.php');
    $tpl = new bTemplate();

    $title 'flc';
    $tpl->set('title'$title);


    $tpl->set('menuTop'file_get_contents('menu.php'));
    $tpl->set('menu'file_get_contents('left.php'));
    $tpl->set('content'$tpl->fetch('main.php'));

    echo 
    $tpl->fetch('template/template.tpl');
    ?>
    salvatore schirone

  9. #9
    Nessuno mi risponde? Come dicevo lo script postato attualmente funziona. Ma ho dei dubbi sul modo corretto di importare dei file php.

    Voglio segnalare questa estensione della classe bTemplate che dovrebbe permettere l'inclusione di file php con il tag <include:filename.php />
    ne sapete qualcosa?
    ecco l'indirizzo:
    http://kb.creativepark.it/kb/entry/15/
    Per completezza riporto la classe:
    Codice PHP:
    <?php 
     
    class Template extends bTemplate {
     
        var 
    $folder '';
        var 
    $includes_limit 25;
     
        function 
    Template($base_path NULL$reset_vars TRUE) {
            
    $this->__construct($base_path$reset_vars);
        }
     
        function 
    __construct($base_path NULL$reset_vars TRUE)  {
            
    parent::bTemplate($base_path$reset_vars);
            
    $this->folder dirname(__FILE__) . '/templates/';
        }
     
        function 
    parse_includes($contents) {
     
            
    $tag $this->ldelim 'include:';
            
    $tag_length strlen($tag);
            
    $rdelimin_length strlen($this->rdelim);
     
            
    $bpos 0;
            
    $limit $this->includes_limit;
     
            while (
    $limit 0) {
                
    $bpos strpos($contents$tag$bpos);
     
                if (
    $bpos === false) { break; }
     
                
    $epos strpos($contents$this->rdelim$bpos);
     
                if (
    $epos === false) { break; }
     
                
    $filename trim(substr($contents$bpos $tag_length$epos $bpos $tag_length));
     
                
    $entire_statement substr($contents$bpos$epos $bpos $rdelimin_length);            
     
                
    $contents str_replace($entire_statementfile_get_contents($this->folder $filename), $contents);
     
                
    $limit--;
            }
     
            return 
    $contents;
     
        }
     
        function 
    parse($contents) {
     
            
    $contents $this->parse_includes($contents);
     
            return 
    parent::parse($contents);
     
        }
     
    }
     
    ?>
    http://kb.creativepark.it/kb/entry/15/
    salvatore schirone

  10. #10
    sempre cercando di capire bTemplate, ho trovato in un altro post che l'autore, Massari, avrebbe cambiato idea sui template engine e si rimanda qui http://massassi.com/php/articles/template_engines/

    Non ho capito se è un aggiornamento della classe o un modo diverso di implementarla. Inoltre vedo che il metodo costruttore è in vecchi stile php4, l'ultima versione della calsse è del 2003, quindi è lecito avere dei dubbi.

    Chi mi aiuta a fare chiarezza?
    salvatore schirone

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.