Kategorie-Topseller

An diesem schönen sonnigen Sonntag versuche ich mich ein einem kleinen Modul, welches die Topseller der aktuellen Kategorie ausgeben soll. Die Datenbankabfrage, die nur die Topseller der gesamten Aktion ausgibt habe ich bereits, aber die Einschränkung macht mir noch etwas Schwierigkeiten.
In der list.tpl rufe ich mein Modul so auf:

[{foreach from=$oView->topofcat($actCategory->oxcategories__oxid->value) item=article }]
              [{ $article->oxarticles__oxtitle->value }]<br />
    [{/foreach}]

Meine Klasse sieht derzeit so aus:

class topofcat extends aList
{
    public function  topofcat($actCat=NULL)
    {
        $sQuery = "SELECT * FROM oxarticles JOIN oxactions2article ON oxarticles.oxid = oxactions2article.oxartid WHERE oxactions2article.oxactionid =  'oxtop5' LIMIT 0 , 30";
        $oArticleList = oxNew('oxarticlelist');
        $oArticleList->selectString($sQuery);
        return $oArticleList->getArray();


    }
}

Ich übergebe meiner Funktion die ID der aktuellen Kategorie. Die Verknüpfung von Artikel und Kategorie habe ich in den beiden Tabellen oxobject2article und oxobject2category gefunden. Aber ich scheitere momentan daran das zu Verknüpfen. Meine bisherigen JOINs erzeugten Fehler.
Hat jemand einen Tip für mich?

Okay, ich bin weiter gekommen mit meiner SQL Abfrage:


SELECT * FROM oxarticles
JOIN oxactions2article ON oxarticles.oxid = oxactions2article.oxartid
INNER JOIN oxobject2category ON oxarticles.OXID = oxobject2category.OXOBJECTID
INNER JOIN oxcategories ON oxobject2category.OXCATNID = oxcategories.OXID
WHERE oxactions2article.oxactionid =  'oxtop5'
AND (((
oxcategories.oxparentid
) =  '943a9ba3050e78b443c16e043ae60ef3'))
LIMIT 6

In phpMyAdmin bekomme ich so die gewünschten Artikel. Allerdings in OXID den Namen der Kategorien. Das verstehe ich nicht ganz, da ich ja eigentlich nur die oxarticles auslese, oder?

Das läuft bis jetzt, ich hatte musste nur noch das mit dem AS einbauen. Jetzt scheint es zu funktionieren.
Mich interessiert jetzt jedoch noch Eure Meinung, ob das nicht eleganter geht? Vielleicht lässt sich das ja verbessern.

[QUOTE=muex;100695]Das läuft bis jetzt, ich hatte musste nur noch das mit dem AS einbauen. Jetzt scheint es zu funktionieren.
[/QUOTE]

Hallo!
Wir sieht nun Dein endgültiges SQL-Statement aus? Wo hast Du das AS eingebaut? Bin auch gerade am Entwickeln eines kleinen Top-Sellers Moduls.

Danke
Christoph

Wo baue ich das Ganze bitte ein?

Steht doch oben: In seinem Modul.

Ich möcht das auch gerne anwenden.

Dann schreibe doch einfach user muex an.

falls du die Topseller basierend auf den tatsächlichen Verkaufszahlen (und nicht aus der Aktion im backend) brauchst, dann hätte ich ein Modul:

einfach [{ newest_products oxid=“abc” }] mit der ID einer Kategorie statt “abc” irgendwo im Template eintragen und schon sollte es funktionieren. Weitere Einstellungsmöglichkeiten sind im Readme beschrieben

1 Like