korinthorama logo

ODYSSEY CMS

Το Odyssey document model

Class Document, ο οικοδόμος

Όταν κληθεί ένα url στο Odyssey, αναλαμβάνει η class document να δομήσει την ζητηθείσα σελίδα σύμφωνα με τις παραμέτρους του url. Αν είναι ενεργοποιημένη η δυνατότητα για φιλικά URLs (sef URLs), ένα τυπικό URL του Odyssey αποτελείται από τα ακόλουθα στοιχεία:



Το ανωτέρω URL αντιστοιχεί στην παραγματικότητα στο

index.php?langID=1&section=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 πληροφορίες αν είναι ενεργή η σχετική ρύθμιση από τον πίνακα διαχείρισης
Όλες τις ανωτέρω ενέργειες θα τις αναλύσουμε στα επί μέρους άρθρα αυτής της ενότητας...