korinthorama logo

ODYSSEY CMS

Ενθέματα (modules ή widgets)

Η δομή ενός Odyssey module

image

Τα ενθέματα ή αλλιώς modules/widgets είναι μικρές (ή και μεγάλες) εφαρμογές που μας δίνουν την δυνατότητα να επεκτείνουμε τις δυνατότητες του Odyssey.
Το Odyssey στην βασική του έκδοση, συνοδεύεται από μια πλειάδα modules ώστε να καλύπτει με εύκολο τρόπο απαιτήσεις όπως δημιουργία menu, ημερολογίου, χάρτη, gallery κλπ.

 

Ας προσπαθήσουμε να ρίξουμε μια πιο κοντινή ματιά και να αναλύσουμε τον τρόπο λειτουργίας των modules.
Το κυριότερο πλεονέκτημα που μας προσφέρει ένα module, είναι η δυνατότητα εύκολης παραμετροποίησης από απλούς χρήστες μέσω του πίνακα διαχείρισης.

 

Κάθε module για να εμφανιστεί στη σελίδα μας θα πρέπει:

  • Να εγκατασταθεί στο σύστημά μας (αν δεν είναι ήδη εγκατεστημένο).
    Η εγκατάσταση γίνεται μέσω ενός zip αρχείου, στο οποίο έχουμε συμπεριλάβει στο root του archive όλα τα αρχεία του module που θα εγκατασταθούν στα system folder (css, js, images) και την όποια custom δομή folders για πρόσθετα plugins κλπ. Για να εγκαταστήσουμε ένα module πρέπει στον πίνακα διαχείρισης να επιλέξουμε ΔΙΑΧΕΙΡΙΣΗ ΕΜΦΑΝΙΣΗΣ -> ΕΝΘΕΜΑΤΑ ΣΕΛΙΔΑΣ -> ΕΓΚΑΤΑΣΤΑΣΗ ΝΕΟΥ ΕΝΘΕΜΑΤΟΣ. Μετά την ολοκλήρωση της διαδικασίας, όλα τα αρχεία θα αποθηκευθούν στις κατάλληλες θέσεις, όπως ορίζουν οι παράμετροι του xml εγκατάστασης το οποίο πρέπει να ονομάζεται πάντα install.xml και να συμπεριλαμβάνεται στο zip archive.
  • Να ενσωματωθεί στο template που επιθυμούμε (συνήθως το τρέχον template) ως ένα instance, δηλαδή ως ένα αντίγραφο.
    Κατά την διαδικασία αυτή, ορίζουμε τις παραμέτρους του, σε ποια θέση θα εμφανίζεται (template slot) και σε ποιο περιεχόμενο (πχ να εμφανίζεται σε όλο το site ή σε συγκεκριμένες ενότητες, σελίδες κλπ). Φυσικά μπορούμε να έχουμε περισσότερα από ένα instance κάποιου module, και κάθε ένα να έχει τις δικές του παραμέτρους και να λειτουργεί αυτόνομα στην ίδια σελίδα.

 

Όπως τα templates, έτσι και τα modules ακολουθούν μια παρόμοια δομή.
Ένα module πρέπει απαραίτητα να αποτελείται από ένα xml που περιγράφει την δομή και τις ρυθμίσεις του, και τουλάχιστον ένα php αρχείο για την εκτέλεση της εφαρμογής.

Το xml έχει την ακόλουθη δομή:

 

<?xml version="1.0" encoding="utf-8" ?>
<install type="module">
	<name>module_name</name>
	<title>Module Title</title>
	<version>1.0</version>
	<author>Author name</author>
	<protected>0</protected>	
	<files>
		<file type="root">module_name.php</file>
	</files>				
	<params>
		<param type="parameterType" name="parameterName" label="parameterLabel" description="parameterDescription">defaultParameterValue</param>	
	</params>	
</install>

 

Το XML του module αναφέρεται στους τομείς name, title, version, author, protected, files και params.

Το name προσδιορίζει το system name του module και θα πρέπει να αποτελείται από λατινικούς χαρακτήρες χωρίς κενά, αφού το όνομα αυτό θα πάρει ο φάκελος εγκατάστασης του module.

Το title είναι ένας τίτλος της επιλογής μας.

 

Τα version και author αναφέρονται αντίστοιχα στην έκδοση και στον συγγραφέα του συγκεκριμένου ενθέματος.

Το protected αν έχει τιμή 1 προσδιορίζει το module ως system module και δεν επιτρέπει την απεγκατάστασή του. Συνήθως πρέπει να έχει τιμή 0.

Στον τομέα files ορίζουμε όλα τα αρχεία του module εκτός από τις εικόνες (εξαίρεση αποτελούν τα sprite images). Κάθε εγγραφή περιέχεται στο tag <file> και πρέπει να πλαισιώνεται από το attribute type.
Το type παίρνει τιμές root, css, js, sprite και ορίζει αντίστοιχα τα αρχεία που θα αντιγραφούν στον root φάκελο του module (πχ php files), τα css, τα js και τις εικόνες που θέλουμε να χρησιμοποιηθούν ως sprite images.

Τις εικόνες που πλαισιώνουν την εφαρμογή μας (αν υπάρχουν), τις συμπεριλαμβάνουμε απλά σε ένα φάκελο με όνομα images. Το ίδιο ισχύει και για τα css και js αρχεία που πιθανόν να χρειάζονται για την λειτουργία του νέου module και που πρέπει να συμπεριλαμβάνονται στους αντίστοιχους φακέλους css και js.

 

Ο τομέας params είναι από τους πιο σημαντικούς αφού ορίζει τις παραμέτρους με τις οποίες θα λειτουργεί το module. Η κάθε παράμετρος ορίζεται από το tag <param> και πλαισιώνεται από μια σειρά attributes που καθορίζουν την ταυτότητα της παραμέτρου. Ο τύπος κάθε παραμέτρου ορίζεται από το attribute type.

 

Ας δούμε όλους τους διαθέσιμους τύπους παραμέτρων και τα attributes με τα οποία συνδυάζονται:

 

  • textfield (πεδίο κειμένου)
    • size (το μήκος του πεδίου κειμένου)
    • name (πρέπει να αποτελείται από λατινικούς χαρακτήρες χωρίς κενά)
    • label (εμφανιζόμενος τίτλος της παραμέτρου)
    • description (εμφανιζόμενη περιγραφή της παραμέτρου)
    • required [true|false] (απαραίτητο να υπάρχει τιμή στην παράμετρο)
  • textarea (περιοχή απλού ή εμπλουτισμένου κειμένου)
    • richText [true|false] (χρήση ή όχι του TinyMCE editor για μορφοποίηση)
    • rows (αριθμός σειρών του κειμένου)
    • cols (αριθμός χαρακτήρων ανά γραμμή κειμένου)
    • name (πρέπει να αποτελείται από λατινικούς χαρακτήρες χωρίς κενά)
    • label (εμφανιζόμενος τίτλος της παραμέτρου)
    • description (εμφανιζόμενη περιγραφή της παραμέτρου)
    • required [true|false] (απαραίτητο να υπάρχει τιμή στην παράμετρο)
  • select (λίστα επιλογής)
    • default (η εξ ορισμού τιμή της παραμέτρου)
    • name (πρέπει να αποτελείται από λατινικούς χαρακτήρες χωρίς κενά)
    • label (εμφανιζόμενος τίτλος της παραμέτρου)
    • description (εμφανιζόμενη περιγραφή της παραμέτρου)
  • checkbox (επιλογή | αποεπιλογή)
    • name (πρέπει να αποτελείται από λατινικούς χαρακτήρες χωρίς κενά)
    • label (εμφανιζόμενος τίτλος της παραμέτρου)
    • description (εμφανιζόμενη περιγραφή της παραμέτρου)
  • colorpicker (πεδίου καθορισμού χρώματος)
    • name (πρέπει να αποτελείται από λατινικούς χαρακτήρες χωρίς κενά)
    • label (εμφανιζόμενος τίτλος της παραμέτρου)
    • description (εμφανιζόμενη περιγραφή της παραμέτρου)
  • date (πεδίου επιλογής ημερομηνίας)
    • name (πρέπει να αποτελείται από λατινικούς χαρακτήρες χωρίς κενά)
    • label (εμφανιζόμενος τίτλος της παραμέτρου)
    • description (εμφανιζόμενη περιγραφή της παραμέτρου)
  • section (λίστα επιλογής ενότητας δεδομένων του Odyssey)
    • criteria (η mySQL συνθήκη που θα εφαρμοστεί για φιλτράρισμα)
    • name (πρέπει να αποτελείται από λατινικούς χαρακτήρες χωρίς κενά)
    • label (εμφανιζόμενος τίτλος της παραμέτρου)
    • description (εμφανιζόμενη περιγραφή της παραμέτρου)
  • form (λίστα επιλογής φόρμας του Odyssey)
    • name (πρέπει να αποτελείται από λατινικούς χαρακτήρες χωρίς κενά)
    • label (εμφανιζόμενος τίτλος της παραμέτρου)
    • description (εμφανιζόμενη περιγραφή της παραμέτρου)
    • required [true|false] (απαραίτητο να υπάρχει τιμή στην παράμετρο)
  • sprite (επιλογή εικονιδίου από sprite image)
    • defaultStepX (το πλάτος του βήματος στο grid του sprite image)
    • defaultStepY (το ύψος του βήματος στο grid του sprite image)
    • name (πρέπει να αποτελείται από λατινικούς χαρακτήρες χωρίς κενά)
    • label (εμφανιζόμενος τίτλος της παραμέτρου)
    • description (εμφανιζόμενη περιγραφή της παραμέτρου)
  • mediabank (επιλογή αρχείου ή εικόνας από την βιβλιοθήκη αρχείων)
    • filetypes (λίστα με τις επεκτάσεις αρχείων, χωρισμένες με κόμμα)
    • name (πρέπει να αποτελείται από λατινικούς χαρακτήρες χωρίς κενά)
    • label (εμφανιζόμενος τίτλος της παραμέτρου)
    • description (εμφανιζόμενη περιγραφή της παραμέτρου)

 

Στο τέλος αυτού του άρθρου όπως θα δείτε, έχουμε επισυνάψει ένα δείγμα XML εγκατάστασης για module το οποίο περιέχει όλες τις παραμέτρους του συστήματος. Οι παράμετροι αυτοί δεν είναι απαραίτητοι, αλλά αν υπάρχουν πρέπει να βρίσκονται σε συγκεκριμένες θέσεις για να λειτουργήσουν σωστά. Για τον λόγο αυτό έχει σημειωθεί με τα κατάλληλα σχόλια, σε ποιο σημείο θα πρέπει να προσθέσετε εσείς τις δικές σας παραμέτρους.

Οι παράμετροι του συστήματος μας δίνουν κάποιες extra δυνατότητες ρυθμίσεων όπως τα margins, τα paddings, την στοίχιση και την εμφάνιση διαχωριστικών γραμμών (hr).
Για να μπορεί να γίνει η ανωτέρω παραμετροποίηση, θα πρέπει πάντα να είναι ενεργή η ρύθμιση useModuleContainer η οποία και εμφανίζεται πρώτη στις ρυθμίσεις.

 

Στο επόμενο άρθρο θα δούμε την διαδικασία δημιουργίας ενός πολύ απλού module με σκοπό να δούμε όλα τα ανωτέρω στην πράξη.