Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

Φτιάχνω μία σελίδα και χρησιμοποιώ την php include για να φορτώσω τα header/nav/footer στις html σελίδες μου. Το μόνο που αλλάζει είναι το main content.

Έχω όμως ένα πρόβλημα με τα links.

 

Το directory του site είναι χωρισμένο ως εξής:

 

[φ] = φάκελος

 

// Φάκελος του site \\

----------------------

[φ] images

[φ] news -> 1.html/2.html κτλ.

[φ] css

header.html

nav.html

footer.html

index.html

----------------------

\\ Φάκελος του site //

 

Ωραία λοιπόν, πείτε πως φτιάχνω μία νέα html σελίδα που θα ονομάζεται 1.html και θα τοποθετηθεί στον φάκελο news.

Ανοίγω λοιπόν την index μου, που έχει όλα τα php include(header/nav/footer) και αλλάζω το main content. Την σώζω ως 1.html στον φάκελο news. Εκεί αρχίζει το πρόβλημα.

 

Για παράδειγμα, το header.html τραβάει εικόνες από το images folder που είναι στο root του site. Όταν το header.html γίνει include μέσα στο news->1.html όμως το path χαλάει οπότε δεν εμφανίζονται οι εικόνες.

 

Λογικά η λύση είναι πολύ εύκολη αλλά έχω κολλήσει, μπορεί να βοηθήσει κάποιος;

Γίνεται να λυθεί χρησιμοποιώντας:

include($_SERVER['DOCUMENT_ROOT'].'/header.html');

 

Ή θα πρέπει να χρησιμοποιήσω άλλον τρόπο και όχι την php include;

Δημοσ.

Τελικά τα ανέβασα σε server και έδωσα τα links, αλλά είναι αυτός ο πιο σωστός τρόπος;

 

Το πρόβλημα με λίγα λόγια είναι ότι:

 

το footer.html π.χ τραβάει εικόνες από τον φάκελο images.

Οπότε images/1.jpg

 

Αν το κάνω include μέσα στο news/1.html το footer, το link για τις εικόνες είναι λάθος καθώς πρέπει να είναι ../images/1.jpg.

Δημοσ.

Γενικα σωστος εισαι νομιζω. Αν τα links ειναι προβλημα βαζε και εκει absolute /images/1.jpg οχι relative.

Και αν ειναι μακρυναρι ορισε μια μεταβλητη πχ currentUrl οτι αρμοζει τελος παντων

Δημοσ.

Το καλύτερο που έχεις να κάνεις είναι να ορίσεις 2 μεταβλητές κάπου κεντρικά: μία ας πούμε $DIRROOT (το absolute path του directory στο οποίο βρίσκεται το index.html σου) και μία $WWWROOT (absolute url με το οποίο πας στο index.html σου, αλλά και πάλι μόνο το path χωρίς το index.html στο τέλος).

 

Αυτά μπορείς ανάλογα με το σχεδιασμό της εκάστοτε εφαρμογής να τα θέσεις και αυτόματα, π.χ. αν έχεις single entry point το index.html μπορείς να δώσεις

 

>$DIRROOT = dirname(__FILE__);

 

και αντίστοιχα για το $WWWROOT μπορείς ίσως να το μαντέψεις μέσω πληροφοριών που θα πάρεις από τη $_SERVER.

 

Ακόμα κι αν αυτά δε γίνονται, πάντα μπορείς να τις ορίσεις μόνος σου σε ένα αρχείο μια φορά (κατά την "εγκατάσταση" της σελίδας) και μετά τέλος.

 

Απο κει και πέρα τα πάντα είναι απλά:

 

>include($DIRROOT.'dir/stuff.php');

 

και

 

><html>
 <head>
   <base href="<?php echo $WWWROOT; ?>" />
 </head>
</html>

 

Δες τι κάνει το <base> tag εδώ.

 

Τέλος να πω ότι φυσικά υπάρχουν πάρα πολλές εναλλακτικές, αλλά βάσει της δικής μου εμπειρίας μόνο μ' αυτό τον τρόπο μπορείς όχι μόνο να κάνεις τη δουλειά σου, αλλά να είσαι και σίγουρος πως ο,τιδήποτε και να γίνει στο μέλλον θα μπορείς να κάνεις μια διόρθωση 10sec σε ένα μέρος και πάλι όλα να παίζουν σωστά.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...