Varianten automatisch nach Preis sortieren

Hallo zusammen,

wenn ich Varianten zu einem Produkt anlege kann man auch mit Sortierzahlen arbeiten. Da ich aber teilweise sehr viele Varianten bei einem Produkt habe würde ich im Template gern die Varianten nach Preis sortiert ausgeben lassen. Kennt jemand eine Möglichkeit bei der Schleife eine automatische Sortierung nach Preis einbinden zu können?

Wäre für jede HIlfe sehr dankbar:

Um diesen Code geht es glaube ich:

[{if $oView->getVariantList() || $oView->drawParentUrl()}]

[{if $oView->isMdVariantView()}]
  <noscript>
[{/if}]

[{foreach from=$oView->getVariantListExceptCurrent() name=variants item=variant_product}]
    [{if $smarty.foreach.variants.first}]
      [{assign var="details_variants_class" value="firstinlist"}]
    [{elseif $smarty.foreach.variants.last}]
      [{assign var="details_variants_class" value="lastinlist"}]
      <div class="separator inbox"></div>
    [{else}]
      [{assign var="details_variants_class" value="inlist"}]
      <div class="separator inbox"></div>
    [{/if}]

    [{$variants_head}]
    [{include file="inc/product_variante.tpl" product=$variant_product size="thinest" altproduct=$product->getId() isfiltering=false class=$details_variants_class testid="Variant_"|cat:$variant_product->oxarticles__oxid->value}]
    [{assign var="details_variants_head" value=""}]
[{/foreach}]

[{if $oView->isMdVariantView()}]
  </noscript>
[{/if}]

[{/if}]

Auf der Template-Ebene wird man das nicht machen können, da hier ja nur die vorhandene Liste in vorhandener Reihenfolge angezeigt wird.

Da muss man schon auf Modul-Ebene eingreifen.

Was heisst “sehr viele Varianten”?

Varianten werden bei größerer Anzahl langsam und unübersichtlich…

Brauchst Du unbedingt Varianten (eigener Lagerbestand, Artikelnummer) oder reichen auch Auswahllisten?

Über Auswahllisten ist das leider nicht möglich weil eben eigene Lagerbestände und jede Variante hat einen eigenen Namen etc.

Hm blöd dass das nicht mit einem Befehl ala “sort=price” geht.

Könnte ich direkt in eine PHP Core Datei eingreifen?

[QUOTE=spacemode;45137]
Könnte ich direkt in eine PHP Core Datei eingreifen?[/QUOTE]

Könntest du, solltest du aber nicht! Du kannst die entsprechende Klasse aber mit einem Modul erweitern.
Dann bleibt dein System auch wartbar, updatefähig,…

Gruß Joscha

Kenne mich aber mit der Modulentwicklung nicht aus. Hmm… zumindest zeitweise würd ich das gern im core machen bis ich dann Budget erhalte für einen Modulentwickler…

[QUOTE=spacemode;45140]Kenne mich aber mit der Modulentwicklung nicht aus. Hmm… zumindest zeitweise würd ich das gern im core machen bis ich dann Budget erhalte für einen Modulentwickler…[/QUOTE]
Da ich meine gute Tat für heute noch nicht erledigt habe, habe ich mir das mal angesehen…

In “core/oxarticles” in Funktion “public function getVariants” gibt es das folgende Select:

            $sSelect = "select ".$oBaseObject->getSelectFields()." from $sArticleTable where " .
                       $this->getActiveCheckQuery( $blUseCoreTable ) .
                       $this->getVariantsQuery( $blRemoveNotOrderables, $blUseCoreTable ) .
                       " order by $sArticleTable.oxsort";

Wenn Du das änderst zu

            $sSelect = "select ".$oBaseObject->getSelectFields()." from $sArticleTable where " .
                       $this->getActiveCheckQuery( $blUseCoreTable ) .
                       $this->getVariantsQuery( $blRemoveNotOrderables, $blUseCoreTable ) .
                       " order by $sArticleTable.oxprice";

sollte der gewünschte Effekt eintreten…

Wenn Du absteigend sortieren willst, dann

order by $sArticleTable.oxprice DESC;

[QUOTE=spacemode;45140]Kenne mich aber mit der Modulentwicklung nicht aus. Hmm… zumindest zeitweise würd ich das gern im core machen bis ich dann Budget erhalte für einen Modulentwickler…[/QUOTE]

Bitte, ich halte dich nicht ab! :smiley:

Tipp: Dann dokumentiere deine Änderungen sehr genau! Wir haben hier eben wieder einen Shop in Arbeit, in dem genau das nicht der Fall war und es dauert Stunden, das wieder gerade zu biegen!

Gruß Joscha

Vielen Dank für eure Hilfe und die gute Tat! Ich werde es gleich ausprobieren und Bescheid geben!

Da soll noch jemand sagen das Forum hier wäre nicht hilfreich :slight_smile:

Nochmal Danke für die schnelle Hilfe!

1000 Dank! Hat funktioniert! Top! :slight_smile: :slight_smile: :slight_smile:

[QUOTE=spacemode;45150]1000 Dank! Hat funktioniert! Top! :slight_smile: :slight_smile: :)[/QUOTE]
Freut mich…

[QUOTE=jkrug;45143]Bitte, ich halte dich nicht ab! :smiley:

Tipp: Dann dokumentiere deine Änderungen sehr genau! Wir haben hier eben wieder einen Shop in Arbeit, in dem genau das nicht der Fall war und es dauert Stunden, das wieder gerade zu biegen!

Gruß Joscha[/QUOTE]
Sicherheitshalber sollte man direkt geändert Core-Klassen auch auf “Readonly”-setzen, dann passiert erst mal nix…