Newsgroup: it.comp.www.php
Titolo: problema di path nel template

Nel tentativo di separare il template dal codice php mi sono imbattuto in
questo problema che per semplicità vi mostro con un piccolo esempio.
Supponiamo di avere un template (template.html) fatto così nella cortella
principale, contenente un semplice menù :
.
.
.
<body>
<a href="index.php">home</a>
<a href="prova/prova.php">$link</a>
</body>
</html>
Il collegamento sarà valido solo se la pagina attuale si trova nella stessa
directory dell' index e non quando invece mi troverò in prova.php, quindi
c'è bisogno di una variabile $path che verrà inizializzata in ogni pagina
del sito (in questo caso abbiamo solo prova.php ma nel mio sito ce ne sono
molte) e avrà valore "../" nel caso ci si trovi in una sottocartella.
<body>
<a href="$path index.php">home</a>
<a href="$path prova/prova.php">$link</a>
</body>
</html>
il file prova.php (come un qualsiasi altro file presente in una
sottocartella), che si trova in una sottocartella rispetto al template,
sarà:
<?
$path="../";
$link= "prova";
include($path."funzioni.php"); // in questo file è presente la funzione che
stampa il template
eval("Stampa(\"".GetTemplate($path."template.html")."\");");
?>
Ma è proprio questo spazio tra $path e index.php che mi frega e fa
invalidare il tutto.
Il pagina risultante diventa infatti:
<body>
<a href="../ index.php">home</a>
<a href="../ prova/prova.php">prova</a>
</body>
</html>
Levando questo spazio invece l'eval(.....) della pagina in php che voglio
aprire (in questo caso prova.php)  non mi riconosce + la variabile $path.
Una soluzione drastica potrebbe essere quella di mettere tutti indirizzi
assoluti, ma poi non riuscirei + ad utilizzarlo in locale.
Memorizzare tutti gli indirizzamenti in variabili non mi sembra la cosa
migliore visto che le immagini e i collegamenti del mio sito sono molti.
Spero di essere riuscito ad esporre chiaramente il problema.
Aiutatemi!!!
Grazie
Fabrizio

basta fare $path.$variabile
ovvero inserendo il punto colleghi le stringhe come una unica.
cmq ti conviene inserire un path assoluto, cosi eviti di dover cambiare
ancora in base alla struttura.
cioè o inserire l'url base (
http://www.nome.com
) oppure il path assoluto
(tipo home/var/www/ecce cec)
Volendo c'è pure una funzione
mi pare $_get_http o qualcosa del genere
-- 
Se qualcosa va male non preoccuparti. Domani andrà peggio

 etc etc etc
Sfrutta i collegamenti relativi alla root del sito
/index.php
/pagina/ciao.php
Ovunque li metti vanno bene, no?

 Se qualcosa va male non preoccuparti. Domani andrà peggio
Questa cosa è vera....da troppo tempo ;)

 Ovunque li metti vanno bene, no?
 Io ho provato anche a mettere
$path=".." e il link a "$path/prova/prova.php" ma se la pagina si trova
nella directory principale il collegamento a /index.php o a /prova/prova.php
mi porta una pagina di errore per colpa di quel '/' iniziale.


Scusa, ma se devi linkare la pagina
http://www.tuosito.it/ciao/ciao.php
puoi usare
<a href="/ciao/ciao.php">CIAO!</a>
sia che il link si trovi nella pagina
http://www.tuosito.it/index.html
sia che si trovi in
http://www.tuosito.it/ciao/caramella/pippo/ndosto.php
no?
Ludovico Grossi

 no?
Hai ragione, infatti ora mi funziona.
Grazie 1000!

 richiesta passa per il dns facendo perdere tempo.
io faccio in questo modo
sicuramente hai un file che includi in tutte le pagine con la la connessione
al database  e la gestion edelle sessioni
io qui ho aggiunto una variabile $path con l'url principale del sito
poi naturalmente la aggiungi a tutte le url dei link nei template(io la
aggiungo a tutti i link ..... in questo modo l'intero sito non č vincolato
ad alcun dominio ..... e puoi pure mettere vari domini che sullo stesso sito
^__^ ..... insomma un vantaggio notevole)
e se quando sviluppi in locale basta che modifichi questa path in
http://localhost
 o cmq l'indirizzo locale
ciao
Andrea