Attributsortierung

Hallo,

ich steh grad auf dem Schlauch und vielleicht hat hier jemand eine Idee. Es wurden Attribute für Artikel angelegt und denen eine Sortierung gegeben:

Rebsorte | 1000
Geschmacksrichtung | 1010
Herkunftsland | 1020
Anbaugebiet | 1030
Besonderheit | 1040
Weingut | 1050
Sonderetikettierung | 1060
Sonderetikettierung | 1061

Diese funktioniert auch soweit, leider nicht für die Sonderetikettierung, diese steht immer an zweiter Stelle. Jemand eine Idee?

LG
Ralf

keiner eine idee?

Hallo Ralf,

mir fällt natürlich auf, dass “Sonderetikettierung” doppelt vorkommt. Was passiert, wenn Du dort unterschiedliche Label benutzt?

Gruß

Hallo Marco,

nein funktioniert leider nicht… Das Ergebnis ist immer das die Sonderettiketierung an zweiter stelle steht. Also ob 1060/1061 vor 1010 kommen würde.

LG
Ralf

Willst du evtl. die Filter sortieren, oder meinst du die Ausgabe auf der Detailseite?

Hi, die Ausgabe auf der Detailseite.

Ich hab den Fehler gefunden:

Es gibt eine oxpos in der oxattributes und in der oxobject2attribute, und der shop sortiert erst nach oxpos in der zuweisungstabelle. Standardmäßig steht da auch 9999 drin, wahrscheinlich damit alle auf dem gleichen level sind. Nun hat der Kunde ein Modul im Einsatz, womit er im Artikel Werte den Attributen zuweisen kann. Dieses Modul speichert in oxpos den wert 0. Und damit verhaut es die Sortiertung.

Frage an die Marco: Ich hab jetzt nichts gefunden, womit ich die Positionierung in der Zuweisungstabelle im Admin beeinflussen kann, wäre es vlt sinnvoll das oxpos in der oxobject2attribute raus zu nehmen? Bzw. über ein Flag diese Sortierung zu aktivieren?

LG
Ralf

Die Marco antwortet :slight_smile:
Keine Ahnung, echt. Kann mich da jetzt auch nicht reinlesen, sorry. Bin dankbar, wenn Du hier was postest, wenn Du etwas Bahnbrechendes herausgefunden hast :wink:

Gruß

Ich sollte weniger vom Handy aus schreiben, dann kommt die Autokorrektur nicht dazwischen :smiley:

Also ich hab nur rausgefunden dass in der Funktion oxAttributeList:: loadAttributes($sArticleId, $sParentId) direkt per SQL alles geladen wird:

public function loadAttributes($sArticleId, $sParentId = null)
{
if ($sArticleId) {
$oDb = oxDb::getDb(oxDb::FETCH_MODE_ASSOC);
$sAttrViewName = getViewName(‘oxattribute’);
$sViewName = getViewName(‘oxobject2attribute’);

         $sSelect = "select {$sAttrViewName}.`oxid`, {$sAttrViewName}.`oxtitle`, o2a.`oxvalue` from {$sViewName} as o2a ";
         $sSelect .= "left join {$sAttrViewName} on {$sAttrViewName}.oxid = o2a.oxattrid ";
         $sSelect .= "where o2a.oxobjectid = '%s' and o2a.oxvalue != '' ";
         $sSelect .= "order by o2a.oxpos, {$sAttrViewName}.oxpos";

         $aAttributes = $oDb->getAll(sprintf($sSelect, $sArticleId));

         if ($sParentId) {
             $aParentAttributes = $oDb->getAll(sprintf($sSelect, $sParentId));
             $aAttributes = $this->_mergeAttributes($aAttributes, $aParentAttributes);
         }

         $this->assignArray($aAttributes);
     }

 }

In der Zeile “$sSelect .= “order by o2a.oxpos, {$sAttrViewName}.oxpos”;” wird erst nach oxobject2attribute.oxpos und dann nach oxattribute.oxpos sortiert. Irgendwer wird sich schon was dabei gedacht haben das so zu machen. Die Frage ist nun ob man das nicht per Flag steuern könnte, zumal oxobject2attribute.oxpos nicht, meines Wissens nach im Admin pflegbar ist.