# Einkaufwelten Element mit Block erweitern

**URL:** <https://forum.shopware.com/t/einkaufwelten-element-mit-block-erweitern/19642>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [8. April 2014 um 20:53 UTC](https://forum.shopware.com/t/einkaufwelten-element-mit-block-erweitern/19642 "2014-04-08T20:53:01Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ideenwirbler](https://avatars.discourse-cdn.com/v4/letter/i/7993a0/32.png) [@Ideenwirbler](https://forum.shopware.com/u/Ideenwirbler)\
**Post date:** [8. April 2014 um 20:53 UTC](https://forum.shopware.com/t/einkaufwelten-element-mit-block-erweitern/19642/1 "2014-04-08T20:53:01Z")

</div>

Moin, ich stehe vor eine Problem mit den Einkaufswelten. Und zwar habe ich vor, die Komponente „Artikel“ um eine weitere Bezeichnung innerhalb des Dropmenüs zu erweitern. Ich weiß, dass dies in der article\_type.js im Verzeichnis emotion/view/components/fields passiert. Dort sind meine Änderungen drin und es funktioniert super. Aber ich will das mit meinem Plugin lösen und nicht in der Core-Datei rumwurschteln. Leider ist in der Datei kein Block sondern lediglich ein Namespace: `//{namespace name=backend/emotion/view/components/article} Ext.define('Shopware.apps.Emotion.view.components.fields.ArticleType', { extend: 'Ext.form.field.ComboBox', alias: 'widget.emotion-components-fields-article-type', name: 'article\_type',` Konkret handelt es sich um diese Änderung. „radius\_value“ ist von mir, also der letzte „Block“ `createStore: function() { var me = this, snippets = me.snippets.store; return Ext.create('Ext.data.JsonStore', { fields: ['value', 'display'], data: [{ value: 'selected\_article', display: snippets.selected\_article }, { value: 'newcomer', display: snippets.newcomer }, { value: 'topseller', display: snippets.topseller }, { value: 'random\_article', display: snippets.random\_article }, { value: 'radius\_article', display: snippets.radius\_article }] }); }` Ich find den Block indem das alles aufgerufen wird auch nicht. Wäre cool, wenn da mal jmd mit sehr viel Ahnung (auch Shopware darf sich angesprochen fühlen 😉 ) draufgucken könnte. Besten Dank!

---

<div class="post-metadata">

**Author:** ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)\
**Post date:** [8. April 2014 um 23:12 UTC](https://forum.shopware.com/t/einkaufwelten-element-mit-block-erweitern/19642/2 "2014-04-08T23:12:42Z")

</div>

Ohne einen smarty block hast du quasi nur eine Möglichkeit. 1.) Überschreibe die Artikel Komponente mit deiner eigenen. 2.) Überschreibe die createStore() Methode 3.) Hole den Rückgabewert vom parent, erweitere den json store entsprechend deinen Vorgaben und gebe den neuen store schließlich zurück. Da ich mir nicht sicher bin, ob du den store zur Laufzeit ändern kannst, musst du evtl. auch einen neuen store erzeugen. Viele Grüße

---

<div class="post-metadata">

**Author:** ![Ideenwirbler](https://avatars.discourse-cdn.com/v4/letter/i/7993a0/32.png) [@Ideenwirbler](https://forum.shopware.com/u/Ideenwirbler)\
**Post date:** [9. April 2014 um 08:50 UTC](https://forum.shopware.com/t/einkaufwelten-element-mit-block-erweitern/19642/3 "2014-04-09T08:50:51Z")

</div>

Vielen Dank schonmal, aber wie kann ich die createStore denn überschreiben? Sie befindet sich nicht in der article.js sondern in article\_type.js, welche ja keinen block hat. article.js `//{block name="backend/emotion/view/components/article"} //{namespace name=backend/emotion/view/components/article} Ext.define('Shopware.apps.Emotion.view.components.Article', { extend: 'Shopware.apps.Emotion.view.components.Base', alias: 'widget.emotion-components-article', snippets: { article: '{s name=article}Search article{/s}' }, /\*\* \* Base path which will be used from the component. \* @string \*/ basePath: '{link file=""}', /\*\* \* Initiliaze the component. \* \* @public \* @return void \*/ initComponent: function() { var me = this; me.callParent(arguments); me.articleSearch = me.down('emotion-components-fields-article'); me.articleSearch.searchField.setValue(me.articleSearch.hiddenField.getValue()); var value = ''; Ext.each(me.getSettings('record').get('data'), function(item) { if(item.key == 'article\_type') { value = item.value; return false; } }); if(!value || value !== 'selected\_article') { me.articleSearch.hide(); } } }); //{/block}` Und die article\_type.js `//{namespace name=backend/emotion/view/components/article} Ext.define('Shopware.apps.Emotion.view.components.fields.ArticleType', { extend: 'Ext.form.field.ComboBox', alias: 'widget.emotion-components-fields-article-type', name: 'article\_type', /\*\* \* Snippets for the component \* @object \*/ snippets: { fields: { 'article\_type': '{s name=article/fields/article\_type}Type of article{/s}', 'empty\_text': '{s name=article/fields/empty\_text}Please select...{/s}' }, store: { 'selected\_article': '{s name=article/store/selected\_article}Selected article{/s}', 'newcomer': '{s name=article/store/newcomer}Newcomer article{/s}', 'topseller': '{s name=article/store/topseller}Topseller article{/s}', 'random\_article': '{s name=article/store/random\_article}Random article{/s}', 'radius\_article': '{s name=article/store/radius\_article}Radius Artikel{/s}' } }, /\*\* \* Initiliaze the component. \* \* @public \* @return void \*/ initComponent: function() { var me = this; Ext.apply(me, { emptyText: me.snippets.fields.empty\_text, fieldLabel: me.snippets.fields.article\_type, displayField: 'display', valueField: 'value', queryMode: 'local', triggerAction: 'all', store: me.createStore() }); me.callParent(arguments); me.on('change', me.onArticleSelectChange, me); }, /\*\* \* Event listeners which triggers when the user changs the value \* of the select field. \* \* @public \* @event change \* @param [object] field - Ext.form.field.ComboBox \* @param [string] value - The selected value \*/ onArticleSelectChange: function(field, value) { var me = this; // Terminate the article search field if(!me.articleSearch) { me.articleSearch = me.up('fieldset').down('emotion-components-fields-article'); } // Show/hide article search field based on selected entry me.articleSearch.setVisible(value !== 'selected\_article' ? false : true); }, /\*\* \* Creates a local store which will be used \* for the combo box. We don't need that data. \* \* @public \* @return [object] Ext.data.Store \*/ createStore: function() { var me = this, snippets = me.snippets.store; return Ext.create('Ext.data.JsonStore', { fields: ['value', 'display'], data: [{ value: 'selected\_article', display: snippets.selected\_article }, { value: 'newcomer', display: snippets.newcomer }, { value: 'topseller', display: snippets.topseller }, { value: 'random\_article', display: snippets.random\_article }, { value: 'radius\_article', display: snippets.radius\_article }] }); } });`

---

<div class="post-metadata">

**Author:** ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)\
**Post date:** [9. April 2014 um 09:57 UTC](https://forum.shopware.com/t/einkaufwelten-element-mit-block-erweitern/19642/4 "2014-04-09T09:57:05Z")

</div>

In etwa so: ` Ext.define( "Shopware.apps.Emotion.view.MeinPlugin.components.fields.ArticleType", { // override the article type override: 'Shopware.apps.Emotion.view.components.fields.ArticleType', // override the method createStore: function() { // get this var me = this; // get parent store var result = me.callParent( arguments ); // do something // ... }, });` Viele Grüße

---

<div class="post-metadata">

**Author:** ![Ideenwirbler](https://avatars.discourse-cdn.com/v4/letter/i/7993a0/32.png) [@Ideenwirbler](https://forum.shopware.com/u/Ideenwirbler)\
**Post date:** [9. April 2014 um 12:26 UTC](https://forum.shopware.com/t/einkaufwelten-element-mit-block-erweitern/19642/5 "2014-04-09T12:26:24Z")

</div>

Vielen Dank, das bekomme ich hin 🙂

---

<div class="post-metadata">

**Author:** ![Sheppard](https://avatars.discourse-cdn.com/v4/letter/s/5fc32e/32.png) [@Sheppard](https://forum.shopware.com/u/Sheppard)\
**Post date:** [22. Juli 2015 um 17:15 UTC](https://forum.shopware.com/t/einkaufwelten-element-mit-block-erweitern/19642/6 "2015-07-22T17:15:56Z")

</div>

ich wollte mal fragen wie ich überhaupt ein Einkaufwelten Element erweitern kann. Ich habe es mit der gleichen Methode wie man zum Beispiel “Artikel Erstellen” erweitert aber so passiert bei mir nichts 😕 ` public function install(){ $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Backend\_Emotion', 'onPostDispatchBackendEmotion' ); return true; } public function onPostDispatchBackendEmotion(Enlight\_Event\_EventArgs $args) { $args-\>getSubject()-\>View()-\>addTemplateDir($this-\>Path() . 'Views/'); if ($args-\>getRequest()-\>getActionName() === 'index' ) { $args-\>getSubject()-\>View()-\>extendsTemplate('backend/emotion/view/components/article.js'); } }`

---

<div class="post-metadata">

**Author:** ![Arya\_Svitkona](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/arya_svitkona/32/15319_2.png) [@Arya\_Svitkona](https://forum.shopware.com/u/Arya_Svitkona)\
**Post date:** [30. Juni 2016 um 15:10 UTC](https://forum.shopware.com/t/einkaufwelten-element-mit-block-erweitern/19642/7 "2016-06-30T15:10:22Z")

</div>

Sobald eine Antwort drin ist ev. hilfreiche Querverlinkung:  
[Einkaufswelten / bestehende Elemente erweitern - Shopware Community Forum](https://forum.shopware.com/index.php?p=discussion/33540/einkaufswelten-bestehende-elemente-erweitern)

&nbsp;
