[Gelöst] Shopseiten (s_cms_static) um Attribute erweitern

Hallo zusammen,
 

ich versuche aktuell, die Shopseiten um ein zusätzliches Attribut zu erweitern. In der Bootstrap.php füge ich die Attribute in die Datenbank ein - das funktioniert wunderbar.

    private function createAttributes()
    {
        $this->Application()->Models()->addAttribute(
            's_cms_static_attributes',
            'dw',
            'css_classes',
            'varchar(255)',
            true,
            null
        );

        $this->getEntityManager()->generateAttributeModels(array(
            's_cms_static_attributes'
        ));
    }

 

Beim Aufrufen der Seiten im Backend wird das Attribut auch mit ausgeliefert - leider wird der Wert im Formular aber nicht angezeigt. DEn Block habe ich überschrieben:

//{block name="backend/site/model/nodes/fields" append}
{ name:'dwCssClasses', type:'string' },
//{/block}

Und auch das Formular:

//{block name="backend/site/view/site/form" append}
//{namespace name="backend/dw_shoppages_custom_css_classes/main"}
Ext.define('Shopware.apps.Site.view.site.customcssclasses.Form', {

    /**
     * Defines an override applied to a class.
     * @string
     */
    override: 'Shopware.apps.Site.view.site.Form',
    getContentField: function() {
        var me = this;

        return [
            {
                name: 'helperId',
                xtype: 'hidden'
            },
            {
                name: 'parentId',
                xtype: 'hidden'
            },
            {
                fieldLabel: '{s name=formContentFieldDescriptionLabel}Description{/s}',
                xtype: 'textfield',
                emptyText: '{s name=formContentFieldDescriptionEmptyText}Page name{/s}',
                name: 'description',
                allowBlank: false,
                anchor:'100%'
            },
            {
                fieldLabel: '{s name=formContentFieldHtmlEditorLabel}Content{/s}',
                xtype: 'tinymce',
                name: 'html',
                anchor:'100%',
                height: 300
            },
            {
                fieldLabel: 'CSS Classes',
                xtype: 'textfield',
                emptyText: 'CSS Classes',
                name: 'attributes[dwCssClasses]',
                allowBlank: true,
                anchor:'100%'
            },
            me.getDdSelector()
        ]
    },

});
//{/block}

In der Response sehe ich wie gesagt den Attribut-Wert am Node-Objekt (den hatte ich zuvor manuell in die DB eingetragen) - der Wert wird aber nicht im Formular angezeigt. Hat jemand einen Tipp, was ich noch ändern muss? Danke!

Ist es möglich, dass es sich hier um ein Bug in Shopware handelt? Die Erweiterung mittels Attributen funktioniert bei Artikeln bspw. einwandfrei!

Ha, da war ich auch schon mal… :wink:

Auch wenn

//{block name="backend/site/model/nodes/fields" append}

erstmal richtig erscheint (weil man ja die NodeFields erweitern möchte) muss man hier den attributes block nehmen den es da noch gibt

1 „Gefällt mir“

Habs gefunden: unter site/model die attribute.js erstellen und da drin dann:

//{block name="backend/site/model/attribute/fields" append}
    { name : 'dwCssClasses', type: 'integer' },
//{/block}

 

1 „Gefällt mir“

Herzlichen Dank,dass du deine gemachten Erfahrungen geteilt hast. Würde dir am liebsten 5 x Danke geben :slight_smile: