ich benötige die Möglichkeit einem Attribut mehrere Werte zuzuweisen. Dafür gibt es Plugins - ja - aber ich hätte lieber eine ganz einfache pragmatische Lösung.
Mein bisheriger Ansatz:
Ich weise dem Attribut im Admin-Bereich (Artikel -> Auswahl -> Attribute zuweisen -> Attribut nach rechts ziehen -> Wert eintippen) einen Wert zu
In der db wird ein Eintrag in der Tabelle oxobject2attribute erzeugt
Ich kopiere diese Zeile direkt in der db und ändere nur die OXID um einen Wert
Im Admin-Bereich (Artikel -> Auswahl -> Attribute zuweisen) sehe ich nun im rechten Bereich zweimal mein Attribut und kann es dort pflegen
Im Frontend verhält sich alles genau so wie es soll. Beide Werte tauchen im Dropdown des Filters auf und bei beiden Werten wird mein Produkt angezeigt.
Auch im Backend ist alles fehlerfrei. Ich kann die doppelten Attribute einzeln nach links ziehen -> Zeile wird aus der db gelöscht.
Kann mir einer von den Entwicklern mal auf die Sprünge helfen, welche Code-Zeile geändert werden muss, damit man direkt im Admin das Attribut einfach mehrfach nach rechts ziehen kann? Meiner Logik nach, verschwindet das Attribut ja, weil es bereits in Gebrauch ist. Das kann ja nur eine Zeile Code sein, wo eben das geprüft wird (Attribut bereits aktiv? Nicht mehr anzeigen).
Ich würde das gerne quick-and-dirty auskommentieren oder halt abändern. Ich finde es nur partout nicht.
1. Datei /vendor/oxid-esales/oxideshop-ce/source/Application/Controller/Admin/ArticleAttributeAjax.php
Bei Zeile 54 die SQL-Abfrage geändert in: $sQAdd = " from {$sAttrViewName}";
Das führt schon einmal dazu, dass man in der linken Seite immer alle Attribute sieht, auch wenn man die schon ausgewählt hat. Man kann nun ein Attribut mehrfach nach rechts schieben.
ABER - Der Wert wurde nicht gespeichert, was daran lag, dass immer wieder die gleiche Zeile in der Datenbank überschrieben wurde. Das liegt daran, dass das SQL-Select nur nach einem Pärchen sucht (Artikel<–>Attribut), weil das Programm eben nicht davon ausgeht, dass das mehrfach vorkommt. Daher muss man das noch so abändern, dass er die OXID vom Datensatz aus der Tabelle oxobject2attribute nimmt.
hier noch ein anderer Ansatz:
In das folgende Modul (für OXID6) habe ich ein hidden-Feature eingebaut, um einem Attribut mehrere Werte zuweisen zu können.
So funktioniert es:
Das Feld “Wert” muss zunächst leer sein (ggf. leeren und speichern).
Dann die Werte getrennt durch “|” eintragen, zB. blau|rot und speichern.
Im Attributfilter kann dann nach beiden Werten gefiltert werden.