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

 

 

kostenloses eBook SEO für OXID eShop

10 SEO Tipps für Ihren OXID eShop - kostenlos

Laden Sie sich Ihr kostenloses eBook herunter und optimieren Sie Ihren Shop ganz einfach selbst.

 

Thema: Zeit, Geld & Nerven | Stichworte: , , , ,