Drupal

Το Drupal είναι ένα ανοιχτού κώδικα Σύστημα διαχείρισης περιεχόμενου (CMS). Χρησιμοποιείται για την δημιουργία και την διαχείριση πολλών και διαφορετικών ιστότοπων. Η σταθερότητα, ευελιξία και η ασφάλεια του είναι μερικά απ τα σημεία αναφοράς του. Το myDrupal είναι μια κοινότητα που φιλοδοξεί να υποστηρίξει τους Έλληνες χρήστες του και να βοηθήσει στην μετάφραση του στα ελληνικά. Ελάτε και σεις!

Είναι γραμμένο στη γλώσσα προγραμματισμού PHP. Ωστόσο, η γνώση της PHP δεν είναι απαραίτητη για την εγκατάσταση, δημιουργία και συντήρηση ενός ιστοτόπου βασισμένου στο Drupal.

Υπάρχει για διάφορες πλατφόρμες, μεταξύ των οποίων Unix, Linux, BSD, Solaris, Windows και Mac OS X. Απαιτεί τους διακομιστές ιστοσελίδων Apache ή IIS, καθώς και τη βάση δεδομένων MySQL.

Ιστορία

Αρχικά γράφτηκε από τον Dries Buytaert ως σύστημα πίνακα ανακοινώσεων (bulletin board system). Το Drupal μετατράπηκε σε σχέδιο ανοικτού κώδικα το 2001. Drupal είναι η διατύπωση στην Αγγλική γλώσσα της Ολλανδικής λέξης "druppel", που σημαίνει "σταγόνα". Το όνομα πάρθηκε από το ξεπερασμένο πλέον ιστοτόπο Drop.org, του οποίου ο κώδικας εξελίχθηκε στο Drupal. Ο Dries ήθελε να ονομάσει τον ιστοτόπο "dorp" (στα Ολλανδικά σημαίνει "χωριό", αναφερόμενος στη διάσταση της κοινότητας), αλλά έκανε ένα ορθογραφικό λάθος κατά τη διαδικασία ελέγχου του ονόματος χώρου (domain name) και τελικά σκέφτηκε ότι ακούγεται καλύτερα.[1]

Με τα χρόνια, το Drupal κερδίζει σε δημοσιότητα. Από το Μάιο του 2006 ως τον Απρίλιο του 2007, χρήστες κατέβασαν το Drupal από τον επίσημο ιστοτόπο περισσότερες από 600.000 φορές.[2]

Μια μεγάλη κοινότητα χρηστών λαμβάνει πλέον μέρος στη συνεχή ανάπτυξη του Drupal.[3]

 

Σύστημα Διαχείρισης Περιεχομένου

Το Drupal έχει ένα βασικό στρώμα, ή πυρήνα, που παρέχει τα βασικά χαρακτηριστικά του Drupal και υποστηρίζει αρθρωτές μονάδες που προσθέτουν επιπλέον λειτουργικότητα ή χαρακτηριστικά.[4]

Οι μονάδες που περιέχονται στον πυρήνα του Drupal παρέχουν στους χρήστες τη δυνατότητα να υποβάλλουν, αναθεωρούν, κατηγοριοπούν ύλη, να εκτελούν αναζητήσεις, να υποβάλλουν σχόλια, να λαμβάνουν μέρος σε φόρουμ συζητήσεων, να ψηφίζουν σε ψηφοφορίες και να δουλεύουν σε συνεργατικά εγγραφικά έργα, χωρίς την απαίτηση να γνωρίζουν HTML. Οι μονάδες του πυρήνα επιτρέπουν επίσης στους χρήστες να υποβάλλουν και να βλέπουν προσωπικά προφίλ, να επικοινωνούν μεταξύ τους ή και με τους διαχειριστές του ιστοτόπου.

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

Πρόσθετες επίσης στον πυρήνα του Drupal είναι μονάδες που επιτρέπουν τους διαχειριστές του ιστοτόπου την αλλαγή της εμφάνισής του με έτοιμες ή φτιαγμένες με το χέρι θεματικές παραλλαγές, τη δημιουργία μενού με πολλά επίπεδα και την παροχή στους χρήστες μιας διεπαφής στη μητρική τους γλώσσα. Ακόμη, ο πυρήνας του Drupal επιτρέπει στους διαχειριστές να παρέχουν ροές RSS, καθώς και τη συλλογή περιεχομένου από ροές RSS άλλων ιστοτόπων.

Άλλες μονάδες του πυρήνα παρέχουν την εγγραφή χρηστών, τον καθορισμό ρόλων χρηστών από τους διαχειριστές, με τον ορισμό αδειών (permissions) στους χρήστες για τη χρησιμοποίηση επιλεγμένων χαρακτηριστικών του ιστοτόπου. Οι διαχειριστές μπορούν επίσης να χρησιμοποιούν κανόνες πρόσβασης για την άρνηση πρόσβασης στον ιστοτόπο σε συγκεκριμένα ονόματα χρηστών, διευθύνσεις ηλεκτρονικού ταχυδρομείου και διευθύνσεις IP.

Ο πυρήνας του Drupal περιλαμβάνει το χαρακτηριστικό "ψευδώνυμο URL" που επιτρέπει τη δημιουργία φιλικών στο χρήστη, εύκολων προς απομνημόνευση διευθύνσεων URL, είτε με αυτόματο τρόπο, είτε ένας χρήστης να καθορίζει διευθύνσεις URL με την ιδιότητα του συντάκτη ή διαχειριστή, όπως για παράδειγμα, να μπορεί να εισάγει κάποιος "www.mysite.com/products" αντί για "www.mysite.com/?q=node/432".

Οι μονάδες του πυρήνα παρέχουν στατιστικά και αναφορές για τους διαχειριστές, ενώ τους επιτρέπουν να χειρίζονται θέματα λανθάνουσας μνήμης και απόπνιξης ώστε να βελτιώσουν την απόδοση του ιστοτόπου σε περιόδους μεγάλης κίνησης.

Οι διαχειριστές μπορούν να κατασκευάζουν και να καθορίζουν διάφορα φίλτρα εισόδου και μορφότυπους ύλης.

Οι χρήστες και οι διαχειριστές μπορούν να εκμεταλλεύονται τα χαρακτηριστικά αυτά, χωρίς να χρειάζεται να γνωρίζουν PHP ή HTML.

Μονάδες

Ο αρθρωτός σχεδιασμός του Drupal επιτρέπει στους χρήστες που γνωρίζουν PHP να γράφουν μονάδες που υλοποιούν πρόσθετα χαρακτηριστικά. Ο ιστοτόπος του Drupal παρέχει εκατοντάδες μονάδες από χρήστες του Drupal που διατίθονται δωρεάν.

Οι μονάδες αυτές παρέχουν για παράδειγμα, δυνατότητες συστημάτων e-commerce, γκαλερί φωτογραφιών, σελίδες ομάδων ατόμων, χάρτες ιστοτόπου για το Google, αντικείμενα Amazon[5], διαχείριση λιστών ηλεκτρονικού ταχυδρομείου και ενσωμάτωση με ένα CVS.

Το Drupal ενσωματώνει τις μονάδες με τον πυρήνα μέσω ενός συστήματος από hook, ή callback, που επιτρέπει στις μονάδες να εισάγουν συναρτήσεις κατά το μονοπάτι εκτέλεσης του Drupal. Ο πυρήνας του Drupal παρέχει προστασία απέναντι σε πολλά προβλήματα ασφαλείας, όπως η έγχυση εντολών SQL (SQL injection).

Θεματικές παραλλαγές

Οι περισσότερες θεματικές παραλλαγές είναι γραμμένες με τη μηχανή PHPTemplate[6] ή την XTemplate[7]. Παλιότερες παραλλαγές χρησιμοποιούσαν γραμμένο στο χέρι κώδικα σε PHP.

Προηγούμενες εκδόσεις του συστήματος θεματικής παραλλαγής του Drupal είχαν δεχθεί κριτική[8] ότι ήταν λιγότερο προσανατολισμένο για τη σχεδίαση και περισσότερο πολύπλοκο από άλλα συστήματα όπως το Mambo και το Plone. Η συμπερίληψη στο Drupal των μηχανών PHPTemplate και XTemplate διόρθωσαν αυτά τα προβλήματα.

Παραδείγματα χρήσης του Drupal

Μερικοί από τους ρόλους που έχει αναλάβει το Drupal είναι εταιρικά intranet, on-line τάξεις, κοινότητες με θέμα τις τέχνες και διαχείριση έργων:

  • Η βιβλιοθήκη Ann Arbor District Library[9] χρησιμοποίησε το Drupal για τη δημιουργία ενός βραβευμένου ιστοτόπου[10], συμπεριλαμβάνοντας προσαρμοσμένα χαρακτηριστικά που προστέθηκαν, όπως η δημιουργία προσωποποιημένων καρτών καταλόγων από τους υπαλλήλους της βιβλιοθήκης.
  • Aspedia - the Web Company, μια αυστραλιανή εταιρία ανάπτυξης σε Drupal και παροχής φιλοξενίας ιστοσελίδων.
  • Διάφορες καμπάνιες πολιτικών, όπως αυτή του Jack Carter για Γερουσιαστής στη Νεβάδα, για τις οποίες δημιουργήθηκαν αρκετοί ιστοτόποι βασισμένοι σε Drupal.
  • CiviCRM, ένα συστατικό στοιχείο για ένα σύστημα διαχείρισης σχέσεων πελατών που ενσωματώνεται με το Drupal και το έχει μετατρέψει σε μια δημοφιλή πλατφόρμα για μη κερδοσκοπικούς οργανισμούς.[11]
  • Το Drupal χρησιμοποιήθηκε για τη δημιουργία τοπικών δημοσιογραφικών ιστοτόπων για πόλεις όπως το Bluffton, South Carolina[12] και το Watertown, Massachusetts[13].
  • Το Drupal χρησιμοποιήθηκε για τη δημιουργία του τύπου 43things ιστοτόπου Change Everything.
  • Με τον ερχομό της μονάδας Revision Moderation, η δημιουργία εφαρμογών όπως σχολικοί ιστοτόποι που έχουν τάξεις τύπου "Advanced Web" γίνεται πιο εφικτή.

Αναφορές

 

Είναι το Drupal κατάλληλο για εμένα;

Πηγή: http://drupal.org/handbook/is-drupal-right-for-you
Το Drupal είναι ένα ευέλικτο και προσαρμόσιμο σύστημα διαχείρισης περιεχομένου και πριν απαντήσουμε στο ερώτημα αν το Drupal είναι κατάλληλο για εσένα ας δούμε τι κατηγορία χρήστης Drupal είσαι και ποιές είναι οι ανάγκες σου.
Στην ακόλουθη λίστα είναι οι συνηθισμένες κατηγορίες χρήστη Drupal που συνοδεύονται με τις απαιτήσεις που έχει η κάθε μία από αυτές :
Είμαι Blogger και χρειάζομαι ..

  • Ένα blog για έναν ή για πολλούς χρήστες
  • Κατηγοριοποίηση περιεχομένου
  • Σχόλια
  • Trackbacks
  • Προσαρμόσιμο θέμα εμφάνισης
  • Εικόνες και video με την χρησιμοποίηση αντίστοιχων modules

Δεξιότητες που απαιτούνται: τελικού χρήστη, διαχειριστή
Αξιολογώ το Drupal για τον οργανισμό / επιχείρησή μου και χρειάζομαι ...

  • Ρόλους χρηστών και παραμετροποιημένη πρόσβαση
  • Καλοδομημένο και ασφαλές CMS
  • Επεκτάσιμο CMS
  • Παραμετροποίηση των υφιστάμενων δυνατοτήτων για να καλύψουν τις ανάγκες της επιχείρησης
  • Κατηγοριοποίηση περιεχομένου

Δεξιότητες που απαιτούνται: τελικού χρήστη, διαχειριστή
Είμαι υπεύθυνος μίας οργάνωσης και χρειάζομαι...

  • Μηχανισμούς για τα μέλη της κοινότητας να μοιράζονται της απόψεις τους (blog, forum, αρχεία, φωτογραφίες κτλ )
  • Μηχανισμούς αυτοοργάνωσης κοινοτήτών
  • Μηχανισμούς διαχείρισης εθελοντών
  • Δημιουργία & διαχείριση τεκμηρίωσης
  • Ρόλους χρηστών και παραμετροποιημένη πρόσβαση

Δεξιότητες που απαιτούνται: αξιολογητή, τελικού χρήστη, δημιουργού ιστότοπων (για κάποιες επιπλέον δυνατότητες )
Είμαι ιδιοκτήτης μίας μικρής επιχείρησης και χρειάζομαι:

  • Να φτιάξω το site της επιχείρησης
  • Να φτιάξω το θέμα και τα γραφικά του site
  • Ρόλους χρηστών και παραμετροποιημένη πρόσβαση
  • Παραμετροποιήσιμο σύστημα για να μπορεί να προσαρμοστεί στις απαιτήσεις της επιχείρησης.
  • Κατηγοριοποίηση περιεχομένου
  • Μηχανισμό ηλεκτρονικών αγορών (μηχανισμό πιστωτικής κάρτας, καλάθι αγορών)
  • Ανάπτυξη εφαρμογών για να αποκτήσει δυνατότητες που βοηθούν την λειτουργία της επιχείρησης

Δεξιότητες που απαιτούνται: αξιολογητή, τελικού χρήστη, δημιουργού ιστότοπων (για κάποιες επιπλέον δυνατότητες )
Είμαι προγραμματιστής και θέλω:

  • Καλοδομημένο, καθαρογραμμένο, καλοσχεδιασμένο παραμετροποίησιμο σύστημα που να μπορώ να το επεκτείνω γράφοντας τις δικές μου εφαρμογές
  • Τεκμηριωμένο API
  • Τεκμηρίωση αρχιτεκτονικής συστήματος και πρότυπα κώδικα
  • Κοινότητα προγραμματιστών

Δεξιότητες που απαιτούνται: Διαχειριστές συστήματος, Προγραμματισμό
Δεν ξέρετε τι τύπος χρήστης Drupal είστε; Ρίξτέ μια ματιά στην παρακάτω λίστα με της δεξιότητες που απαιτεί ο κάθε τύπος:

  • Aξιολογητή: εξοικειωμένος με την ορολογία και την λειτουργία του web
  • Τελικός χρήστης:εξοικειωμένος με την πλοήγηση στο web, υποβολή σελίδων και επιλογών
  • Διαχειριστή συστήματος: διαχείριση ρόλων χρηστών, διαχείριση θεμάτων, διαχείριση και κατηγοριοποίηση περιεχομένου, παραμετροποίηση module, εγκατάσταση & αναβάθμιση Drupal
  • Δημιουργό ιστότοπων: εγκατάσταση προγραμμάτων, σχεδίαση θέματος (ανάπτυξη css & λίγο προγραμματισμό σε php), κατασκευή και ανάπτυξη ιστότοπων, να δουλεύει σε LAMB – XAMPP
  • Προγραμματισμός: Προγραμματισμός σε php, διαχείριση βάσεων δεδομένων, κατανόηση και προγραμματισμό με βάση των API, σχεδιασμό βάσεων δεδομένων.

Προβλήματα με Ελληνικά

Πρόσφατα αντιμετώπιζα προβλήματα με Ελληνικούς χαρακτήρες. Μετά από αρκετές ενέργειες κατάφερα να διορθώσω το πρόβλημα. Παρακάτω είναι τα βήματα που ακολούθησα.

Εισαγωγή
Για να υποστηρίζονται τα Ελληνικά στο σύστημα Drupal που θέλουμε να εγκαταστήσουμε θα πρέπει να χρησιμοποιήσουμε κωδικοποίηση UTF-8 (1).

1. HTML Οντότητες
Βεβαιωθείτε ότι το charset που χρησιμοποιείται στο header είναι UTF-8. Αυτό μπορεί να ελέγχει εύκολα εάν δείτε το κώδικα μιας σελίδας του συστήματος Drupal. Πρέπει να περιλαμβάνει στην αρχή το εξής:

meta http-equiv="Content-Type" content="text/html; charset=utf-8" 

2. Πίνακες Βάσης Δεδομένων
Βεβαιωθείτε ότι είναι κάτω από κωδικοποίηση UTF-8. Μπορούν να χρησιμοποιηθούν 2 callations, utf_8_general_cι και utf_unicode_cι. Γενικά το utf_unicode_cι collation είναι πιο μεγάλο και πιο αργό. (2), (3)

Εάν δεν θα δημιουργηθούν τεράστιοι πίνακες στη βάση σας, καλύτερα να επιλέξετε utf_8_general_cι.

Εάν οι πίνακες της βάσης δεδομένων έχουν κάποιο άλλο collation τότε πρέπει να αλλαχτούν. Το καλύτερο είναι να γίνουν export τα δεδομένα, αλλαγή του character set και collation και import τα δεδομένα πάλι.

ALTER DATABASE db_name
	CHARACTER SET utf8
	DEFAULT CHARACTER SET utf8
	COLLATE utf8_general_ci
	DEFAULT COLLATE utf8_general_ci;

3. mbstring extension
Το mbstring (4) είναι ένα extension του PHP για μετατροπές κωδικοποιημένων σχημάτων χαρακτήρων (λίγο φτωχή μετάφραση αλλα δεν πειράζει!). Τρέχοντας τη συνάρτηση phpinfo() θα ανακαλύψετε εάν είναι εγκατεστημένο στο σύστημα σας.
Η διαμόρφωση πρέπει να γίνει στο php.ini η στο .htaccess σε shared hosting.

mbstring.language		= Neutral	; Set default language to Neutral(UTF-8) (default)
mbstring.internal_encoding	= UTF-8		; Set default internal encoding to UTF-8
mbstring.encoding_translation	= On		;  HTTP input encoding translation is enabled
mbstring.http_input		= auto		; Set HTTP input character set dectection to auto
mbstring.http_output		= UTF-8		; Set HTTP output encoding to UTF-8
mbstring.detect_order		= auto		; Set default character encoding detection order to auto
mbstring.substitute_character	= none		; Do not print invalid characters
default_charset			= UTF-8		; Default character set for auto content type header

4. Τελευταία Λύση: Θα μιλήσεις UTF-8 θέλεις δεν θέλεις!
Πριν από κάθε σύνδεση με τη βάση δεδομένων χρησιμοποιήστε τις πιο κάτω εντολές για να αναγκάσετε το PHP να μιλήσει UTF-8.

db_query("SET CHARACTER SET 'utf8'");
db_query("SET NAMES 'utf8'");

Πηγες:
1. Unicode Tutorial
2. stackoverflow:difference between utf8_general_ci and utf8_unicode_ci
3. mysql forums:difference between utf8_general_ci and utf8_unicode_ci
4. Multibyte String Functions