Neoscript e theCoreWS...
sembravate due vecchietti al parco:
"cheee?"
"cosa hai detto?"
"ho detto cheeee che hai detto primaaa?"
"prima cosa???"
:grin: OLD :grin:
Insomma se volete capirvi tra di voi, sia chi cerca di spiegare sia chi deve risolvere, consiglio di scrivere post un pochino più esaurienti invece che andare avanti di una riga a botta ("no dico.." "no dico table.." :grin: )
Veniamo al quesito:
Originalmente inviato da
neoscript
no dico... ho <html><body>{testo}</body></html>... come faccio a sostituire {testo} con 50 righe di codice che genero con php?
Molto semplice teoricamente (anche se sinceramente non ho ancora provato in pratica, ammetto, ma in teoria mi suona bene):
quando si lavora SENZA template siamo abituati a scrivere direttamente in output (nel documento da spedire al client), dunque appena abbiamo qualcosa facciamo subito echo o print.
Se invece vogliamo usare i template dobbiamo accumulare tutto il "prodotto" (html finale da outputtare) in una stringa, il cosiddetto "buffer".
Esempio pratico:
senza template:
Codice PHP:
echo "<div class=\"ciccio\">"; //apri cornice
echo "tutto il content del documento";
echo "...";
echo "</div>"; //chiusa cornice
con template:
crei un file template di nome "file.ext" che contiene per es:
Codice:
<div class="ciccio">
[taginventato]
</div>
poi nel php che usa il template:
Codice PHP:
//creazione del contenuto
$buffer = "content del documento";
$buffer .= "altro content..."; //nota bene il .= per accumulare
$buffer .= "altro content sempre in append con .= ";
//apre template
$file = fopen("file.ext", 'rb');
$tpl = fread($file, filesize("file.ext"));
fclose($file);
//sostituisce speudo-tag (o placeholder)
str_replace('[taginventato]', $buffer, $tpl);
echo $tpl; //scrive finalmente in output template+contenuto
Dunque in questo caso il template è solo una "cornice" DIV ma può benissimo essere tutto il codice esterno di un html, poi magari gran parte del body invece la aggiungi a parte, come voleva neoscript mi pare di capire.
Oh dovrebbe fungere, ho utilizzato alcuni pezzi già detti qui nel thread per capirci. Può darsi che ci sono funzioni più eleganti (o apposite) per aggiungere man mano contenuto ad un buffer (come in Java gli StringBuffer, in php ho alcune lacune non so bene ma .= per l'append dovrebbe andar bene comunque). Append = aggiungi in fondo.
Fammi sapere se gira o se trovate boiate che ho scritto