Magento: Attribut von Dropdown auf Mehrfachauswahl ändern

Man hat alle Artikel im shop und merkt das man für konfigurierbare Artikel mehrere Werte eines Attributes auswählen muss.

Nun fängt der Kopfschmerz an. Aber es ist relativ einfach:

  1. phpmyadmin bzw. die Datenbank Administrationssoftware der Wahl öffnen
  2. die Datenbank sichern! (Fremdschlüssel Überprüfung deaktivieren!)
  3. Tabellennamen und Attribut ID der 3 SQL Befehle anpassen
  4. die 3 SQL Befehle ausführen
  5. Alle Indexe über das Magento Backend neu aufbauen lassen
  6. die Datenbank nochmals sichern

Hier sind die 3 SQL Befehle:

## Attribute Typ ändern
UPDATE mage_eav_attribute SET
backend_model = "eav/entity_attribute_backend_array",
frontend_input = "multiselect",
backend_type = "varchar",
source_model = NULL WHERE mage_eav_attribute.attribute_id = 189;

## Optionen übertragen
insert into mage_catalog_product_entity_varchar (entity_type_id, attribute_id, store_id, entity_id, value) select entity_type_id, attribute_id, store_id, entity_id, value from mage_catalog_product_entity_int where attribute_id = 189 ;

## alte Optionen löschen
DELETE FROM mage_catalog_product_entity_int WHERE attribute_id = 189;

In meiner Konfiguration hat das Attribut die ID 189 und die Tabellen alle ein „mage_“ am Anfang! Dies muss vorab angepasst werden!

Quelle: http://blueclawecommerce.co.uk/changing-a-magento-attribute-from-dropdown-to-multi-select#comment-238

Wenn externe mal nicht wissen…

…das es NICHT egal ist – ob eine Sourcecode Datei UTF8 oder in sonstwas codiert ist, dann muss man halt jede Datei manuell checken um nicht hinterher mit den Auswirkungen leben zu müssen.

Kommentare wie „Da waren komische Zeichen am Anfang – die habe ich mal entfernt.“ sollten stutzig machen.

Am besten den Dateneingang manuell nach nicht UTF8 codierten Dateien absuchen:

 find . -type f | grep '^.*\.php$' | xargs -I {} bash -c "iconv -f utf-8 -t utf-16 {} &>/dev/null || echo {}"

Dann wundert man sich hinterher auch nicht über fehlerhafte Ausgaben oder zerstörte Kommentare.

ds