Artikel aus Kategorie auslesen / zufallsgeneriert

Hi zusammen,

ich habe mir folgende Klasse für die Articlelist überladen:


    public function loadCategoryArticles( $sCatId, $aSessionFilter, $iLimit = null, $rand )
    {
        $sArticleFields = $this->getBaseObject()->getSelectFields();

        $sSelect = $this->_getCategorySelect( $sArticleFields, $sCatId, $aSessionFilter );

        // calc count - we can not use count($this) here as we might have paging enabled
        // #1970C - if any filters are used, we can not use cached category article count
        $iArticleCount = null;
        if ( $aSessionFilter) {
            $iArticleCount = oxDb::getDb()->getOne( $this->_getCategoryCountSelect( $sCatId, $aSessionFilter ) );
        }
        
        if ($iLimit = (int) $iLimit) {
            $sSelect .= " LIMIT $iLimit";
        } 

        $this->selectString( $sSelect );

        if ( $iArticleCount !== null ) {
            return $iArticleCount;
        }

        // this select is FAST so no need to hazzle here with getNrOfArticles()
        return oxUtilsCount::getInstance()->getCatArticleCount( $sCatId );
    }    

und möchte jetzt die jeweilige Kategorie gerandomized ausgeben und den Parameter $rand mit geben. Ein “order by rand()” vor dem Limit funktioniert allerdings nicht, da schon irgendwie ein ORDER mit übergeben wird und somit der Query falsch ist.

Hat jemand ne Idee, wie ich den “Zufallsgenerator” da noch unterbringe? Oder doch nen eigenen Query?

Hat sich erledigt:


			$sSelect = "select * from oxobject2category ";
			$sSelect .= "RIGHT JOIN $sArticleTable ON $sArticleTable.oxid = oxobject2category.oxobjectid ";
			$sSelect .= "WHERE oxobject2category.oxcatnid = '" . $soxId . "' and " . $this->getBaseObject()->getSqlActiveSnippet() . " and oxissearch = 1 order by $sType ";

 

es müßte klappen, wenn du ganz ober einfügst (nicht getested):


 $this->_sCustomSorting = "rand()";

Ahhh, super! Dankeschön. So gehts natürlich auch…