Eigene Felder Aktivieren - Shop-Option nicht verfügbar

Nachdem ich einige Themen zum Hinzufügen eigener Felder gelesen habe, im Adminbereich auch entsprechend ein Feld anzeige und in der Datenbank (Tabelle “oxarticles”) ein neues Feld angelegt habe, möchte ich dieses nun auch auslesen und entsprechend beschreiben.
Das Feld wird bei mir für Varianten genutzt und ist dort, wie oben erwähnt, auch bereits im Template eingebunden.

In alten (wirklich alten und auch neueren) Foreneinträgen fand ich den Hinweis, dass man unter [I]Stammdaten / Grundeinstellungen / Perform. / “Benutzerdef. Datenbankänderungen berücksichtigen”[/I] die Nutzung eigener Felder aktivieren muss. Schaue ich nun jedoch in meiner installierten Shopumgebung (CE 4.5.0), finde ich diese Option nicht. Ebenso finde ich diese Option nicht im Backend des Demoshops für die PE 4.5.0

Wo kann ich eigene Felder aktivieren, damit sie im Backend ausgelesen werden und beschrieben werden können?

Grüße,
Alexander

Hallo Alexander,

hast du bereits die Views aktualisiert?
Diese kannst du unter [Service]->[Tools]->Button [Views updaten].

Wo genau im Admin sollen diese Felder ausgelsen werden?
(bspw Artikel -> Artikel verwalten -> Stamm?)

Danke für die schnelle Antwort!

Das (aktuell nur eins) neue Feld wird bei den Varianten eines Artikels angezeigt/ausgelesen und geschrieben. (Artikel verwalten -> Artikel -> Varianten)

Nachdem ich die Views, so wie Du es beschrieben hast, aktualisiert habe, wird nun bei den Varianten die angelegt sind eine “0” als Wert angezeigt. Beim Anlegen einer neuen Variante wird der Wert nicht mit gespeichert, wie auch beim Update bestehender Varianten nicht.

In dem Formular wo du eine Variante neu erstellst, ist das Feld im HTML korrekt vorhanden (mit firebug auslesbar oder quelltext anschauen)?

Kannst du uns den Quelltext mit dem entsprechenden Feld evtl. hier herein kopieren?

Das Feld ist vorhanden und wird scheinbar auch korrekt im HTML erzeugt, zumindest sieht es so für mich aus, wenn ich es mit den anderen Feldern vergleiche.
Im Anhang ist ein Bild vom generierten HTML mit dem Firebug analysiert zu sehen.

Meine Einbindung im Template sieht folgendermaßen aus:


[{if $oViewConf->isBuyableParent()}]
...
<td class="[{ $listclass}]"><input type="text" class="editinput" size="10" maxlength="[{$edit->oxarticles__oxersparnis->fldmax_length}]" name="editval[oxarticles__oxersparnis]" value="[{$edit->oxarticles__oxersparnis->value}]" [{ $readonly }]></td>

[{foreach from=$mylist item=listitem}]
...
<td class="[{ $listclass}]"><input type="text" class="editinput" size="10" maxlength="[{$edit->oxarticles__oxersparnis->fldmax_length}]" name="editval[[{ $listitem->oxarticles__oxid->value}]][oxarticles__oxersparnis]" value="[{$edit->oxarticles__oxersparnis->value}]" [{ $readonly }]></td>

// Neue Variante anlegen Bereich
...
<td class="[{ $listclass}]"><input type="text" class="editinput" size="10" maxlength="[{$listitem->oxarticles__oxersparnis->fldmax_length}]" name="editval[oxarticles__oxersparnis]" value="" [{ $readonly }]></td>

Grüße,
Alexander

Im Bereich von “foreach from=$mylist item=listitem” steht im Originaltemplate “$listitem” anstatt “$edit”.

Die Admineinstellung “Benutzerdef. Datenbankänderungen berücksichtigen” gibt es - soweit ich weiß - deshalb nicht mehr, da diese in der aktuellen Version grundsätzlich berücksichtigt werden.

Bei mir klappte das auch problemlos mit dem Einbinden und Bearbeiten neuer Felder im Admin, ohne dass ich irgendetwas einstellen (und auch keine Views aktualisieren) musste.

Mit Blindheit geschlagen!
Danke, genau das war es, was die Anzeigen von Werten, die ich manuell in der Datenbank eingetragen habe, verhindert hat.
Damit ist das Problem der Anzeige gelöst, doch wenn ich die Werte ändere, also nach Eingabe eines neuen Wertes in meinem neuen Feld Speichern drücke, wird dieser Wert nicht in der Datenbank gespeichert, es bleibt der zuvor gesetzte Wert bestehen, ebenso wie neu hinzugefügte Varianten für mein neues Feld keine Werte speichern.
Da ich den Copy&Paste Fehler hatte, schaute ich natürlich hier auch in dem Bereich für neue Varianten noch einmal genau, habe jedoch keine Abweichung zu originalen Feldern gefunden.
Wodurch kann die Nicht-Speicherung hervorgerufen werden?

In dem Standard Template sehen die Zeilen wie folgt aus:


######Beispiel oxstock######
//hier werden die Varianten ausgelesen
Zeile 187: [{foreach from=$mylist item=listitem}]

//hier werden die Werte einer vorhanden Variante zugeordnet.
Zeile 197: <td class="[{ $listclass}]"><input type="text" class="editinput" size="7" maxlength="[{$listitem->oxarticles__oxsort->fldmax_length}]" name="editval[[{ $listitem->oxarticles__oxid->value}]][oxarticles__oxsort]" value="[{$listitem->oxarticles__oxsort->value}]" [{ $readonly }]></td>

//hier wird die neue Variante angelegt:
Zeile 249: <td class="[{ $listclass}]"><input type="text" class="editinput" size="7" maxlength="[{$listitem->oxarticles__oxstock->fldmax_length}]" name="editval[oxarticles__oxstock]" value="" [{ $readonly }]></td>

Im Prinzip sollte es ausreichen diese Felder entsprechend dem Template hinzu zufügen, in deinem Fall sollte quasi nicht $edit sondern $listitem verwendet werden (bzw. das was in Zeile 187 verwendet wird).

Bitte entschuldigt meine verspätete Antwort, andere Projekte hatten leider den Vorrang und mussten erst fertig gestellt werden. Jetzt jedoch ist Oxid dran.

Ich habe noch einmal exakt geprüft, wie die neuen Felder angelegt wurden.
Auslesen der neuen Felddaten funktioniert in sofern, dass in der Datenbank von mir manuell eingegebene Werte für eine Variante im neuen Feld im Admin in der Variantenübersicht im HTML angezeigt werden.
Ein Speichern, egal ob neue oder bestehende Variante, funktioniert jedoch noch immer nicht. Ich kann keinen Fehler finden.

Muss noch irgend etwas anderes im Shop eingestellt werden, in irgendeiner Datei geändert werden oder ähnliches, damit auch ein Speichern und nicht nur das Auslesen funktioniert?

m.E. hat KristianH den Nagel auf den Kopf getroffen.

@AlexWeedy, poste doch mal eben den jetzt geänderten Code mit dem es laut deinem Eintrag vom 20.05.11 auch nicht lief. KristianH hat es ja bereits beschrieben und nach dieser Änderung müsste es m.E. nach funktionieren. :wink:

Hallo!

Nach


// Zeile 200
<td class="[{ $listclass}]"><input type="text" class="editinput" size="7" maxlength="[{$listitem->oxarticles__oxstock->fldmax_length}]" name="editval[[{ $listitem->oxarticles__oxid->value}]][oxarticles__oxstock]" value="[{$listitem->oxarticles__oxstock->value}]" [{ $readonly }]></td>

habe ich folgendes eingefügt und angepasst


// Zeile 201
<td class="[{ $listclass}]"><input type="text" class="editinput" size="7" maxlength="[{$listitem->oxarticles__oxersparnis->fldmax_length}]" name="editval[[{ $listitem->oxarticles__oxid->value}]][oxarticles__oxersparnis]" value="[{$listitem->oxarticles__oxersparnis->value}]" [{ $readonly }]></td>

Weiterhin habe ich nach


// Zeile 252
<td class="[{ $listclass}]"><input type="text" class="editinput" size="7" maxlength="[{$listitem->oxarticles__oxstock->fldmax_length}]" name="editval[oxarticles__oxstock]" value="" [{ $readonly }]></td>

das folgende eingefügt


// Zeile 253
<td class="[{ $listclass}]"><input type="text" class="editinput" size="7" maxlength="[{$listitem->oxarticles__oxersparnis->fldmax_length}]" name="editval[oxarticles__oxersparnis]" value="" [{ $readonly }]></td>

Die Zeilennummern sind natürlich nicht zu 100% übereinstimmend mit dem Original, weil ich auch den Tabellenkopf erweitert habe und im Bereich [B][{if $oViewConf->isBuyableParent()}][/B] ebenfalls das folgende eingefügt habe


// Zeile 165
<td class="[{ $listclass}]"><input type="text" class="editinput" size="7" maxlength="[{$edit->oxarticles__oxersparnis->fldmax_length}]" name="editval[oxarticles__oxersparnis]" value="[{$edit->oxarticles__oxersparnis->value}]" [{ $readonly }]></td>

Auf dem angehängten Screenshot erkennt man, dass ein Wert (12,05) im Feld Ersparnis ausgegeben wird, den ich manuell in der Datenbank gespeichert habe.

Interessant ist für mich jedoch auch, dass im Ausgabe-HTML kein Wert für [B]maxlength[/B] existiert. Schon hier schlägt eine Abfrage fehl, wie es scheint. Das Ausgabe-HTML sieht wie folgt aus

<input type="text" value="12,05" name="editval[0rh0fd895dbfcac12a4b209a7cf0dbb7][oxarticles__oxersparnis]" maxlength="" size="7" class="editinput">

Vielen Dank für eure Hilfe!

Edit:
Inzwischen hat sich das Problem “von allein” beseitigt. Nachdem ich den tmp Ordner nochmals geleert habe, funktioniert sowohl das Lesen, Anlegen als auch Updaten des neuen Feldes.

:slight_smile: na das ist doch super dass es nun funktioniert.