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, Xing

Lust auf mehr?

Grips-Letter abonnieren und nichts mehr verpassen.

Der Grips-Letter erscheint alle 1 - 2 Wochen. Du kannst dich jederzeit wieder abmelden. Deine Daten werden nicht weiter gegeben. Hier erfährst du mehr über den Grips-Letter. Hier findest du unsere Datenschutzerklärung.

Kommentare

Alfred Bez sagt:

25.09.2017 um 15:11:04

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:17

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?

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

Mach dir dein Marketing leichter!

Dein Marketing ist anstrengend, aufwändig und kraftraubend?

Hol dir meine 15 etwas ungewöhlichen Tipps, wie du dir dein Marketing leichter machen kannst.

Kostenlos - als Dankeschön für dein Newsletter Abo.

Im Grips-Letter gebe ich dir viele weitere Tipps, wie du dein Business und dein Leben entspannter erfolgreich machst, ohne dich zu verbiegen, ohne dich zu verausgaben. Genieße dein Business in vollen Zügen. Du kannst dich jederzeit wieder abmelden. Mehr dazu in unserer Datenschutzerklärung.