Πίσω στο Portfolio

XML Feed Manager for PrestaShop

Εξειδικευμένο PrestaShop module (v2.1.0) για την αυτόματη δημιουργία, συμπίεση GZip και καθαρισμό των XML feeds προϊόντων για το Skroutz και το Google Merchant Center.

Κατηγορία
Plug-ins & Modules
Πελάτης
DamiansLab (Bespoke E-Commerce Suite)
Έτος
2024 - 2026
Διάρκεια
Συνεχής εξέλιξη (v2.1.0)
Ρόλος
Lead Full-Stack & PrestaShop Module Architect
XML Feed Manager for PrestaShop

Η πρόκληση

Η διασύνδεση ενός ηλεκτρονικού καταστήματος PrestaShop με απαιτητικά κανάλια όπως το Skroutz και το Google Merchant Center σκοντάφτει συχνά σε δύο κρίσιμα εμπόδια: την ακαταλληλότητα του ακατέργαστου HTML των περιγραφών (ενσωματωμένα tags, εικόνες, SVGs και εικονίδια FontAwesome που προκαλούν απόρριψη των προϊόντων) και τα timeouts του web server κατά τη δημιουργία μεγάλων αρχείων XML.

Παράλληλα, οι διαχειριστές των e-shops χρειάζονται διαφορετική εμπορική πολιτική ανά κανάλι — για παράδειγμα, την εξαίρεση προϊόντων χωρίς barcode EAN13/GTIN από το Google Shopping χωρίς αυτά να αφαιρούνται από το Skroutz, καθώς και τον αποκλεισμό ολόκληρων κατηγοριών υπηρεσιών ή εκθεσιακών ειδών χωρίς επέμβαση στον κώδικα.

Τι φτιάχτηκε

Το XML Feed Manager (v2.1.0) είναι ένα εξειδικευμένο πρόσθετο (module) για το PrestaShop 1.7 και 8.x, σχεδιασμένο από τον Ηλία Δαμιανίδη (DamiansLab), το οποίο αυτοματοποιεί τη δημιουργία, το φιλτράρισμα και τον καθαρισμό των XML feeds προϊόντων για το Skroutz και το Google Merchant Center.

Περιβάλλον διαχείρισης XML Feed Manager v2.1.0 στο PrestaShop 8 με επιλογή κατηγοριών και εξαιρέσεων Κεντρική οθόνη διαχείρισης του XML Feed Manager v2.1.0 στο PrestaShop 8 Back-Office με το πρότυπο κεφαλίδας DamiansLab Chrome.

Αυτοματοποιημένη εξαγωγή καταλόγου για Skroutz και Google Shopping

Στη σύγχρονη ελληνική αγορά ηλεκτρονικού εμπορίου, η αξιόπιστη και αδιάλειπτη τροφοδοσία των marketplaces αποτελεί βασική προϋπόθεση πωλήσεων. Το XML Feed Manager αναπτύχθηκε για να αντικαταστήσει τα βαριά, δύσχρηστα γενικά πρόσθετα εξαγωγής με έναν γρήγορο, απόλυτα ελεγχόμενο μηχανισμό που σέβεται τους πόρους του server και τις αυστηρές προδιαγραφές κάθε πλατφόρμας.

Το module παράγει δύο ανεξάρτητα, πλήρως τυποποιημένα αρχεία εξόδου: το skroutz.xml (καθώς και το συμπιεσμένο skroutz.xml.gz επιπέδου 9) για το Skroutz Marketplace και το google.xml σε πρότυπο RSS 2.0 με το namespace xmlns:g="http://base.google.com/ns/1.0" για το Google Merchant Center.

Βασικές δυνατότητες και λειτουργικά χαρακτηριστικά

1. Ανεξάρτητος αποκλεισμός προϊόντων ανά κανάλι με Select2 Autocomplete

  • Ξεχωριστές λίστες εξαιρέσεων: Οι διαχειριστές μπορούν να εξαιρούν μεμονωμένα προϊόντα ειδικά από το Skroutz (XMLFEEDMANAGER_EXCLUDED_IDS_SKROUTZ) ή ειδικά από το Google Merchant (XMLFEEDMANAGER_EXCLUDED_IDS_GOOGLE).
  • Άμεση αναζήτηση Select2: Ενσωμάτωση πεδίων πολλαπλής επιλογής (multi-select dropdowns) με δυναμική αναζήτηση επί του ενεργού καταλόγου (Product::getProducts), επιτρέποντας τον ακαριαίο εντοπισμό κωδικών με βάση το ID ή την ονομασία.

2. Δενδροειδής επιλογή κατηγοριών και πλήρης ιεραρχία (Breadcrumbs)

  • Ενσωμάτωση HelperTreeCategories: Οπτική επιλογή των κατηγοριών προς εξαγωγή (XMLFEED_CATEGORY_IDS) απευθείας μέσα από το επίσημο δενδροειδές εργαλείο του PrestaShop.
  • Αυτόματη σύνθεση μονοπατιού κατηγορίας: Κατά την εξαγωγή, το module ανατρέχει στη μέθοδο getParentsCategories(), αφαιρεί τη ρίζα (Root) και συνθέτει την πλήρη ιεραρχία μονοπατιού (π.χ. Ηλεκτρονικοί Υπολογιστές > Περιφερειακά > Οθόνες) τόσο για το tag <category> του Skroutz όσο και για το <g:product_type> της Google.

3. Αλγόριθμος καθαρισμού HTML περιγραφών (cleanHtmlToSingleLine)

  • Εξάλειψη απορρίψεων από κακόβουλο ή περιττό markup: Όταν ενεργοποιείται ο διακόπτης XMLFEED_CLEAN_HTML, η συνάρτηση cleanHtmlToSingleLine() αφαιρεί αυτόματα ετικέτες <img>, ενσωματωμένα γραφικά <svg>...</svg>, εικονίδια <i> / FontAwesome classes και όλα τα HTML tags.
  • Ασφαλής ενθυλάκωση CDATA: Το καθαρό κείμενο συμπτύσσεται σε μία ενιαία γραμμή χωρίς περιττά κενά (preg_replace('/\s+/u', ' ', $text)) και τοποθετείται εντός CDATASection στα πεδία <short_description> και <description>.

4. Παραμετροποιήσιμα πεδία XML και συμπίεση GZip

  • Επιλογή από 15 εμπορικά και τεχνικά πεδία: Υποστήριξη για ID προϊόντος (UniqueID), όνομα, σύντομη και πλήρη περιγραφή, τιμή με ΦΠΑ (PriceVat), καθαρή τιμή χωρίς ΦΠΑ (price_without_vat), barcode EAN13 / g:gtin, κωδικό κατασκευαστή MPN / Reference, βάρος σε kg, διαστάσεις ΠxΥxΒ cm, ποσότητα αποθέματος, κατασκευαστή, εικόνα large_default και λεκτική διαθεσιμότητα.
  • Αυτόματη παραγωγή αρχείου .xml.gz: Το script εξαγωγής Skroutz δημιουργεί ταυτόχρονα συμπιεσμένο αντίγραφο skroutz.xml.gz μέσω gzencode($xml_content, 9), μειώνοντας τον όγκο μεταφοράς δεδομένων έως και 85%.

Οι οθόνες της εφαρμογής σε desktop και mobile

Σημείωση: Για λόγους προστασίας προσωπικών και εμπορικών δεδομένων, όλες οι οθόνες απεικονίζουν συνθετικά δεδομένα δοκιμών (εικονικό κατάστημα TechVault.gr).

Αποκλεισμός προϊόντων ανά κανάλι Skroutz και Google με Select2 autocomplete στο PrestaShop Ανεξάρτητος αποκλεισμός προϊόντων για το Skroutz και το Google Merchant με χρήση Select2 multi-select autocomplete. Δενδροειδής επιλογή κατηγοριών εξαγωγής XML στο PrestaShop 8 Δενδροειδής επιλογή κατηγοριών (HelperTreeCategories) για τον ακριβή έλεγχο των τμημάτων του καταλόγου που εξάγονται. Επιλογή πεδίων XML και διακόπτης καθαρισμού HTML περιγραφών στο PrestaShop Παραμετροποίηση των 15 διαθέσιμων πεδίων XML και ενεργοποίηση του αλγορίθμου cleanHtmlToSingleLine() για καθαρές περιγραφές. Κατάσταση παραγωγής αρχείων Skroutz XML, GZip και Google Merchant XML Πίνακας κατάστασης παραγόμενων feeds με συνδέσμους URL, χρονοσφραγίδες τελευταίας δημιουργίας και μεγέθη αρχείων XML/GZip. Προεπισκόπηση δομής κώδικα Skroutz XML με τιμές ΦΠΑ, MPN, EAN και CDATA Δομή του παραγόμενου αρχείου skroutz.xml με πλήρη ιεραρχία κατηγορίας, καθαρή τιμή, τιμή με ΦΠΑ, EAN, MPN και CDATA περιγραφές. Προεπισκόπηση Google Merchant Center XML feed με RSS 2.0 και namespace g: Δομή του παραγόμενου αρχείου google.xml (RSS 2.0, xmlns:g) συμβατή με τις προδιαγραφές του Google Merchant Center. Οδηγίες ρύθμισης Cron Jobs μέσω PHP CLI για αυτόματη παραγωγή XML feeds Οδηγίες αυτοματοποίησης μέσω Linux Cron Jobs (PHP CLI) και υπογραφή DamiansLab Module Standard στο υποσέλιδο. Mobile προβολή των ρυθμίσεων εξαιρέσεων και κατηγοριών του XML Feed Manager Responsive προβολή σε κινητό: διαχείριση εξαιρούμενων προϊόντων και επιλεγμένων κατηγοριών από smartphone. Mobile προβολή της κατάστασης των XML αρχείων και των κουμπιών άμεσης δημιουργίας Responsive προβολή σε κινητό: έλεγχος χρονοσφραγίδας των feeds και άμεση αναδημιουργία Skroutz και Google XML με ένα πάτημα.

Στο παρασκήνιο: Τεχνική αρχιτεκτονική

  • Αρχιτεκτονική PrestaShop MVC: Υλοποίηση με κύρια κλάση xmlfeedmanager, AdminXmlFeedManagerConfigureController για το Back-Office και xmlfeedmanagerModuleFrontController (controllers/front/feed.php) για τη δυναμική διάθεση των feeds μέσω ?type=google ή skroutz.
  • Βελτιστοποιημένα SQL Queries: Άμεση ανάκτηση ενεργών και διαθέσιμων προϊόντων μέσω Db::getInstance()->executeS() με JOIN στους πίνακες product, product_lang, stock_available και manufacturer, φιλτράροντας εξαρχής τα ανενεργά ή εξαντλημένα είδη.
  • Εκτέλεση μέσω PHP CLI (Cron Jobs): Τα ανεξάρτητα scripts generate-skroutz-feed.php και generate-google-feed.php εκτελούνται απευθείας από τη γραμμή εντολών (CLI) χωρίς να δεσμεύουν web workers ή να περιορίζονται από το HTTP timeout.
  • Καταγραφή Σφαλμάτων (PrestaShopLogger): Ενσωμάτωση με το εγγενές σύστημα καταγραφής PrestaShopLogger::addLog() για τον άμεσο εντοπισμό τυχόν ζητημάτων δικαιωμάτων εγγραφής ή συμπίεσης GZip.

Η λύση

Σχεδιάστηκε και υλοποιήθηκε το XML Feed Manager v2.1.0 με ξεχωριστές λίστες εξαιρέσεων προϊόντων ανά κανάλι (μέσω Select2 multi-select), δενδροειδή επιλογή κατηγοριών (HelperTreeCategories) και επιλογή 15 εξαγόμενων πεδίων XML.

Για την απόλυτη εγκυρότητα των δεδομένων αναπτύχθηκε ο αλγόριθμος cleanHtmlToSingleLine() που μετατρέπει τις περιγραφές σε καθαρό κείμενο εντός CDATA, ενώ η παραγωγή των αρχείων (συμπεριλαμβανομένου του συμπιεσμένου skroutz.xml.gz) εκτελείται τοπικά μέσω PHP CLI Cron Jobs χωρίς χρονικούς περιορισμούς.

Το αποτέλεσμα

Η εγκατάσταση του XML Feed Manager εκμηδένισε τις απορρίψεις προϊόντων λόγω ακατάλληλου HTML στις περιγραφές και μείωσε το μέγεθος του παραγόμενου αρχείου Skroutz κατά 85% χάρη στη συμπίεση GZip.

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

Γκαλερί