OpenCart-Hellas 

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

Θέματα που αφορούν τη γενικότερη λειτουργία του Opencart.
#7575
Καλησπέρα στην ομάδα του Opecart-hellas

Θα ήθελα να ρωτήσω αν υπάρχει η δυνατότητα κατά την αναζήτηση ενός προϊόντος με τον κωδικό του σε περίπτωση που μεσολαβεί παύλα ανάμεσα στα νούμερα να κάνει match η αναζήτηση και να το εμφανίζει.
Για παράδειγμα έχω εναν κωδικό
"10-101" όταν τον αναζητώ ως "10101"
χωρίς την παύλα να μπορεί να κάνει match στην αναζήτηση.

Opencart Version 2.3.0.2 - Theme Verito

Ευχαριστώ πολύ εκ των προτέρων για τον χρόνο σας
Τελευταία επεξεργασία από το μέλος agathon την 28 Οκτ 2021, 19:10, έχει επεξεργασθεί 1 φορά συνολικά.
#7576
Καλησπέρα,

Τα πάντα γίνονται και είναι θέμα χρόνου και κόστους. Αυτό που ανέφερες γίνεται με custom τροποποίηση. Παλιά είχα φτιάξει μία τέτοια custom επέκταση σε πελάτη η οποία έκανε αναζήτηση με αυτό που θες και με επιπλέον δυνατότητες όπως ταχύτητα αναζήτησης, προτεραιότητα αποτελεσμάτων σε κύρια προϊόντα έναντι των αξεσουάρ του ιδίου κατασκευαστή, κλπ. Ήταν για έκδοση 2.1.0.2 με journal 2, αλλά όπως συμβαίνει με πολλές αντίστοιχες "one-off" επεκτάσεις, δεν είχα χρόνο να την φτιάξω για νεότερες εκδόσεις. Έχεις ψάξει στο marketplace υπάρχει κάτι ανάλογο;
#7580
Καλησπέρα,
Στο marketplace δεν έψαξα απλά βρήκα κάποια αποτελέσματα από τα forum του opencart.com

Αναφέρουν το path "catalog/model/catalog/product.php"

Αντικατάσταση το
$sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
με αυτό
$sql .= " OR p.model LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "%'";
το δοκίμασα χωρίς αποτέλεσμα.

Αντίστοιχα στο admin search ανέφεραν για έκδοση 1.5.3.1
if (!empty($data['filter_name'])) {
$sql .= " AND LCASE(pd.name) LIKE '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "%'";
}
Επιπλέον για το path "admin/model/catalog/product.php"

Αντικατατάσταση
$sql .= " AND LCASE(pd.name) LIKE '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "%'";
με
$sql .= " AND LCASE(pd.name) LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "%'";
Οι παραπομπές από τα forum είναι εδω https://forum.opencart.com/viewtopic.php?t=67697
και https://forum.opencart.com/viewtopic.php?t=135837

Νομίζω είμαι κοντά όσο αναφορά το αρχείο και την γραμμή που πρέπει να αλλάξω αλλά κολλάω σε αυτό το σημείο και δεν μπορώ να το ολοκληρώσω.
#7585
Καλησπέρα,

Θα έλεγα ότι δεν είναι κοντά σε αυτό που θες. Ο κώδικας που αναφέρεις μετατρέπει τους χαρακτήρες σε πεζούς. Εσύ χρειάζεσαι κάτι που είτε να ψάχνει στη βάση σε κάποιου τύπου "normalized" text ή για νεότερες εκδόσεις MySQL/MariaDB να χρησιμοποιεί regular expressions στο SELECT που να αφαιρεί τους special χαρακτήρες. Κάνε μία έρευνα για PCRE, regular expressions, regex στην έκδοση MySQL/MariaDB που χρησιμοποιείς.
#7593
Καλησπέρα Αλεξάνδρα,

Κατα αρχάς ευχαριστώ για τον χρόνο σου. Επειδή δεν κατάφερα να βρώ σε ποιό σημείο υπάρχει το κομμάτι του κώδικα που κάνει αυτόν τον έλεγχο για το product model, δοκίμασα μια πιο "μπακαλίστικη" μέθοδο για να καταφέρω το ίδιο αποτέλεσμα.

Εγκατέστησα αυτό το extension https://www.opencart.com/index.php?rout ... n_id=22288
έτσι ώστε να μπορώ να παίρνω αποτέλεσμα στο search ακόμα και όταν ψάχνω με το mpn.

Στην συνέχεια πήγα στην βάση και εκτέλεσα τα εξής ερωτήματα
Κώδικας: Επιλογή όλων
UPDATE `oc_product` SET mpn=model;

UPDATE `oc_product` SET mpn= replace(mpn,'-','') where mpn LIKE '%-%';
Οπότε αντέγραψα το πεδίο model πχ. 10-101 στο πεδίο mpn ακριβώς το ίδιο 10-101 και στην συνέχεια έκανα replace στο mpn τις παύλες και αντικατέστησε το πεδίο mpn με 10101. Οπότε τώρα ψάχνοντας με τον κωδικό χωρίς παύλα παίρνω το αποτέλεσμα που θέλω.
#7594
Καλημέρα,

Οκ, προτείνω να κάνεις μία τροποποίηση να χρησιμοποιείς το JAN που είναι περιττό σε Ελληνικά καταστήματα, γιατί το MPN χρειάζεται σε υλοποιήσεις Skroutz XML.

Καλησπέρα σας, σε έκδοση 3 γνωρίζεται κάποιο modul[…]

Καλησπέρα σας, Θα ήθελα μια βοήθεια σχετικά με το[…]

Καλημέρα και καλή εβδομάδα. Έκανα την αλλαγή που ε[…]

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