SlackulatoR Δημοσ. 26 Φεβρουαρίου 2012 Δημοσ. 26 Φεβρουαρίου 2012 Καλησπέρα, Φτιάχνω μία σελίδα και χρησιμοποιώ την 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;
pant13 Δημοσ. 26 Φεβρουαρίου 2012 Δημοσ. 26 Φεβρουαρίου 2012 Βαλε absolute links στο header σου για τις φωτο, αν καταλαβα καλα.....
SlackulatoR Δημοσ. 26 Φεβρουαρίου 2012 Μέλος Δημοσ. 26 Φεβρουαρίου 2012 Τελικά τα ανέβασα σε server και έδωσα τα links, αλλά είναι αυτός ο πιο σωστός τρόπος; Το πρόβλημα με λίγα λόγια είναι ότι: το footer.html π.χ τραβάει εικόνες από τον φάκελο images. Οπότε images/1.jpg Αν το κάνω include μέσα στο news/1.html το footer, το link για τις εικόνες είναι λάθος καθώς πρέπει να είναι ../images/1.jpg.
ΠάρηςΓ Δημοσ. 26 Φεβρουαρίου 2012 Δημοσ. 26 Φεβρουαρίου 2012 Γενικα σωστος εισαι νομιζω. Αν τα links ειναι προβλημα βαζε και εκει absolute /images/1.jpg οχι relative. Και αν ειναι μακρυναρι ορισε μια μεταβλητη πχ currentUrl οτι αρμοζει τελος παντων
defacer Δημοσ. 27 Φεβρουαρίου 2012 Δημοσ. 27 Φεβρουαρίου 2012 Το καλύτερο που έχεις να κάνεις είναι να ορίσεις 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 σε ένα μέρος και πάλι όλα να παίζουν σωστά.
SlackulatoR Δημοσ. 28 Φεβρουαρίου 2012 Μέλος Δημοσ. 28 Φεβρουαρίου 2012 Ναι και στο google που διάβασα αυτόν τον τρόπο πρότειναν. Θα τον δοκιμάσω και θα ξαναγράψω αν κολλήσω κάπου, ευχαριστώ.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα