Frage zu Varianten $oSelection->isDisabled()

Hallo Zusammen,

im Template “azure/tpl/widget/product/selectbox.tpl” gibt es eine IF-Abfrage:

<li class="[{if $oSelection->isDisabled()}]js-disabled disabled[{/if}]">
<a >…</a>
</li>

Wo wird dieses Attribut “isDisabled()” von Selection definiert?

In der PHP Datei “/application/models/oxselection.php” gibt es eine function “isDisabled()” und “setDisabled()”.

Aber ich finde nicht, in welcher PHP-Datei oder in welcher Funktion wird Selection geprüft, ob sie “enabled” oder “disabled” ist.

Normalerweise wenn man einen Groß oder eine Farbe ausgewählt hat, werden die verfügbare Farben oder Größe geprüft. (wenn Stock 0 ist, Disabled; wenn Stock > 0 ist, verfügbar ).

ich möchte gerne wissen, an welche Stelle wird diese Prüfung (“enabled” oder “disabled”) gemacht.

Könnte vielleicht jemand mir helfen? oder ein Tipp? Idee?

Vielen Dank im Voraus!

VG,
Jan

Ich meine das passiert in oxVariantSelectList::addVariant()

  • Datei: /application/models/oxvariantselectlist.php
  • Zeile: 90

Gibt es in deinem Shop multidimensionale Varianten bzw. was brauchst du denn eigentlich? :slight_smile:

Da und in oxvarianthandler. Hat aber nichts mit Stock zu tun, nur mit wählbaren Kombinationen.

hi Kai,

Vielen Dank für die Info.

die addVariant() Funktion in oxvariantselectlist.php habe ich auch gefunden.

Aber ich verstehe die Logik nicht ganz. Wie hat es entschieden, welche Selection “enabled” oder “disabled” ist?

Ja, mein Shop hat MD Varianten. Es gibt Farbe und Groß.

Was ich eigentlich wissen möchte ist folgendes:

ein Artikel hat z.B. 4 Varianten:
S | Red (Stock = 2)
S | Blue (Stock = 0)
L | Red (Stock = 0)
L | Blue (Stock = 3)

wenn man jetzt Groß “S” auswählt hätte, dann zeigt Farbe “Red” als “enabled”, aber Farbe Blue als “disabled”.
wenn “L” auswählt hätte, zeigt Farbe “Red” als “disabled”, aber Farbe Blue als “enabled”.

meine Frage wäre, wie und wo hat es die Kombinationen geprüft? Wie ist eigentlich diese Logik?

Besten Dank und Viele Grüße,
Jan

Hallo Frank,

Vielen Dank für die Info.

wo genau meinst Du in oxvarianthandler?

wenn es nichts mit Stock zu tun ist, wie hat die Funktion die wählbaren Kombinationen rausgesucht? Die Logik der Prüfung für Selections ist mir nicht so klar.

Viele Grüße,
Jan

Hallo Jan,
Hallo Frank,

es kann sehr wohl auch etwas mit dem Stock zu tun haben, kommt aber ganz darauf an, wie sich die Varianten verhalten, wenn der Stock <= 0 ist.

Die Logik ist folgende. Ich gehe jetzt einfach mal von deinen Vorgaben aus.
Wenn ich die Größe “S” auswähle, muss die Farbe “Blue” disabled sein, da sie ausverkauft ist, die Farbe wird aber angezeigt, da man sie mit der Größe “L” verwenden könnte.
Umgekehrt ist es auch mit der Größe “L”. Dort ist dann “Red” disabled, wird aber angezeigt, da es in Kombination mit der Größe “S” eine kaufbare Variante wäre.

Ich hoffe das ist ein wenig verständlich. :slight_smile:

Hallo Kai,

super! Vielen Dank! jetzt kann ich mindestens die Logik verstehen :slight_smile:

Aber das funktioniert nur für eine Größe mehrere Farben (>1) hat.

Wenn z.B. eine Größe nur eine Farbe hat:

S | Red (Stock = 2)
M | Red (Stock = 0)
L | Red (Stock = 0)
XL | Red (Stock = 3)

Wenn ich jetzt die Farbe “Red” auswähle, können die Größe S M L XL alle angezeigt werden?
Die Größe M und L sollen aber als “disabled” angezeigt.

Ist das möglich?

Das ist ähnlich wie die Funktion “Wenn ausverkauft nicht bestellbar”.
Mit der Funktion “Wenn ausverkauft nicht bestellbar” sind zwar die alle Größe angezeigt, aber ohne “enabled” oder “disabled” Infos.
Man weiß nicht, welche Größe verfügbar ist oder nicht. Man muss irgendeeine Größe auswählen, wenn die Kombination verfügbar dann erscheint der Warenkorb-Button. wenn nicht, verschwindet der WK-Botton.

Was ich genau haben möchte, wenn man “Red” auswählt, alle Größe werden angezeigt. Davon alle nicht verfügbare Größe als “disabled” angezeigt (wie z.B. in Grau oder unklickbar).

Besten Dank und Viele Grüße,
Jan

Es hat insofern nichts mit Stock zu tun dass in der Logik “disabled oder nicht” Stock oder kaufbar nicht vorkommt. Es geht nur darum ob die Variante angezeigt werden kann oder nicht. Für dein Vorhaben müssen immer alle angezeigt werden können (“Wenn ausverkauft nicht bestellbar”) damit die Größe immer erscheint, also ist immer alles enabled.

Du könntest jetzt noch ein Flag setzen, blNotBuyable, und das durch die Funktionen schleifen, oder dir eine Methode schreiben die vom Template aus prüft ob die Variante kaufbar wäre wenn man sie wählen würde (in Kombination mit den vorhandenen Auswahlen).

Hallo Frank,

Vielen Dank für Deine Antwort!

mir ist leider nicht so klar, in welcher Funktionen Schleifen soll man blNotBuyable als Flag setzen?

Könntest Du vielleicht einbisschen mehr erklären wie das geht?

Vielen Dank im Voraus!
Jan