Ausgelesene Kategorien in *.tpl sortieren

Hallo Leute,

ich lese mit folgendem Befehl alle Kategorien eines Produktes in der details.tpl aus und gebe dieser wieder aus sowie verlinke sie mit sich selber. Klappt alles sehr gut soweit, dank der Hilfe im Forum hier.


<ul id="passend">
[{foreach from=$product->getCategoryIds() item=sCatId}]
    [{assign var=oCat value='oxcategory'|@oxNew}]
    [{capture}][{$oCat->load($sCatId)}][{/capture}]
       <li class="modelle"><a href="[{$oCat->getLink()}]">[{$oCat->oxcategories__oxtitle->value}]</a></li>
[{/foreach}]
</ul>

Jetzt ist meine Frage, wie ich diese Ausgabe der Kategorien sortieren kann, denn die <li> Liste läuft unsortiert runter. In der list.tpl werden Kategorien ja auch sortiert aber ich finde trotzdem nicht raus wie ich das hinkriegen kann.

Über Hilfe würde ich mich sehr freuen

Grüße gajel

Hat sicher erledigt. Probem direkt bei der SQL abfrage gelöst (sortiert).

Hallo,
kann mir jemand sagen, wie ich das so organisieren kann, dass sämtliche Kategorien eines Artikels “alphabetisch” sortiert werden.
Was muss ich da wo verändern, um das bei der?SQL Abfrage zu lösen?

Gruß,
Norbert

ich rate jetzt einfach mal und sag, das am ende der abfrage der kaegorien des artikels einfach ein: “order by oxtitel ASC” kommt

[QUOTE=caladan;68113]ich rate jetzt einfach mal und sag, das am ende der abfrage der kaegorien des artikels einfach ein: “order by oxtitel ASC” kommt[/QUOTE]

Hallo,
danke für die Antwort. Mein Problem ist, dass ich die Funktion nicht finde, die diese Abfrage macht.
Wenn ich mich auf den Code beziehe scheint es from=$product->getCategoryIds() zu sein.
Diese finde ich in oxarticle.php.

    public function getCategoryIds( $blActCats = false, $blSkipCache = false )
    {
        $myConfig = $this->getConfig();
        if ( isset( self::$_aArticleCats[$this->getId()] ) && !$blSkipCache ) {
            return self::$_aArticleCats[$this->getId()];
        }

        // variant handling
        $sOXID = $this->getId();
        if (isset( $this->oxarticles__oxparentid->value) && $this->oxarticles__oxparentid->value) {
            $sOXID = $this->oxarticles__oxparentid->value;
        }

        // we do not use lists here as we dont need this overhead right now
        $sSql = $this->_getSelectCatIds( $sOXID, $blActCats );
        $oDB = oxDb::getDb(true);
        $rs = $oDB->execute( $sSql );


        $aRet = array();

        if ($rs != false && $rs->recordCount() > 0) {
            while (!$rs->EOF) {
                $aRet[] = $rs->fields['oxcatnid'];
                $rs->moveNext();
            }
        }

        // adding price categories if such exists
        $sSql = $this->getSqlForPriceCategories();

        $oDB = oxDb::getDb( true );
        $rs = $oDB->execute( $sSql );

        if ($rs != false && $rs->recordCount() > 0) {
            while (!$rs->EOF) {

                if ( is_array( $rs->fields ) ) {
                   $rs->fields = array_change_key_case( $rs->fields, CASE_LOWER );
                }


                if ( !$aRet[$rs->fields['oxid']] ) {
                    $aRet[] = $rs->fields['oxid'];
                }
                $rs->moveNext();
            }
        }
    
        return self::$_aArticleCats[$this->getId()] = $aRet;
    }

Allerdings scheitern hier sämtliche Versuche das einzubauen.
Bitte um Hilfe!
Danke und Gruß,
Norbert

such doch mal nach der privaten methode $this->_getSelectCatIds( $sOXID, $blActCats );

da wird ja wohl die sql zusammengebastelt :slight_smile:

Danke!
Das war der richtige Hinweis.

Gruß,
Norbert