Zurück zur Übersicht

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.

RSS Feed Screenshot

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 Screenshot

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

Sharing is caring - teile den Beitrag

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.

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

Beitrag kommentieren

Wie alle anderen Websites verwendet auch unsere Cookies. Wenn du unsere Website verwendest, stimmst du dem zu.

Folgende Cookies zulassen:

Alle akzeptieren

Mehr Infos


Welche Cookies werden gesetzt?

Marketing
_fbp Dieses Cookie verwendet Facebook, um Werbeprodukte anzuzeigen.
Notwendig
PHPSESSID Behält die Einstellungen der Seite des Benutzers bei allen Seitenanfragen bei.
robin_marketing_popup Sorgt dafür, dass das Marketing-Popup nicht bei jedem Seitenwechsel erneut aufpoppt.
dwa_cookie_noticed Speichert die Einwilligungen zu den Cookies für ein Jahr. Dieser Cookie kann zurückgesetzt werden, wenn die Einwilligung entzogen werden soll.
Statistik
_pk_id Matomo - Cookie zum Speichern einiger Details über den Benutzer, z. B. der eindeutigen Besucher-ID (anonymisiert), notwendig zum Zählen wiederkehrender Besucher. - Speicherdauer 13 Monate
_pk_ses Matomo-Cookie zur Speicherung Sessionabhängiger Nutzerdaten - Speicherdauer 30 Minuten

Weggabelung

Lohnt sich ein Umstieg von
OXID eShop auf Shopware?