OXID RSS Feed - Fehlerhafte Preisberechnung beheben
15.09.2017
Für Kategorien und auch für Aktionslisten (neue Angebote, Bestseller etc.) kann im OXID eShop ein RSS Feed aufgerufen werden.
Wenn auch die Hoch-Zeiten von RSS wohl vorüber sind, haben diese RSS Feeds doch für manche Shops noch eine Bedeutung. Kunden können darüber bestimmte Kategorien "abonnieren" oder es lassen sich auch automatisiert neue Artikel z. B. an Facebook oder Xing übermitteln.
In der aktuellen OXID Version wird allerdings der Preis für Artikel, die selbst nicht kaufbar sind und Varianten haben, fehlerhaft berechnet. Dieser Fehler ist jedoch rasch behoben. Ich habe festgestellt, dass OXID bei Staffelpreisen außerdem hinter dem "ab" kein Leerzeichen eingefügt hat, und somit der Preis direkt an dem Wort hängt, was nicht so schön aussieht. Das beheben wir gleich mit.

So sieht das RSS Feed im OXID Shop mit Demo-Daten aus.
Verwenden Sie dazu das Blanko-Modul aus meinem Grundlagen-Beitrag oder ein eigenes Modul, das Sie bereits in Ihrem Shop verwenden.
Erweitern Sie die Datei oxrssfeed (Model), indem Sie eine neue PHP-Datei erstellen und die Erweiterung wie im Grundlagen-Artikel beschrieben in der metadata eintragen.
Kopieren Sie sich die Funktion protected function _getArticleItems(oxArticleList $oList) bis zur schließenden Klammer. Da sich leider kein separater Einstiegspunkt anbietet, müssen wir die komplette Funktion anpassen.
Suchen Sie dort nun die Zeilen
if ($oPrice = $oArticle->getPrice()) { $sFrom = ($oArticle->isRangePrice()) ? oxRegistry::getLang()->translateString('PRICE_FROM') : ''; $sPrice .= ' ' . $sFrom . $oLang->formatCurrency($oPrice->getBruttoPrice(), $oActCur) . " " . $oActCur->sign; }
und ersetzen Sie diese durch folgende Zeilen
if ($oPrice = $oArticle->getPrice()) { // Preisberechnung korrigiert $sFrom = ($oArticle->isRangePrice()) ? oxRegistry::getLang()->translateString('PRICE_FROM') . ' ' : ''; if ($oArticle->isParentNotBuyable() || $oArticle->isRangePrice()) { if ($oArticle->isParentNotBuyable()) { $oPrice = $oArticle->getVarMinPrice(); } else { $oPrice = $oArticle->getMinPrice(); } } $sPrice .= ' ' . $sFrom . $oLang->formatCurrency($oPrice->getBruttoPrice(), $oActCur) . " " . $oActCur->sign; }
Da ich außerdem finde, dass die Langbeschreibung für das RSS Feed etwas viel des Guten ist (zu lang, zu viel HTML), habe ich zudem folgende Zeilen (ein Stückchen weiter unten) auskommentiert (in /* und */ eingefasst), so dass nur die Kurzbeschreibung des Artikels verwendet wird:
/* if (oxRegistry::getConfig()->getConfigParam('bl_perfParseLongDescinSmarty')) { $oItem->description = $oArticle->getLongDesc(); } else { $oItem->description = $oArticle->getLongDescription()->value; } */
Wichtig ist, nach der Änderung den tmp-Ordner zu leeren, da OXID das erstellte RSS-Feed dort cachet.

RSS Feed in OXID mit Demo-Daten nach der Umstellung
Kategorien: Zeit, Geld & Nerven | Schlagworte: Facebook, Fehler + Lösungen, Module für OXID Shops, OXID Tutorial
Tipps + News für deinen Online-Shop
Abonniere den Grips-Letter, und erhalte Ideen und Impulse für deinen Shopware oder OXID Shop, die dir helfen, sichtbarer zu werden, deinen Umsatz zu steigern und Zeit, Geld und Nerven zu sparen. Für 0 Euro direkt in dein Postfach!
Du kannst dich jederzeit wieder abmelden. Mehr dazu findest du in unserer Datenschutzerklärung.
Ähnliche Beiträge
Kommentare
Alfred Bez sagt:
25.09.2017 um 15:11 Uhr
Es gibt auch schon einen Pull Request, der diesen Bug behebt: https://github.com/OXID-eSales/oxideshop_ce/pull/498
Antworten
Marco von https://oxidforge.org sagt:
19.09.2017 um 10:09 Uhr
Danke für den tollen Artikel, Bettina! Nur noch ergänzend: Es handelt sich hier um einen Bug (#6522), der mit diesem Pull Request gefixt wird: https://github.com/OXID-eSales/oxideshop_ce/pull/498
Antworten