Όταν κληθεί ένα url στο Odyssey, αναλαμβάνει η class document να δομήσει την ζητηθείσα σελίδα σύμφωνα με τις παραμέτρους του url. Αν είναι ενεργοποιημένη η δυνατότητα για φιλικά URLs (sef URLs), ένα τυπικό URL του Odyssey αποτελείται από τα ακόλουθα στοιχεία:
Το ανωτέρω URL αντιστοιχεί στην παραγματικότητα στο
index.php?langID=1§ion=articles&view=node&id=1
Οι απόλυτα απαραίτητες παράμετροι για να δημιουργήσει μια σελίδα το Odyssey, είναι:
- η γλώσσα (langID)
- η ενότητα (section)
- η απεικόνιση (view)
Αν μία ή περισσότερες από τις ανωτέρω παραμέτρους δεν βρεθεί (πχ αρχική σελίδα), τότε το σύστημα θα ορίσει αυτόματα:
- ως γλώσσα αυτήν που έχει οριστεί ως default
- ως section την τιμή «odyssey_index» (ενότητα αρχικής σελίδας)
- ως view ή αν δεν βρεθεί η απεικόνιση, την «odyssey_index» (απεικόνιση αρχικής σελίδας)
Έχοντας λοιπόν τις ανωτέρω παραμέτρους η Class Document (ή αλλιώς $document για συντομία), πραγματοποιεί με τη σειρά τις κάτωθι ενέργειες ώστε να δημιουργήσει την σελίδα που ζητήθηκε:
- Φιλτράρει και αποθηκεύει τις μεταβλητές του request
- Κάνει τους κατάλληλους ελέγχους και ορίζει αν χρειαστεί τα κατάλληλα μηνύματα σφάλματος, προετοιμάζοντας για πιθανό error 404 redirect
- Ορίζει το πρώτο (κυρίως) τμήμα του html <title> σύμφωνα με τις γενικές ρυθμίσεις του site
- Καλεί τον αντίστοιχο controller ο οποίος με τη σειρά του εκτελεί τις ενέργειες που ακολουθούν
- Συμπεριλαμβάνει -αν υπάρχει- το css αρχείο της αντίστοιχης ενότητας
- Συμπεριλαμβάνει -αν υπάρχουν- τα js αρχεία της αντίστοιχης ενότητας
- Συμπεριλαμβάνει -αν υπάρχει- το js αρχείο της αντίστοιχης ενότητας που πρέπει να εκτελεσθεί on document ready (η βιβλιοθήκη της jQuery συμπεριλαμβάνεται αυτόματα από το σύστημα)
- Αντλεί τα δεδομένα που χρειάζονται και τα προετοιμάζει για χρήση από την αντίστοιχη απεικόνιση (view)
- Συμπεριλαμβάνει τα σχετικά με την ενότητα meta tags (description, keywords κλπ)
- Συμπληρώνει το html <title> με το θέμα της τρέχουσας ενότητας
- Συμπεριλαμβάνει όλα τα meta, css και js αρχεία του συστήματος
- Συμπεριλαμβάνει όλα τα meta, css και js αρχεία του τρέχοντος template
- Συμπεριλαμβάνει τυχόν δυναμικό js κώδικα (πρόκειται για javascript κώδικα που παράγεται δυναμικά από σχετικό php αρχείο του template)
- Συμπεριλαμβάνει -αν υπάρχει- τον javascript κώδικα που πρέπει να ενσωματωθεί πριν το τέλος του <body> (πχ Google Analytics κλπ)
- Συμπεριλαμβάνει όλα τα css και js αρχεία των ενθεμάτων που πλαισιώνουν την τρέχουσα σελίδα
- Ενσωματώνει τον html κώδικα του <head> της σελίδας σύμφωνα με τα meta, css και js αρχεία που έχει συμπεριλάβει
- Ενσωματώνει το <noscript> content
- Συμπεριλαμβάνει το index.php του τρέχοντος template το οποίο με τη σειρά του θα καλέσει την αντίστοιχη απεικόνιση (view) για να δημιουργηθεί ο html κώδικας του περιεχομένου. Στο στάδιο αυτό θα συμπεριληφθούν και όλα τα ενθέματα που έχουν οριστεί για την συγκεκριμένη σελίδα.
- Ενσωματώνει -αν υπάρχει- τον javascript κώδικα που πρέπει να τοποθετηθεί πριν το τέλος του <body> (πχ Google Analytics κλπ)
- Ενσωματώνει τις debuging πληροφορίες αν είναι ενεργή η σχετική ρύθμιση από τον πίνακα διαχείρισης
Όλες τις ανωτέρω ενέργειες θα τις αναλύσουμε στα επί μέρους άρθρα αυτής της ενότητας...