Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    riconoscere {VALORE} dentro un template

    ciao a tutti,
    Io utilizzo per un mio sito una semplice funzione per leggere le variabili all'interno di un template e poter quindi visualizzare i valori senza dover passare per un echo...

    esempio di codice:

    $testolink

    in questo caso i valori vengono regolarmente sostituiti dal contenuto delle variabili ed inviate al browser.


    quello che adesso vorrei fare è semplicemente poter inserire all'interno dei template i valori di alcune costanti che vorrei che fossero interpretate da php e che venissero sostituite dal rispettivo valore.

    esempio:
    {TESTOLINK} o anche:
    {$TESTOLINK} per evitare che magari l'uso delle parentesi possa essere impedito nel resto del template/sito.

    spero di essere stato chiaro.

    La funzione che uso è questa vecchia funzione sviluppata da gm ed utilizzata da saibal nel suo saibal news.

    Codice PHP:
    # funzioni per leggere i template
    function gettemp($template) {
        return 
    str_replace("\"","\\\\\"",implode("",file($template))); # occhio qui gli slash sono tre!! 
    # ne ho messi 5 per farne visualizzare 3 correttamente
    }

    function 
    printtemp($template) {
        echo 
    $template;

    che richiamo poi con
    Codice PHP:
    eval("printtemp(\"".gettemp("$tempdir/head.tpl.php")."\");"); 
    come posso modificarla?
    Ciao!

  2. #2
    Non puoi. Utilizza delle variabili o riscrivi il codice del template utilizzando echo/print etc.

  3. #3
    Sicuro?

    Non è possibile riconoscere in una pagina template una stringa composta da questa sequenza iniziale {$, un valore, e questa finale } ?

    E magari sostituire a questo valore il corrispondente valore da inserire?
    D'altronde le variabili le interpreta correttamente.

    Come fanno i template engine, phpbb ecc...
    Ciao!

  4. #4
    Dai un occhio a questo sfruttatissimo e vecchio
    modo.


    Il metodo che usi tu è ancora + vecchio
    implode("",file($template)
    c'è file_get_contents


    questo accenno mi sembra un attimo
    + performante e molto + pulito

    Codice PHP:
    class Template{
    function 
    render(/* $file, $model = Array() */) {
        if (!
    is_string(func_get_arg(0))) {
          throw new 
    Exception("Wrong argument type. Expected string as first parameter");
        }
        if (
    func_num_args() > 1) {
          
    extract(func_get_arg(1));
        }
        
    $__template_filename__ func_get_arg(0);

        if (!
    is_file($__template_filename__)) {
          throw new 
    Exception("Failed opening '".func_get_arg(0)."' for inclusion. (include_path=".ini_get('include_path').")");
        }
        
    ob_start();
        
          include(
    $__template_filename__);
          return 
    ob_get_clean();
       
      }
    }
    $var_array = array("pippo" => "blue");
    $t= new Template();
    echo 
    $t->render('templateTpl.php',$var_array); 
    il template

    Codice PHP:

    <?php echo $pippo;?></p>
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    adesso vorrei fare è semplicemente poter inserire all'interno dei template i valori di alcune costanti
    Non puoi.
    Non è possibile riconoscere in una pagina template una stringa composta da questa sequenza iniziale {$, un valore, e questa finale } ?
    Questa è un'altra richiesta, differente dalla precedente.

    E' sufficiente utilizzare le funzioni di manipolazione delle stringhe o le PCRE. Solamente con eval() NON è possibile. DEVI effettuare un qualche tipo di parsing prima, e comunque è molto più semplice utilizzare delle variabili invece di costanti. Se proprio non ne puoi fare a meno, utilizza get_defined_constants()/constant() e crea in automatico delle variabili con lo stesso nome delle costanti.

  6. #6
    @ filippo: infatti, io pensavo di mettere una preg_replace dentro la funzione
    Codice PHP:
    function gettemp($template) { 
        return 
    str_replace("\"","\\\\\"",implode("",file($template))); # occhio qui gli slash sono tre!! 
    # ne ho messi 5 per farne visualizzare 3 correttamente 
    # IO METTEREI QUI IL MIO PREG _REPLACE

    Ma onestamente non saprei come utilizzarla.

    @ whisher: Io vorrei evitare di dover mettere i tag PHP nel template. ma solo le variabili e le costanti con le graffe, per facilitare il lavoro ai webdesigner...
    Ciao!

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.