Page 1 of 1

Σωστη Εγκατασταση Opencart

Posted: Thu Nov 01, 2012 11:15 pm
by corpus
Επειδή πολλοί φίλοι εγκαθιστούν το opencart as is και με το default collation utf8_bin
αναφέρω ποια είναι τα σωστά βήματα για να έχουμε σωστά ελληνικά στην database

Πριν την εγκατάσταση αφου δημιουργήσουμε την βάση μας πάμε στο phpmyadmin, επιλεγουμε την βάση μας και μετα Operations και στο πεδίο Collation: επιλέγουμε απο το dropdown utf8_general_ci και πατάμε το Go ή εκτέλεση

αμέσως μετά ανοιγουμε το αρχειο opencart.sql στην διαδρομή upload/install/
και αντικαθιστούμε τα
utf8_bin
με
utf8_general_ci

Αν κάποιος έχει να συμπληρώσει/διορθώσει κάτι ευπρόσδεκτος

Re: Σωστη Εγκατασταση Opencart

Posted: Fri Nov 02, 2012 12:48 am
by People's Code
αναφέρω ποια είναι τα σωστά βήματα για να έχουμε σωστά ελληνικά στην database

Τι εννοείς σωστά ελληνικά ?

Re: Σωστη Εγκατασταση Opencart

Posted: Fri Nov 02, 2012 3:00 am
by corpus
να εμφανίζονται σωστά τα ελληνικά στην database
και όχι
ce9acebfcf81ceb4ceadcebbceb5cf82

μόλις διάβασα και αυτό το post
http://forum.opencart.com/viewtopic.php?t=25488

Re: Σωστη Εγκατασταση Opencart

Posted: Fri Nov 02, 2012 11:06 pm
by People's Code
να εμφανίζονται σωστά τα ελληνικά στην database
και όχι
ce9acebfcf81ceb4ceadcebbceb5cf82
Αυτό ισχύει και για τα Αγγλικά και για τα Ελληνικά. Δεν πρόκειται για κάποιο πρόβλημα με την εισαγωγή Ελληνικών χαρακτήρων. Αυτό μπορείς να το διαπιστώσεις αν πας στο phpmyadmin και κάνεις edit κάποιο column που έχει BLOB. Θα δεις ότι τα κείμενα είναι "plain text".
Γενικά για να εμφανίσεις τα κείμενα των BLOB στο phpmyadmin, πατάς Options (βρίσκεται πάνω αριστερά από κάθε table, πάνω από το T), και τικάρεις μόνο τα "Show binary contents" και "Show BLOB contents". Αν θες να εμφανιστεί όλο το κέιμενο επιλέγεις επίσης "Full texts".

Όταν κάνεις export τη βάση δεδομένων, αν δεν θες να έχεις στο αρχείο sql τα κείμενα ως ce9acebfcf81ceb4ceadcebbceb5cf82 ... , επιλέγεις Custom - display all possible options και ξετικάρεις το "Dump binary columns in hexadecimal notation (for example, "abc" becomes 0x616263)"

Σχετικά με την επιλογή του collation utf8_general_ci ...
Το collation είναι στην ουσία κανόνες βάσει των οποίων γίνεται η ταξινόμηση των αποτελεσμάτων ενός query.
Με utf8_general_ci η ταξινόμηση γίνεται χωρίς να λαμβάνονται υπόψιν κεφαλαία, πεζά και τόνοι .

πχ
Έχουμε καταχωρήσει ένα προϊόν άσπρο στη βάση
1. Με collation utf8_general_ci
Κάνοντας αναζήτηση δίνοντας τη λέξη ΑΣΠΡΟ ή ασπρο, θα έχουμε αποτέλεσμα το προϊόν άσπρο γιατί στο collation αυτό δεν υπάρχει διαφορά μεταξύ του χαρακτήρα ά και του α.

2. Με collation utf8_bin
Κάνοντας αναζήτηση δίνοντας τη λέξη ΑΣΠΡΟ ή ασπρο ... δε θα έχουμε κανένα αποτέλεσμα γιατί στο collation αυτό υπάρχει διαχωρισμός μεταξύ του χαρακτήρα ά και του α.

Με μία πρώτη ανάγνωση κάποιος θα πει εύλογα ... ε τότε πάμε σε utf8_general_ci ...
Η επιλογή αυτή μπορεί να διευκολύνει την αναζήτηση χωρίς τόνους, αλλά λόγω της "χαλαρής" διάκρισης που κάνει στους χαρακτήρες δεν έχει τόσο ακριβή αποτελέσματα στην σειρά εμφάνισης των προϊόντων σε κάποιο κατάλογο.
Η τελική επιλογή του collation είναι ένας συμβιβασμός αναλόγως που θέλεις να δώσεις περισσότερο βάση. (Επίσης σε κάποιες εξαιρετικές περιπτώσεις λόγω κακού σχεδιασμού της βάσης, αυτή η έλλειψη διάκρισης μπορεί να δημιουργήσει errors σε καταχωρήσεις)

Πάντως θα συμφωνήσω κι εγώ με το post που ανέφερες, εφόσον τόσα χρόνια μια χαρά στήναμε sites με utf8_general_ci και utf8_unicode_ci.

Re: Σωστη Εγκατασταση Opencart

Posted: Sat Nov 03, 2012 3:34 am
by corpus
αναλυτική η απάντηση σου
έμαθα πράγματα που δεν γνώριζα
δεν έχει τόσο ακριβή αποτελέσματα στην σειρά εμφάνισης των προϊόντων σε κάποιο κατάλογο
όταν λες κατάλογο εννοείς στο frontend του site ? αυτό είναι σοβαρό
Επίσης σε κάποιες εξαιρετικές περιπτώσεις λόγω κακού σχεδιασμού της βάσης, αυτή η έλλειψη διάκρισης μπορεί να δημιουργήσει errors σε καταχωρήσεις
έχεις αντιμετωπίσει τέτοια προβλήματα εσύ;

εσύ ποιο collation χρησιμοποιείς για τα δικά σου site και τις ανάγκες σου;

Re: Σωστη Εγκατασταση Opencart

Posted: Sun Nov 04, 2012 1:51 am
by People's Code
όταν λες κατάλογο εννοείς στο frontend του site ? αυτό είναι σοβαρό
Ναι, και οπουδήποτε αλλού εμφανίζεται ταξινομημένη λίστα. Πρακτικά δεν είναι τόσο σοβαρό, εφόσον δεν εμφανίζει ελλειπή αποτελέσματα (το αντίθετο), απλά η αλφαβητική σειρά εμφάνισης δεν επηρεάζεται από τους παράγοντες που ανέφερα προηγουμένως.
έχεις αντιμετωπίσει τέτοια προβλήματα εσύ;
Όχι , προσωπικά δεν είχα ποτέ πρόβλημα.
Για να αντιμετωπίσεις πρόβλημα πρέπει συμπέσουν τα εξής:
1. Να υπάρχει κάποιο query που να ψάχνει σε κάποιο table column μία μοναδική λέξη για να κάνει κάτι (πχ να εισάγει κάτι μόνο εκεί, ή για έλεγχο username, email κλπ)
2. Το table column να περιέχει την λέξη πάνω από μία φορά τονισμένη διαφορετικά.
(αυτό είναι πιθανότερο να συμβεί σε ένα forum που οι επισκέπτες από διάφορες χώρες μπορούν να γράψουν κάτι σε μια γλώσσα σκανδιναβική ή στα γερμανικά με τόνους και το ίδιο κείμενο να υπάρχει ήδη με απλούς αγγλικούς χαρακτήρες. Έχω δει επίσης μία αναφορά online για βάση δεδομένων που περιέχει αρχαία ελληνικά και ο χρήστης παραπονιέται για ανάλογα προβλήματα με λέξεις που τονίζονται διαφορετικά αλλά έχουν άλλο νόημα.)

Όμως στο Opencart δεν γίνεται να συμβούν τα παραπάνω γιατί ο developer (κυρίως για λόγους ασφαλείας) έχει φροντίσει τα queries - τα περισσότερα που έχω δει τουλάχιστο - να αναζητούν αριθμητικό ID και μάλιστα φροντίζει να υπάρχει πάντα type casting σε (int) για να είναι 100% βέβαιο ότι το query θα είναι αριθμός.
εσύ ποιο collation χρησιμοποιείς για τα δικά σου site και τις ανάγκες σου;
Εγώ παραμένω στο αρχικό collation και γενικά προσπαθώ να τροποποιώ τις εφαρμογές μόνο εκεί που είναι απολύτως απαραίτητο σύμφωνα με τις προδιαγραφές που έχει θέσει ο πελάτης αρχικά. Όσο περισσότερες αλλαγές έχεις κάνει, τόσο ποιο χρονοβόρες ενδέχεται να αποβούν μελλοντικές κινήσεις αναβάθμισης. Αν πάμε στη λογική να υπάρχουν queries χωρίς τόνο, μετά προκύπτει λογικά η ανάγκη να υπάρχει script που να ελέγχει κάποιο λεξικό ή λεξικά για ορθογραφικά λάθη και να ψάχνει πολλές πιθανές λέξεις, μετά γιατί να μην πάμε και στη λογική της αναγνώρισης των greeklish κλπ κλπ κλπ.

Re: Σωστη Εγκατασταση Opencart

Posted: Sun Nov 18, 2012 11:24 pm
by spontes
συγγνώμη για να καταλάβω καλά.Το opencart γίνετε εγκατάσταση σε ξεχωριστή databe? Δεν μπαίνει σαν component μέσα στο joomla?

Re: Σωστη Εγκατασταση Opencart

Posted: Mon Nov 19, 2012 6:45 pm
by People's Code
Είναι αυτόνομο, δεν χρειάζεται κάποιο cms.

Re: Σωστη Εγκατασταση Opencart

Posted: Sun Nov 25, 2012 7:10 am
by intelcom
Και αν πχ δεν το έχουμε έτσι και μέσα στο phpMyadmin μας έχει sto description των προϊόντων τέτοιους χαρακτήρες:
<p>
IP &Kappa;ά&mu;&epsilon;&rho;&alpha; &mu;&epsilon;

Γίνετε να τους αλλάξουμε σε κανονικούς έτσι πως αναφέρεις?

Re: Σωστη Εγκατασταση Opencart

Posted: Sun Nov 25, 2012 6:14 pm
by People's Code
Προηγουμένως ανέφερα ότι οι χαρακτήρες εμφανίζονται διαφορετικά στο phpmyadmin αλλά είναι καταχωρημένοι σωστά και είναι θέμα ρύθμισης να τους κάνεις να εμφανίζονται ως κείμενο.

Σε εσένα συμβαίνει ακριβώς το αντίθετο. Τα &alpha;&beta;&gamma;&delta;&epsilon; είναι html entities και δεν είναι σωστό που καταχωρήθηκαν έτσι, γιατί κάθε γράμμα καταλαμβάνει περισσότερο χωρο και τα κείμενα δεν είναι ευανάγνωστα στη βάση.

Δε μπορείς να μετατρέψεις τους χαρακτήρες σε κανονικούς από το phpmyadmin. Χρειάζεσαι κάποιο script για αυτή τη δουλειά.

Αν εισήγαγες τα δεδομένα στη βάση σου με το import/export tool τότε μπορείς να τα ξανακαταχωρήσεις σωστά αν κάνεις μία απλή μετατροπή στο κώδικα της εφαρμογής. Διάβασε εδώ.

Συμβαίνει συχνά σε εφαρμογές που έχουν φτιαχτεί από developers που μιλούν γλώσσες με λατινικό αλφάβητο να μην λαμβάνουν υπόψη τους τι θα συμβεί αν το κείμενο περιέχει multibyte χαρακτήρες όπως τα ελληνικά και περάσει από το htmlentities().

Re: Σωστη Εγκατασταση Opencart

Posted: Mon Nov 26, 2012 5:17 am
by intelcom
Λοιπόν τι έκανα... Έκανα ένα καινούργιο install του opencart σε ένα demo domain. έκανα όλα όσα περιέγραψες και έβαλα μόνο το import/export με τις αλλαγές που περιγράφει στο thread που μου έστειλες. Και όλα περαστήκαν κανονικά μέσα στην βάση.... τα ονόματα τον προϊόντων τώρα είναι σωστά, αλλά η περιγραφή παραμένει να είναι σε αυτή την μορφή...

Αν όμως φτιάχνω από την αρχή το eshop πρώτα σε demo και μετά μεταφορά στο κανονικό domain-hosting, τι θα γίνει με τους υπέχοντες χρήστες, παραγγελίες κτλ κτλ κτλ που το import export δεν μπορεί να τα πάρει???

Ξέρουμε κάποιο scripts όπως ανάφερες που μπορεί να κάνει αυτή την δουλειά???

Re: Σωστη Εγκατασταση Opencart

Posted: Mon Nov 26, 2012 4:35 pm
by People's Code
Και όλα περαστήκαν κανονικά μέσα στην βάση.... τα ονόματα τον προϊόντων τώρα είναι σωστά, αλλά η περιγραφή παραμένει να είναι σε αυτή την μορφή..
Ρίξε μια ματιά μήπως έχεις παραλείψει τη γραμμή 491 ...
τι θα γίνει με τους υπέχοντες χρήστες, παραγγελίες κτλ κτλ κτλ που το import export δεν μπορεί να τα πάρει???
Ξέρουμε κάποιο scripts όπως ανάφερες που μπορεί να κάνει αυτή την δουλειά???
Δεν έχω κάτι έτοιμο γιατί δε μου χρειάστηκε ...
Θα βρεις διάφορα παραδείγματα online, αλλά θα πρέπει να γνωρίζεις να τα τροποποιήσεις στις ανάγκες σου...
Η συμβουλή μου είναι εφόσον διορθώσεις τη βάση, άφησε τις παλιές παραγγελίες ως έχουν.

Re: Σωστη Εγκατασταση Opencart

Posted: Tue Nov 27, 2012 4:00 am
by intelcom

Code: Select all

Line 437: 	$name = htmlspecialchars( $name, ENT_QUOTES, $this->detect_encoding($name) ENT_COMPAT, 'UTF-8');
Line 474: 	$description = htmlspecialchars( $description, ENT_QUOTES, $this->detect_encoding($description) ENT_COMPAT, 'UTF-8' );
Line 476: 	$meta_description = htmlspecialchars( $meta_description, ENT_QUOTES, $this->detect_encoding($meta_description) ENT_COMPAT, 'UTF-8');
Line 478: 	$meta_keywords = htmlspecialchars( $meta_keywords, ENT_QUOTES, $this->detect_encoding($meta_keywords) ENT_COMPAT, 'UTF-8');
Line 484: 	$tags = htmlspecialchars( $tags, ENT_QUOTES, $this->detect_encoding($tags) ENT_COMPAT, 'UTF-8');
Line 664: 	$name = htmlspecialchars( $name, ENT_QUOTES, $this->detect_encoding($name) ENT_COMPAT, 'UTF-8' );
Line 679: 	$description = htmlspecialchars( $description, ENT_QUOTES, $this->detect_encoding($description) ENT_COMPAT, 'UTF-8' );
Line 681: 	$meta_description = htmlspecialchars( $meta_description, ENT_QUOTES, $this->detect_encoding($meta_description) ENT_COMPAT, 'UTF-8');
Line 683: 	$meta_keywords = htmlspecialchars( $meta_keywords, ENT_QUOTES, $this->detect_encoding($meta_keywords) ENT_COMPAT, 'UTF-8' );
Σωστο δεν ειναι??

Re: Σωστη Εγκατασταση Opencart

Posted: Tue Nov 27, 2012 4:27 pm
by People's Code
Όχι, είναι όλα λάθος ...

Ή θα το γράψεις έτσι που θα βρίσκει το encoding από το detect_encoding

Code: Select all

$name = htmlspecialchars($name, ENT_COMPAT, $this->detect_encoding($name));
ή έτσι που θα ορίζεις εσύ το encoding

Code: Select all

$name = htmlspecialchars($name, ENT_COMPAT, 'UTF-8');

Re: Σωστη Εγκατασταση Opencart

Posted: Fri Sep 27, 2013 12:09 am
by giannokostas
Γεια σας και από εμένα.

Έχω το εξής πρόβλημα και δεν ξέρω αν είναι θέμα κωδικοποίησης ή κάτι διαφορετικό.
Ονομάζω μία κατηγορία π.χ. Υπολογιστές (με πεζά και τονισμένο)...Εμφανίζεται κανονικά αλλά όταν σε κάποια σημεία εμφανίζεται με κεφαλαία γράμματα εμφανίζεται έτσι ΥΠΟΛΟΓΙΣΤΈΣ (έχει κρατήσει τον τόνο)...
Αυτό μπορεί να διορθωθεί με αλλαγή της κωδικοποίησης;Τι μπορώ να κάνω;

Ευχαριστώ

Re: Σωστη Εγκατασταση Opencart

Posted: Fri Sep 27, 2013 12:18 am
by People's Code
Αυτό οφείλεται στο css του template σου. Κάποιοι developers που δεν λαμβάνουν υπόψη τους ότι το template τους ενδέχεται να χρησιμοποιηθεί με γλώσσες που έχουν τόνους, χρησιμοποιούν το text-transform: uppercase;.

Στο φάκελο του template που χρησιμοποιείς, άνοιξε τα αρχεία με κατάληξη .css σε ένα σοβαρό text editor πχ notepad++ και κάνε αναζήτηση για text-transform. Όπου δεν το χρειάζεσαι, μπορείς να το διαγράψεις ή να το απενεργοποιήσεις αν το γράψεις έτσι /*text-transform: uppercase;*/