Php και Joomla Ψηφιακό Περιεχόμενο & Επικοινωνίες
Αρχίζοντας Το Joomla τρέχει: PHP MySql Στο Joomla μπορούμε να προσθέσουμε επιπλέον λειτουργικότητα, να την επεκτείνουμε δηλαδή (extensions) με την χρήση των: Components Modules Plug-ins Page 2
Components Είναι ο εκτενέστερος και πιο περίπλοκος τρόπος επέκτασης της λειτουργικότητας του site. Αποτελούν μεγάλο κομμάτι της λειτουργικότητας του site. Συνήθως προσθέτουν νέα, διαφορετική λειτουργικότητα. Επεξεργάζεται δεδομένα εισόδου και αλληλεπιδρά με τη Β. Τα περισσότερα components αποτελούνται από 2 μέρη: Το τμήμα που χειρίζεται ο διαχειριστής Και το τμήμα που βλέπει ο χρήστης του site. Παραδείγματα: Content (com_content), Banners (com_banners), Contact (com_contact), News Feeds (com_newsfeeds) Page 3
Component screenshot -user Page 4
Component screenshot-admin Page 5
Modules Είναι λιγότερο «βαριές» προσθήκες που επεκτείνουν ήδη υπάρχουσες λειτουργίες του συστήματος. Συχνά αποτελούν τα «κουτιά» που τοποθετούνται γύρω από τα components, πχ το module για το log in των χρηστών. Συνήθως δεν ασχολείται με την αποθήκευση δεδομένων στη βάση. Τα modules αποτελούν δευτερεύοντα σημεία της σελίδας συνεπώς δεν αποτελούν πρωταρχικά σημεία εστίασης. Παραδείγματα: Search, Menus (mod_menu), Who's Online (mod_whosonline) Page 6
Module screenshot -user Page 7
Module screenshot-admin Page 8
Plugins Στην ουσία είναι χειριστές των διαφόρων γεγονότων καθώς επεξεργάζονται δεδομένα που έχουν ήδη δημιουργηθεί από το σύστημα. ηλαδή δεν τρέχει ως αυτόνομο κομμάτι αλλά λαμβάνει δεδομένα από άλλες πηγές (πχ το περιεχόμενο των άρθρων) και τα επεξεργάζεται πριν αυτά εμφανιστούν στην οθόνη του χρήστη. Τα plugins συνήθως δεν εμφανίζονται στο χρήστη αλλά τρέχουν από πίσω. Παραδείγματα: plugins που επεξεργάζονται τον τρόπο εμφάνισης της πληροφορίας (μορφοποίηση) Page 9
Plugin screenshot -user Page 10
Plugin screenshot-admin Page 11
Εγκατάσταση επεκτάσεων Η εγκατάσταση είναι πολύ εύκολη διαδικασία. Κατεβάζουμε την επέκταση που επιθυμούμε και στη συνέχεια την εγκαθιστούμε: Extensions Install/Uninstall επιλογή αρχείου Upload File & Install Ανάλογα με τη λειτουργικότητα που προσθέσαμε θα βρούμε την επέκταση στο «component», «module manager» ή «plugin manager» Page 12
Παρέμβαση στον κώδικα Αφού το joomla είναι ανοικτού λογισμικού οι παρεμβάσεις είναι εφικτές. Για διευκόλυνσή μας μπορούμε μ ναχρησιμοποιήσουμε μ εργαλεία όπως το eclipse ήτοnetbeans (έκδοση για php). Καθώς στο ίντερνετ υπάρχει αρκούντως μεγάλος όγκος τεκμηρίωσης για την php η δυσκολία έγκειται στην κατανόηση του υπάρχοντος κώδικα. Στόχος μας είναι η κατανόηση του κώδικα που υπάρχει και η εύρεση των σημείων που θα γίνει η παρέμβαση. Page 13
ημιουργία e-shop Εγκατάσταση component & module που δίνουν λειτουργικότητα e-shop. 1. Component : «com_virtuemart_1.1.8.j15.zip» Εισαγωγή έτοιμων δεδομένων για το e-shop 2. Module: «mod_virtuemart_1.1.8.j15.zip» Page 14
ιαχείριση του component 1. Components VirtueMart 2. Configuration Global 3. Επιλογή του «Enable Customer Review/Rating System» και «Save» Page 15
ιαχείριση του module 1. Extensions Module Manager 2. Εύρεση του «VirtueMart Module» και ενεργοποίησή του. Page 16
Tι κάναμε μέχρι τώρα Εγκαταστήσαμε το component «com_virtuemart_1.1.8.j15» &το module «mod_virtuemart_1.1.8.j15». ημιουργήσαμε ένα e-shop που δίνει τη δυνατότητα στους εγγεγραμμένους χρήστες να βαθμολογούν τα προσφερόμενα προϊόντα. Για κάθε προϊόν του καταλόγου εμφανίζεται η μέση τιμή των βαθμολογιών που δόθηκαν από τους χρήστες και ο αριθμός των ψήφων. Page 17
Παράδειγμα (2) Για κάθε προϊόν οι χρήστες έχουν τη δυνατότητα να δουν τη μέση τιμή των βαθμολογιών που έχουν δώσει οι χρήστες για το εκάστοτε προϊόν αλλά και να βαθμολογήσουν οι ίδιοι Αφού έχουμε συνδεθεί επιλέγουμε Product details για να βαθμολογήσουμε. Μέχρι στιγμής δεν έχει υπάρξει άλλος χρήστης που να έχει βαθμολογήσει.
Παράδειγμα (2) Επιλογή βαθμολογίας και από κάτω συμπλήρωση σχολίου για το συγκεκριμένο προϊόν Επιλέξαμε 4 αστέρια α
Παράδειγμα (2) Μέση βαθμολογία: 4 αστέρια Σύνολο ψήφων :1
Τι θέλουμε να πετύχουμε; Στόχος μας είναι να εκτυπώσουμε για κάθε προϊόν κάτω από το μέσο όρο των βαθμολογιών, τη μικρότερη και τη μεγαλύτερη βαθμολογία για βαθύτερη αντίληψη της αξιολόγησης του προϊόντος. Αρχεία που λαμβάνουν μέρος στην αλλαγή: english.php φράσεις που εκτυπώνονται ps_reviews.php i h υπολογισμός min και max βαθμολογίας, αποθήκευση βαθμολογιών στη βάση votes_allvotes.php εκτύπωση των τιμών Πίνακας που λαμβάνει μέρος στην αλλαγή: product_votes αποθηκεύει τους ψήφους, τον ΜΟ Πώς επιλέχθησαν αυτά τα αρχεία και οι πίνακες;;;;;; Page 21
Πώς αρχίζουμε; Αρχικά πρέπει να κατανοήσουμε ακριβώς πώς λειτουργεί το συγκεκριμένο extension. Στησυνέχειαψάχνουμεποιααρχείασυμμετάσχουνστηνδιεργασίαπου θέλουμε να παρέμβουμε. Μία τεχνική είναι να ξεκινήσουμε από τα αρχεία που συμμετέχουν στο επίπεδο παρουσίασης και να οδεύσουμε μέσω αυτών στα αρχεία του επιπέδου εφαρμογών και από εκεί στη Βάση δεδομένων. Page 22
Αναζήτηση εμπλεκόμενων αρχείων στην αλλαγή (1) Στην περίπτωσή μας θέλουμε κάτω από το ΜΟ των βαθμολογιών να εκτυπώσουμε την μεγαλύτερη και τη μικρότερη βαθμολογία. Ποιο είναι το αρχείο που είναι υπεύθυνο για την εκτύπωση της φράσης: «Average customer rating» και «Total votes»; Αναζητούμε τις παραπάνω φράσεις μέσα σε όλο το joomla φάκελο. Page 23
Αναζήτηση φράσης στον κώδικα Η αναζήτησης επιστρέφει τα αποτελέσματα. Παρατηρούμε ότι όλες οι επισημάνσεις είναι σχόλια στον κώδικα εκτός αυτής που βρίσκεται στο αρχείο το english.php. h Page 24
Επεξήγηση και προσθήκη κώδικα στο english.php Στο αρχείο αυτό έχουμε την ανάθεση σε μεταβλητές των labels που εμφανίζονται στον χρήστη. global μεταβλητή Πίνακας για την αποθήκευση των κειμένων, φράσεων που εμφανίζονται στο site Δημιουργία 2 νέων μεταβλητών για την ελάχιστη και μέγιστη βαθμολογία Ανάθεση του πίνακα στην global μεταβλητή Page 25
english.php & presentation layer Στο αρχείο αυτό έχουμε την ανάθεση σε μεταβλητές των labels που εμφανίζονται στον χρήστη. 'PHPSHOP_CUSTOMER_RATING' => 'Average customer rating' 'PHPSHOP_TOTAL_VOTES' => 'Total votes Page 26
Αναζήτηση εμπλεκόμενων αρχείων στην αλλαγή (2) Βρήκαμε σε ποιο αρχείο αποθηκεύονται τα labels που εκτυπώνονται για κάθε προϊόν. Ποιο αρχείο είναι υπεύθυνο για την εκτύπωση αυτών των labels; Ψάχνουμε ποια αρχεία χρησιμοποιούν τη μεταβλητή «PHPSHOP_CUSTOMER_RATING» Page 27
Αναζήτηση μεταβλητής στον κώδικα Η αναζήτησης επιστρέφει τα αποτελέσματα. Η αναζήτηση έδειξε το «english.php» (το είδαμε) και το «votes_allvotes.php» Page 28
Επεξήγηση και προσθήκη κώδικα στο votes_allvotes.php Στοαρχείοαυτόέχουμετηνεκτύπωσηα) του label για τη μέση τιμή και β)της μεταβλητής allvotes δηλαδή τον αριθμό του συνόλου των ψήφων. Προσθέτουμε εδώ την εκτύπωση της max και min τιμής. Τοποθέτηση της εκτυπωμένης πληροφορίας σε πίνακα Για όσα προϊόντα έχουν λάβει τουλάχιστον 2 βαθμολογίες Αποτύπωση της min και max τιμής μέσω των αστεριών
Αναζήτηση εμπλεκόμενων αρχείων στην αλλαγή (3) Βρήκαμε σε ποιο αρχείο αποθηκεύονται τα labels που εκτυπώνονται για κάθε προϊόν (english.php) και ποιο αρχείο τα εκτυπώνει (ps_reviews.php). Ποιο αρχείο δίνει τιμή στη μεταβλητή «allvotes» (σύνολο ψήφων για κάθε προϊόν); Ψάχνουμε ποια αρχεία χρησιμοποιούν τη μεταβλητή «allvotes» Page 30
Αναζήτηση της μεταβλητής «allvotes» στον κώδικα (1) Από τα αρχεία που επέστρεψε η αναζήτηση το αρχείο με όνομα «ps_reviews.php» εμφανίζεται να χρησιμοποιεί περισσότερο τη μεταβλητή «allvotes» και βάσει του ονόματός του «ps_reviews.php» μας προϊδεάζει για το περιεχόμενό του. Page 31
Αναζήτηση της μεταβλητής «allvotes» στον κώδικα (2) Το «matched text» δείχνει το σωστό αρχείο Page 32
Επεξήγηση και προσθήκη κώδικα στο ps_reviews.php (1) Ανάκληση από τη βάση των ψήφων των χρηστών Προσθήκη για την ανάκληση της μέγιστης και της ελάχιστης βαθμολογίας Αρχικοποίηση των μεταβλητών $min, $max Ανάθεση στις μεταβλητές $max και $min των τιμών που ανακλήθηκαν από τη βάση Ανάθεση του πίνακα στην global μεταβλητή Page 33 «Πέρασμα» των παραπάνω μεταβλητών για κάθε προϊόν στο votes_allvotes.tpl.php
Επεξήγηση και προσθήκη κώδικα στο ps_reviews.php (2) Αποθήκευση στη Βάση της min και max βαθμολογίας για κάθε προϊόντος Στον συγκεκριμένο πίνακα αποθηκεύονται όλες οι βαθμολογίες των χρηστών (τρέχει για κάθε προϊόν) Ανάθεση στις μεταβλητές $max και $min τη μέγιστη και την ελάχιστη τιμή του πίνακα $votes_arr Αποθήκευση στη Βάση της μεγαλύτερης και μικρότερης βαθμολογίας για κάθε προϊόν Page 34
Παρέμβαση στη Β (1) Αφού έχουμε ολοκληρώσει την παρέμβαση σε επίπεδο κώδικα συνεχίζουμε με την παρέμβαση στη Βάση δεδομένων. Μέσω έ του xampp ανοίγουμε τη σελίδα διαχείρισης της Βάση: http://localhost/phpmyadmin/ Βάσει του επερωτήματος στο αρχείο ps_reviews.php ξέρουμε ότι πρέπει να παρέμβουμε στον πίνακα «product_votes» H database του joomla ονομάζεται συνήθως «joomla» εκτός αν κατά την εγκατάσταση ο χρήστης επέλεξε άλλο όνομα. Επιλέγουμε τη βάση του joomla και στη συνέχεια τον πίνακα «product_votes» όπου και προσθέτουμε 2 νέα πεδία. Page 35
Επιλογή βάσης «Joomla» Page 36
Επιλογή πίνακα «product_votes» Κάνουμε scroll down μέχρι να βρούμε τον πίνακα «product_votes» και επιλέγουμε «ομή». Ο πίνακας που θέλουμε Θέλουμε επεξεργασία της δομής του πίνακα
Επεξεργασία πίνακα «product_votes» (1) Κάνουμε scroll down μέχρι να βρούμε τον πίνακα «product_votes» και επιλέγουμε «ομή». Θέλουμε να προσθέσουμε 2 πεδία Πατάμε εκτέλεση
Επεξεργασία πίνακα «product_votes» (2) Κάνουμε scroll down μέχρι να βρούμε τον πίνακα «product_votes» και επιλέγουμε «ομή». Εισαγωγή 2 πεδίων min και max τύπου integer Πατάμε αποθήκευση
Παρέμβαση στη Β (2) Αποτέλεσμα Εμφάνιση των 2 νέων πεδίων για την αποθήκευση της μεγαλύτερης και χαμηλότερης βαθμολογίας για κάθε προϊόν Page 40
Αποτέλεσμα Page 41
Ένα βήμα παραπέρα Το «com_virtuemart» και τα modules του μπορούν να χρησιμοποιηθούν για την υλοποίηση πολλών ιδεών: Χρησιμοποίηση του module mod_virtuemart_topten για εμφάνιση όχι των 10 πιο «δημοφιλών» λόγω πωλήσεων αλλά λόγω υψηλού rating. Αυτό το rating θα μπορούσε να προκύπτει όχι από το σύνολο των βαθμολογιών που έχουν δοθεί από όλους του χρήστες αλλά από το χρήστη που εμφανίζει την υψηλότερη συσχέτιση με το συνδεδεμένο χρηστή. ( ημιουργία νέου πίνακα στη βάση όπου αποθηκεύονται συσχέτισης μεταξύ των χρηστών) ) οι βαθμοί Page 42
ημιουργία πίνακα στη mysql(1) Το «com_virtuemart» και τα modules του μπορούν να χρησιμοποιηθούν για την υλοποίηση πολλών ιδεών: Είμαστε μέσω στη βάση joomla Επιλογή ονόματος του νέου πίνακα και του αριθμού των πεδίων που θα περιλαμβάνει Page 43
ημιουργία πίνακα στη mysql(2) Συμπλήρωση πεδίων Αποθήκευση Page 44
ημιουργία πίνακα στη mysql(3) Επιλογή των πεδίων Τα θέτουμε πρωτεύοντα Page 45
Απορίες; Για πληροφορίες / απορίες mskiada@dmst.aueb.gr Page 46