OpenCart-Hellas 

Η Ελληνική κοινότητα υποστήριξης του Opencart

Θέματα που αφορούν τη γενικότερη λειτουργία του Opencart.
#8157
Καλησπέρα σε όλους.
Αντιμετωπίζω το εξής πρόβλημα και δεν μπορώ να καταλάβω την πηγή του.
Έχω δημιουργήσει κάποια custom πεδία (όπως ΑΦΜ, ΔΟΥ κλπ), που συμπληρώνει ο πελάτης που θέλει να κόψει τιμολόγιο και όχι απόδειξη κατά την διαδικασία του checkout.
Όταν πέφτει η παραγγελία, μέσα στο διαχειριστικό του opencart το περιεχόμενο των custom πεδίων φαίνεται κανονικά στα Ελληνικά. Όταν όμως τα δεδομένα αυτά στέλνονται στο entersoft (που είναι το διαχειριστικό πρόγραμμα που χρησιμοποιεί το κατάστημα), τότε εκεί το περιεχόμενο πηγαίνει με λάθος κωδικοποίηση (π.χ. \u03a7\u03b9\u03bf\u03c5).
Που μπορεί να οφείλεται αυτό το γεγονός; Υπάρχει τρόπος να διορθωθεί;
Σας ευχαριστώ
#8158
Καλησπέρα.

Παρακαλώ μην ποστάρετε το ίδιο θέμα και στο Facebook group και στο φόρουμ. Διαλέξτε ένα από τα δύο.

- Σχετικά με το πρόβλημα που ανέφερες ότι τα δεδομένα κατεβαίνουν στο entersoft με λάθος κωδικοποίηση, ο τεχνικός σας χρειάζεται να ελέγξει αν κάνει σωστά αποκωδικοποίηση του json του προσαρμοσμένου πεδίου όπως το λαμβάνει από τη βάση. Ελέγξτε αν κάνετε κάτι σαν πχ json_decode($query->row['custom_field'], true).

- Όντως τα Ελληνικά στα προσαρμοσμένα πεδία καταχωρούνται ως UTF8 entities, ωστόσο, με την αποκωδικοποίηση θα έπρεπε να λαμβάνετε τους σωστούς χαρακτήρες.

- Αν επιθυμείτε να μην καταχωρούνται τα Ελληνικά ως entities στη βάση, μπορείτε να τροποποιήσετε το json_encode($data['custom_field']) στο model του order σε json_encode($data['custom_field'], JSON_UNESCAPED_UNICODE). Υπάρχει και σχετικό θέμα στο φόρουμ: viewtopic.php?p=6393
#8159
Συγχωρέστε μου την διπλότυπη ανάρτηση.
Θα δοκιμάσω αύριο την λύση που προτείνετε κι αν αντιμετωπίσω κάποιο πρόβλημα θα επανέλθω.
Σας ευχαριστώ πολύ για την απάντηση.
#8162
Στο αρχείο catalog/model/journal3/order.php, δεν βρίσκω πουθενά την γραμμή κώδικα: json_encode($data['custom_field']) που αναφέρατε. Αντίθετα βρίσκω την εξής γραμμή κώδικα

'custom_field' => json_decode($order_query->row['custom_field'], true),

Αυτήν πρέπει να αλλάξω;
#8163
Καλησπέρα,

Όπως ανέφερα και προηγουμένως, ο λόγος που λαμβάνετε λάθος τα πεδία στο entersoft οφείλεται πιθανότατα στο ότι δεν κάνετε json_decode, το προσαρμοσμένο πεδίο πριν το στείλετε στο entersoft. Αν δεν κάνετε αυτό, το πεδίο δεν αποστέλλεται ως array αλλά ως json encoded text και δεν αποκωδικοποιείται σωστά.

Επίσης, δεν γνωρίζω τι encoding έχει εσωτερικά το entersoft. Αν δεν χρησιμοποιεί UTF8, εκτός των παραπάνω, χρειάζεται να κάνετε και κωδικοποίηση όλου του array των δεδομένων που στέλνετε στο entersoft από UTF8 (OpenCart) στην κωδικοποίηση του entersoft.

Κώδικας: Επιλογή όλων
'custom_field' => json_decode($order_query->row['custom_field'], true),
Ναι αυτό είναι, και υπάρχει και σε άλλα σημεία στο OpenCart. Tο παράδειγμα που σου έδωσα πριν ήταν ένας generic κώδικας για μία τέτοια λειτουργία. Αυτή η αλλαγή θα σε βοηθήσει μόνο αν θες να βλέπεις τις καταχωρήσεις στη βάση στα Ελληνικά. Δεν σχετίζεται με την σωστή μεταφορά δεδομένων στο entersoft.
#8165
Καλησπέρα σας,

Σας ανέφερα τι χρειάζεται να κάνετε εξ αρχής:
- Σχετικά με το πρόβλημα που ανέφερες ότι τα δεδομένα κατεβαίνουν στο entersoft με λάθος κωδικοποίηση, ο τεχνικός σας χρειάζεται να ελέγξει αν κάνει σωστά αποκωδικοποίηση του json του προσαρμοσμένου πεδίου όπως το λαμβάνει από τη βάση. Ελέγξτε αν κάνετε κάτι σαν πχ json_decode($query->row['custom_field'], true).
Δεν είναι πρόβλημα του OpenCart και δεν χρειάζεται να κάνετε κάτι στο OpenCart. Χρειάζεται ο τεχνικός σας που έφτιαξε τη γέφυρα του entersoft να ελέγξει που είναι το πρόβλημα με το decoding του προσαρμοσμένου πεδίου στον δικό του κώδικα και να το διορθώσει. Με το παραπάνω έκανα μία πρόταση σχετικά με το τι να ελέγξει.

Όσον αφορά τα υπόλοιπα, θέσατε ένα ερώτημα και για να είναι πιο πλήρης η απάντηση, σας εξήγησα και πως να μετατρέπετε τους χαρακτήρες στα JSON των προσαρμοσμένων πεδίων από entities σε κανονικούς χαρακτήρες και έχετε σταθεί σε αυτό. Ωστόσο, αυτό δεν αφορά τη διασύνδεση με το entersoft, αλλά μόνο για την ευκολότερη αναζήτηση κειμένου στα JSON των προσαρμοσμένων πεδίων.

Υπάρχει κάποιο extension ή τρόπος να δημιουργηθεί […]

Καλησπέρα. Προτείνω να διαβάσεις πρώτα αυτό το σ[…]

Καλησπέρα, Το site το έστησες μόνος σου;

Καλησπέρα, Δοκίμασε να τροποποιήσεις το /library/[…]

Πριν ζητήσετε βοήθεια στο φόρουμ, παρακαλούμε ελέγξτε αν υπάρχει έτοιμη λύση στο OpenCart Extension Marketplace!