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

    Includere funzione php in template

    Salve,
    io in un mio sito includo i template in questo modo:

    Codice PHP:
    getTemplate("template.php"); 
    Tramite utilizzo di funzioni eval ecc. se ci sono variabili al loro interno, vengono interpretate da php.

    la funzione getTemplate è la seguente:

    Uso code perchè php cancella qualche slash.
    codice:
    function getTemplate($template)
    {
    	global $config;
    	global $user;
    
    	eval("printtemp(\"".gettemp("$config[path]/$config[templateDir]/$config[template]/$template")."\");");
    }
    
    
    function gettemp($template)
    {
    	global $config;
    	return str_replace("\"","\\\"",implode("",file($template)));
    }
    
    
    function printtemp($template)
    {
    	global $config;
    
    	$template = parse($template);
        echo $template;
    }
    
    
    function parse($template)
    {
    	global $config;
    	global $language;
    
    	foreach ($language as $var => $content) {
    		$template = str_replace('{' . $var . '}', $content, $template);
    	}
    	return $template;
    }
    a questo punto, pero se nel template volessi inserire qualche funzione php come potrei fare? suggerimenti?
    Per ovviare al momento applico la funzione prima di includere il template ed assegno il risultato ad una variabile da mettere nel template, ma non mi pare la soluzione migliore...


    :master:
    Ciao!

  2. #2
    perché non utilizzi un template engine già pronto e completo?

    ti consiglio SMARTY, è free e semplicissimo da usare
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  3. #3
    io invece ti sconsiglio smarty: perché usare un template engine SOPRA un template engine che è php per l'appunto?

    PHP => Hypertext Preprocessor => Preprocessore di Ipertesti ... perché riprodurre ciò che php già fa usando php? E' un po come il cane che si insegue la coda

    detto questo, 2 consigli per fmortara:
    - usare eval per poi fare str_replace, scusami se te lo dico, è un'operazione sproporzionatamente pesante ed inutile ... semplicemente carica il file con un file_get_contents e fai l'str_replace!
    - se ad eval passi direttamente il contenuto di un file_get_contents viene direttamente interpretato come fosse codice php

    molto più semplicemente, includi direttamente le pagine cosi puoi inserire tranquillamente i tag php e richiamare le funzioni

    considera che questo ti porta anche un enorme vantaggio: hai la possibilità di separare la bussiness logic dalla presentation logic

    PS
    smarty è ENORMEMENTE pesante, un pò come adodb per fare un'altro esempio: quando devono essere inclusi più di mezzo mega di codice il tempo l'esecuzione aumenta considerevolmente e le risorse utilizzate dal webserver pure!

  4. #4
    Originariamente inviato da daniele_dll
    io invece ti sconsiglio smarty: perché usare un template engine SOPRA un template engine che è php per l'appunto?
    Assolutamente d'accordo.

  5. #5
    Originariamente inviato da daniele_dll
    io invece ti sconsiglio smarty: perché usare un template engine SOPRA un template engine che è php per l'appunto?

    PHP => Hypertext Preprocessor => Preprocessore di Ipertesti ... perché riprodurre ciò che php già fa usando php? E' un po come il cane che si insegue la coda

    detto questo, 2 consigli per fmortara:
    - usare eval per poi fare str_replace, scusami se te lo dico, è un'operazione sproporzionatamente pesante ed inutile ... semplicemente carica il file con un file_get_contents e fai l'str_replace!
    - se ad eval passi direttamente il contenuto di un file_get_contents viene direttamente interpretato come fosse codice php

    molto più semplicemente, includi direttamente le pagine cosi puoi inserire tranquillamente i tag php e richiamare le funzioni

    considera che questo ti porta anche un enorme vantaggio: hai la possibilità di separare la bussiness logic dalla presentation logic

    PS
    smarty è ENORMEMENTE pesante, un pò come adodb per fare un'altro esempio: quando devono essere inclusi più di mezzo mega di codice il tempo l'esecuzione aumenta considerevolmente e le risorse utilizzate dal webserver pure!
    Ok, io se includo con la mia funzione la pagina ho il vantaggio di poter annegare una variabile php senza dover usare i tag <?php ?>. Ad esempio <div>$var</div> funziona!

    Ho aggiunto str_replace per poter usare i miei marcatori {MARCATORE} (si chiamano cosi?) per avere il sito multilingua.

    Potrei fare include e str_replace, ma dovrei usare i tag php, in questo caso potrei usare le funzioni nel file.

    Che consigliate?
    Ciao!

  6. #6
    @daniele_dll & k.b:
    Sulle vostre risposte ho creato un post qui

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.