Το 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 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 Merchant με χρήση Select2 multi-select autocomplete.

Δενδροειδής επιλογή κατηγοριών (HelperTreeCategories) για τον ακριβή έλεγχο των τμημάτων του καταλόγου που εξάγονται.

Παραμετροποίηση των 15 διαθέσιμων πεδίων XML και ενεργοποίηση του αλγορίθμου cleanHtmlToSingleLine() για καθαρές περιγραφές.

Πίνακας κατάστασης παραγόμενων feeds με συνδέσμους URL, χρονοσφραγίδες τελευταίας δημιουργίας και μεγέθη αρχείων XML/GZip.

Δομή του παραγόμενου αρχείου skroutz.xml με πλήρη ιεραρχία κατηγορίας, καθαρή τιμή, τιμή με ΦΠΑ, EAN, MPN και CDATA περιγραφές.

Δομή του παραγόμενου αρχείου google.xml (RSS 2.0, xmlns:g) συμβατή με τις προδιαγραφές του Google Merchant Center.

Οδηγίες αυτοματοποίησης μέσω Linux Cron Jobs (PHP CLI) και υπογραφή DamiansLab Module Standard στο υποσέλιδο.

Responsive προβολή σε κινητό: διαχείριση εξαιρούμενων προϊόντων και επιλεγμένων κατηγοριών από smartphone.

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.