Hallo ihr Lieben, ich möchte im Backend die Artikelliste um eine Spalte erweitern, welche mir ein Attribut ausspielt, welches ich selbst angelegt habe. Das Attribut ist bereits angelegt, liegt in der Tabelle s_articles_attributes und kann auch über das Backend für jeden Artikel einzeln belegt werden. Aber ich schaffe es nicht, dass dieses Attribut in der Artikelliste mit aufgeführt wird für alle Artikel. Was hab ich gemacht: Die grid.js erweitert: //{block name="backend/article\_list/view/main/grid" append} Ext.define('Shopware.apps.Article.view.main.Grid', { /\*\* \* Defines an override applied to a class. \* @string \*/ override: 'Shopware.apps.ArticleList.view.main.Grid', /\*\* \* Overrides the getColumns function of the overridden ExtJs object \* and inserts two new columns \* @return \*/ getColumns: function() { var me = this; var columns = me.callOverridden(arguments); var columnSize= { header: '{s name=sort/rang}Sortierrang{/s}', dataIndex:'attrSort', flex: 1 }; return Ext.Array.insert(columns, 8, [columnSize]); } }); //{/block}
Die list.js erweitert: //{block name="backend/article\_list/model/list/fields" append} { name:'attrSort', type:'int'}, //{/block}
Beide .js in der Bootstrap registriert und damit er die Attribute auch finden kann, folgendes Event registriert: public function afterGetListQueryBuilder(Enlight\_Hook\_HookArgs $arguments) { // get original builder $builder = $arguments-\>getReturn(); // add selection and join to original builder $builder-\>addSelect(array( 'attributes.attr\_Sort', )); $builder-\>addFrom('Shopware\Models\Attribute', 'attributes'); $arguments-\>setReturn($builder); }
Ich hoffe, ihr könnt mir weiter helfen.