In welcher Tabelle speichert Shopware Attribut-Optionen?

Ich habe neulich den Fall gehabt, dass ich Attribute hatte, die von Plugins angelegt wurden. Diese waren im Freitextfeld-Manager als “nicht konfiguriert” angezeigt  und konnten nicht angeklickt werden. Nun wollte ich diese Attribute aber weiterhin nutzen und im Backend anzeigen. Ich habe aber in der Datenbank keine Stelle finden können, wo definiert ist, ob das Feld konfigurierbar ist oder im Backend angezeigt werden soll etc. Ich habe mir dann damit geholfen, dass ich ein neues Feld angelegt habe, was so ähnlich hieß, wie das von mir gewünschte Feld. Dann habe ich den Inhalt vom alten ins neue kopiert, dann das alte Feld gelöscht und dann anschließend das neue im Backend von Shopware umbenannt in den alten Namen. Dadurch war dann alles okay.

In welcher Tabelle speichert Shopware Attribut-Optionen?

Ich habe aber in der Datenbank keine Stelle finden können, wo definiert ist, ob das Feld konfigurierbar ist oder im Backend angezeigt werden soll etc.  

 Du meinst sicher die Tabelle „s_attribute_configuration“. Falls, dann beinhaltet diese auch den Namen der jeweiligen Tabelle. Was ist denn jetzt deine konkrete Frage?

Sicherlich mag es eine Art Lösung sein, ich würde Dir allerdings von solchen DB Spielchen abraten, wenn man nicht genau weiss was man macht, da es eventuell später zu unerwünschten Erscheinungen kommen kann.

Ein Tabelle kann man leicht finden, indem man zb. in PhpMyAdmin eine suche nach einem Attribute Value startet und sieht welche Tabelle dafür zuständig ist.

Aber wie gesagt, Tabellen können verknüpft sein und wenn man dort manuell was ändert, “kann” eine Zuordnung dann nicht mehr passen.

Ich würde Dir daher empfehlen, lieber zu emitteln, wo der eigentliche Fehler liegt.

 

 

 

 

Es gibt keinen Fehler. Es ist nur so, dass ich von einem deinstallierten Plugin Attribute in s_articles_attributes im System hatte und diese im Backend beim Artikel nicht sichtbar waren. Die Attribute wollte ich aber wieder sichtbar machen und dies war über das Backend nicht möglich. Also musste ich herausfinden, wo Shopware speichert, dass ich diese Attribute im Backend nicht bearbeiten darf. 

Daher meine ganz konkrete Frage:

Was muss ich in der Tabelle s_attribute_configuration einstellen, damit ein nicht konfigurierbares und ein im Backend nicht angezeigtes Attributfeld dort erscheint bzw. dass ich es im Freitextfeld-Admin im Shopware-Backend bearbeiten kann. Mit bearbeiten meine ich: Umbennenn, übersetzbar machen, Position verändern etc.

Die Attribute von Plugin werden wohl gar nicht über das Backend veränderbar sein. Nur die Attribute von Shopware selber - also alles mit attr…

Hallo,

setz einfach mal in der Spalte “custom” (in der Datenbank - Tabelle “s_attribute_configuration”) den Wert auf 1 bei dem betreffenden Freitextfeld, dann dürfte es auch über das Backend veränderbar / löschbar sein (für sichtbar im Backend müsstest du den Wert 1 bei der Spalte “display_in_backend” beim betreffenden Freitextfeld setzen).

Grüße

Sebastian

Ne, an custom lag es nicht. Das hatte ich getestet. Also nach wie vor für mich nicht ganz nachvollziehbar, wie das gesteuert wird. Aber wie dem auch sei. Mit der Anlage direkt im phpmyadmin eines neuen Attributfeldes und dann hineinkopieren der Werte dann im phpmyadmin das alte Feld löschen und dann in Shopware dem neuen Feld den alten Namen geben, ging es dann.

Hallo,

die Spalte “custom” steuert, ob ein Freitextfeld im Shopware Backend bearbeitbar ist oder nicht - das ist so. Das kannst du ja einfach bei einem neu angelegten Freitextfeld prüfen und wirst sehen, das es so ist.

Grüße

Sebastian

Okay, dann mag es vielleicht ein Cache-Problem gewesen sein, wobei ich immer dachte, dass die Attributfelder in der Feld-Verwaltung nicht wirklich gecached werden. Aber dann weiß ich es fürs nächste Mal. Dank dir!

Also ich habs jetzt in einem anderen Shop nochmal eben getestet. Feld auf custom=1 gesetzt, alles an Cache geleert und es ändert nichts. Habe das Backend auch neu geladen. Feld ist nicht editierbar.

Hallo,

solche Sachen macht man auch eher selten über die Datenbank direkt, sondern über den CRUD - Service von Shopware: https://developers.shopware.com/developers-guide/attribute-system/#backend-view-configuration . Und wie ich ja schon mehrfach gesagt habe, steht auch dort noch einmal deutlich da:

//user can modify the attribute in the free text field module

‚custom‘ => true,

Also ob du das jetzt glaubst oder nicht, die Spalte „custom“ steht dafür, ob das Freitextfeld im Backend editierbar ist oder nicht.

Grüße

Sebastian

Hat nix mit Glauben zu tun. Es funktioniert einfach nicht über die Datenbank. Jedenfalls bei meinen Tests nicht. Und klar, kann ich ein Plugin schreiben, was dann den CRUD-Service nutzt und das Feld “übernimmt”. Es ging mir persönlich nur darum, dass ein nicht mehr installiertes Plugin ein Feld bereitgestellt hat, was ich gerne einfach weiterverwenden möchte. 

Hallo,

dann kopier dir doch einfach schnell das dortige Plugin, benenne das Feld in deinen Namen um und “ziehe” die Felder über den CRUD - Service gerade (beispielsweise custom), dann kannst du es für immer weiternutzen und so anpassen, wie du willst. Danach kannst du das Plugin ja wieder löschen.

Hast du denn nach der Änderung über die Datenbank überhaupt das Model der Tabelle neu generiert?

Grüße

Sebastian

Naja, da ist es ja deutlich einfacher, ich mache es so, wie ich es direkt in der DB gemacht habe.

Wie gesagt - mich hatte nur gewundert, wo und wie Shopware die Info speichert, ob ein Feld editierbar ist oder nicht. Es ging hier nur darum, das Verhalten von Shopware zu verstehen.

Model habe ich neu erzeugt. Vielleicht lags auch mit am Hoster, da hier mehrere Server eingesetzt werden und vielleicht noch irgendwo ein Modell hängt. 

Egal jetzt. Ich kriege es mit Änderungen in der DB nicht hin aber ich habe einen funktionierenden Workaround.