# Sidebar rechts Admin Artikeldetailseite erweitern

**URL:** <https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [6. Juni 2013 um 22:35 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620 "2013-06-06T22:35:08Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![Almare](https://avatars.discourse-cdn.com/v4/letter/a/a87d85/32.png) [@Almare](https://forum.shopware.com/u/Almare)\
**Post date:** [6. Juni 2013 um 22:35 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/1 "2013-06-06T22:35:08Z")

</div>

Ich würde gern für mein eigenes Plugin die Übersicht der Artikeldetailseite erweitern. Dazu hatte ich vor in die rechte Sidbar einen weitere Accordion Reiter einzufügen. Leider hab ich dazu keinerlei Infos gefunden. Weis hier jemand Rat oder hat ein Stück Code zum Verständnis? Danke

---

<div class="post-metadata">

**Author:** ![Tr0nYx](https://avatars.discourse-cdn.com/v4/letter/t/eb9ed0/32.png) [@Tr0nYx](https://forum.shopware.com/u/Tr0nYx)\
**Post date:** [11. Juni 2013 um 11:34 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/2 "2013-06-11T11:34:22Z")

</div>

unter templates/\_default/backend/article/view/detail/sidebar.js: ` createElements: function() { var me = this; return [{ xtype: 'article-sidebar-option', shopStore: me.shopStore, article: me.article, animCollapse: Ext.isChrome, animate: Ext.isChrome }, { xtype: 'article-sidebar-link', article: me.article, animCollapse: Ext.isChrome, animate: Ext.isChrome }, { xtype: 'article-sidebar-accessory', article: me.article, gridStore: me.article.getAccessory(), animCollapse: Ext.isChrome, animate: Ext.isChrome }, { xtype: 'article-sidebar-similar', article: me.article, gridStore: me.article.getSimilar(), animCollapse: Ext.isChrome, animate: Ext.isChrome }]; } ` kannst du in nem eigenem Plugin per override noch ein weiteres element hinzufügen und unter templates/\_default/backend/article/view/detail/sidebar/ findest du die dazugehörigen elemente.

---

<div class="post-metadata">

**Author:** ![Almare](https://avatars.discourse-cdn.com/v4/letter/a/a87d85/32.png) [@Almare](https://forum.shopware.com/u/Almare)\
**Post date:** [11. Juni 2013 um 18:43 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/3 "2013-06-11T18:43:44Z")

</div>

Danke für die Antwort. Ja, das hab ich schon gesehen und auch probiert, aber leider wird der Reiter nicht angezeigt. Insofern hat mir das nicht wirklich weitergebracht. Ich denke ich hab einen anderen groben Fehler gemacht. Daher die Frage nach einem Stück Code um zu sehen wo mein Fehler liegt. meine Sidebar.js ` //{namespace name="backend/MeinPlugin/view/main"} //{block name="backend/meinplugin/view/detail/sidebar" append} Ext.define('Shopware.apps.MeinPlugin.view.detail.Sidebar', { override : 'Shopware.apps.Article.view.detail.Sidebar', initComponent: function() { var me = this; var newTab = new Ext.Panel({ layout: 'fit', html: 'New Tab', title: 'New Tab', closable: true }); me.add(me.newTab); me.callParent(arguments); } }); // {/block} ` Dies ist mein letzter Versuch gewesen überhaupt eine Ausgabe und einen Reiter zu erzeugen. Es geht erstmal grundsätzlich darum Reiter bei den Artikeln anlegen zu können. Wo liegt mein Fehler? Einen Auszug aus der Bootstrap kann ich auch liefern falls das weiter helfen würde.

---

<div class="post-metadata">

**Author:** ![Tr0nYx](https://avatars.discourse-cdn.com/v4/letter/t/eb9ed0/32.png) [@Tr0nYx](https://forum.shopware.com/u/Tr0nYx)\
**Post date:** [11. Juni 2013 um 18:53 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/4 "2013-06-11T18:53:16Z")

</div>

der block Name darf nicht auf dein Plugin zeigen, sondern auf article/view/Detail/sidebar. wenn dann noch nicht klappt wär ein Auszug aus der bootstrap hilfreich

---

<div class="post-metadata">

**Author:** ![Almare](https://avatars.discourse-cdn.com/v4/letter/a/a87d85/32.png) [@Almare](https://forum.shopware.com/u/Almare)\
**Post date:** [11. Juni 2013 um 22:09 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/5 "2013-06-11T22:09:53Z")

</div>

Super das funktioniert jetzt. Allerdings überschreibe ich die Standard Tabs und sehe nun nur mein eigenes Tab. ` //{namespace name="backend/meinplugin/view/main"} //{block name="backend/article/view/detail/sidebar"} Ext.define('Shopware.apps.Ebay.view.detail.Sidebar', { override : 'Shopware.apps.Article.view.detail.Sidebar', /\*\* \* The initComponent template method is an important initialization step for a Component. \* It is intended to be implemented by each subclass of Ext.Component to provide any needed constructor logic. \* The initComponent method of the class being created is called first, \* with each initComponent method up the hierarchy to Ext.Component being called thereafter. \* This makes it easy to implement and, if needed, override the constructor logic of the Component at any step in the hierarchy. \* The initComponent method must contain a call to callParent in order to ensure that the parent class' initComponent method is also called. \* \* @return void \*/ initComponent:function () { var me = this; me.items = me.createElements(); me.callParent(arguments); }, /\*\* \* Creates the elements for the sidebar container. \* @return array \*/ createElements: function() { var me = this; return [{ xtype: 'article-sidebar-meinplugin', article: me.article, animCollapse: Ext.isChrome, animate: Ext.isChrome }]; } }); // {/block} ` irgendwie klar. Nun hab ich einiges mit add() probiert jedoch ohne Erfolg. Hast du dazu evt auch eine Idee, wie ich das add() korrekt verwende?

---

<div class="post-metadata">

**Author:** ![Tr0nYx](https://avatars.discourse-cdn.com/v4/letter/t/eb9ed0/32.png) [@Tr0nYx](https://forum.shopware.com/u/Tr0nYx)\
**Post date:** [11. Juni 2013 um 23:37 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/6 "2013-06-11T23:37:17Z")

</div>

du musst per calloverridden den return value der originalfunktion holen, dann kannst du per items.push deinen Reiter hinzufügen. Ich post dir morgen nen codeschnippsel dazu, PC is schon aus und nur fix mobil online 🙂 Edit: ` //{namespace name="backend/meinplugin/view/main"} //{block name="backend/article/view/detail/sidebar"} Ext.define('Shopware.apps.Ebay.view.detail.Sidebar', { override : 'Shopware.apps.Article.view.detail.Sidebar', /\*\* \* Creates the elements for the sidebar container. \* @return array \*/ createElements: function() { var me = this, elements = me.callOverridden(arguments); var myplugin = [{ xtype: 'article-sidebar-meinplugin', article: me.article, animCollapse: Ext.isChrome, animate: Ext.isChrome }]; elements.items.push(myplugin); return elements; } }); // {/block} ` so in der richtung 😉

---

<div class="post-metadata">

**Author:** ![Almare](https://avatars.discourse-cdn.com/v4/letter/a/a87d85/32.png) [@Almare](https://forum.shopware.com/u/Almare)\
**Post date:** [12. Juni 2013 um 16:17 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/7 "2013-06-12T16:17:22Z")

</div>

Nochmals danke für deinen Tipp und deinen Code. Hab das eingebaut und es wird ein Tab mehr angezeigt allerdings ohne Titel und Content. Die Info zur elements.items.push(myplugin); funktioniert nicht ganz und hab das geändert auf elements.push(myplugin); Jetzt erscheint der Reiter, aber wie gesagt ohne Titel und Inhalt. Zumindest bin jetzt auf dem richtigen Weg. Warte dann mal gespannt auf deinen Code Schnipsel. 🙂

---

<div class="post-metadata">

**Author:** ![Tr0nYx](https://avatars.discourse-cdn.com/v4/letter/t/eb9ed0/32.png) [@Tr0nYx](https://forum.shopware.com/u/Tr0nYx)\
**Post date:** [12. Juni 2013 um 18:45 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/8 "2013-06-12T18:45:44Z")

</div>

den title und inhalt musst du in templates/\_default/backend/article/view/detail/sidebar/meinplugin.js definieren 😉

---

<div class="post-metadata">

**Author:** ![Almare](https://avatars.discourse-cdn.com/v4/letter/a/a87d85/32.png) [@Almare](https://forum.shopware.com/u/Almare)\
**Post date:** [12. Juni 2013 um 18:57 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/9 "2013-06-12T18:57:05Z")

</div>

Ja die hab ich auch und da steht folgendes drin. ` //{namespace name=backend/article/view/main} //{block name="backend/article/view/detail/sidebar/meinplugin"} Ext.define('Shopware.apps.Article.view.detail.sidebar.MeinPlugin', { /\*\* \* Define that the billing field set is an extension of the Ext.form.FieldSet \* @string \*/ extend:'Ext.form.Panel', /\*\* \* List of short aliases for class names. Most useful for defining xtypes for widgets. \* @string \*/ alias:'widget.article-sidebar-meinplugin', /\*\* \* Set css class for this component \* @string \*/ cls: Ext.baseCSSPrefix + 'article-sidebar-meinplugin', /\*\* \* Contains all snippets for the view component \* @object \*/ snippets:{ title:'{s name=detail/sidebar/meinplugin/title}Mein Plugin{/s}', }, bodyPadding: 10, autoScroll: true, /\*\* \* Helper property which contains the name of the add event which fired when the user \* clicks the button of the form panel \*/ addEvent: 'addMeinPluginArticle', /\*\* \* The initComponent template method is an important initialization step for a Component. \* It is intended to be implemented by each subclass of Ext.Component to provide any needed constructor logic. \* The initComponent method of the class being created is called first, \* with each initComponent method up the hierarchy to Ext.Component being called thereafter. \* This makes it easy to implement and, if needed, override the constructor logic of the Component at any step in the hierarchy. \* The initComponent method must contain a call to callParent in order to ensure that the parent class' initComponent method is also called. \* \* @return void \*/ initComponent:function () { var me = this; me.title = me.snippets.title; me.items = me.createElements(); me.callParent(arguments); }, /\*\* \* Creates the elements for the similar article panel. \* @return array \*/ createElements: function() { var me = this; me.noticeContainer = me.createNoticeContainer(); return [me.noticeContainer]; }, /\*\* \* Creates the notice container for the similar articles panel. \* @return Ext.container.Container \*/ createNoticeContainer: function() { var me = this; return Ext.create('Ext.container.Container', { cls: Ext.baseCSSPrefix + 'global-notice-text', html: "Text Text Text" }); }, }); //{/block} `

---

<div class="post-metadata">

**Author:** ![Tr0nYx](https://avatars.discourse-cdn.com/v4/letter/t/eb9ed0/32.png) [@Tr0nYx](https://forum.shopware.com/u/Tr0nYx)\
**Post date:** [12. Juni 2013 um 19:05 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/10 "2013-06-12T19:05:28Z")

</div>

addEvent brauchst du ja scheinbar nicht, wenn dus nicht registrierst und createElements und CreateNoticeContainer kannst du zusammenfassen und das komma hinter createnoticecontainer ist überflüssig ` //{namespace name=backend/article/view/main} //{block name="backend/article/view/detail/sidebar/meinplugin"} Ext.define('Shopware.apps.Article.view.detail.sidebar.MeinPlugin', { /\*\* \* Define that the billing field set is an extension of the Ext.form.FieldSet \* @string \*/ extend:'Ext.form.Panel', /\*\* \* List of short aliases for class names. Most useful for defining xtypes for widgets. \* @string \*/ alias:'widget.article-sidebar-meinplugin', /\*\* \* Set css class for this component \* @string \*/ cls: Ext.baseCSSPrefix + 'article-sidebar-meinplugin', /\*\* \* Contains all snippets for the view component \* @object \*/ snippets:{ title:'{s name=detail/sidebar/meinplugin/title}Mein Plugin{/s}', }, bodyPadding: 10, autoScroll: true, /\*\* \* The initComponent template method is an important initialization step for a Component. \* It is intended to be implemented by each subclass of Ext.Component to provide any needed constructor logic. \* The initComponent method of the class being created is called first, \* with each initComponent method up the hierarchy to Ext.Component being called thereafter. \* This makes it easy to implement and, if needed, override the constructor logic of the Component at any step in the hierarchy. \* The initComponent method must contain a call to callParent in order to ensure that the parent class' initComponent method is also called. \* \* @return void \*/ initComponent:function () { var me = this; me.title = me.snippets.title; me.items = me.createElements(); me.callParent(arguments); }, /\*\* \* Creates the elements for the similar article panel. \* @return array \*/ createElements: function() { var me = this; return Ext.create('Ext.container.Container', { cls: Ext.baseCSSPrefix + 'global-notice-text', html: "Text Text Text" }); } }); //{/block} ` falls es immer noch nicht geht müsste FireBug was ausspucken 🙂

---

<div class="post-metadata">

**Author:** ![Almare](https://avatars.discourse-cdn.com/v4/letter/a/a87d85/32.png) [@Almare](https://forum.shopware.com/u/Almare)\
**Post date:** [12. Juni 2013 um 21:04 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/11 "2013-06-12T21:04:49Z")

</div>

Also ich hab das so abgeändert wie du geschrieben hattest. Der Container ist nach wie vor leer und Firebug ist still. Evt. sollte ich erwähnen, dass ich das Benchmark Plugin nicht installiert habe, da es bei mir PHP Fehler wirft. Ich hab nur Log,Debug und Benchmark aktiv. Evt liegt es daran, bin aber nicht sicher, da es in firephp ausgaben gibt.

---

<div class="post-metadata">

**Author:** ![Tr0nYx](https://avatars.discourse-cdn.com/v4/letter/t/eb9ed0/32.png) [@Tr0nYx](https://forum.shopware.com/u/Tr0nYx)\
**Post date:** [12. Juni 2013 um 21:48 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/12 "2013-06-12T21:48:41Z")

</div>

mach mal in createelemnts ein console.log(me) dann merkst ob die Funktion über haupt aufgerufen wird.

---

<div class="post-metadata">

**Author:** ![Almare](https://avatars.discourse-cdn.com/v4/letter/a/a87d85/32.png) [@Almare](https://forum.shopware.com/u/Almare)\
**Post date:** [13. Juni 2013 um 08:33 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/13 "2013-06-13T08:33:12Z")

</div>

Ja, da kommt was. Gut das funktioniert. Jetzt hab ich mal getestet was passiert wenn ich die Reihenfolge ändere in der createElements() So erscheint mein Reiter mit Titel und Content, zusätzlich ist ein weiterer Reiter da, der aber leer ist. ` elements = me.createTab(); elements.push(me.callOverridden(arguments)); ` Wenn ich die Reihenfolge wieder ändere zu ` elements = me.callOverridden(arguments); elements.push( me.createTab()); ` Erscheinen die standart Reiter plus ein leerer. Ich denke irgendwo wird da noch etwas überschrieben, bzw nicht korrekt übergeben… ???

---

<div class="post-metadata">

**Author:** ![Tr0nYx](https://avatars.discourse-cdn.com/v4/letter/t/eb9ed0/32.png) [@Tr0nYx](https://forum.shopware.com/u/Tr0nYx)\
**Post date:** [13. Juni 2013 um 09:05 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/14 "2013-06-13T09:05:36Z")

</div>

kannst du mal deine js files aus dem ordner view als attachment zur Verfügung stellen? also brauch nicht controller js files etc 🙂

---

<div class="post-metadata">

**Author:** ![Almare](https://avatars.discourse-cdn.com/v4/letter/a/a87d85/32.png) [@Almare](https://forum.shopware.com/u/Almare)\
**Post date:** [13. Juni 2013 um 18:34 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/15 "2013-06-13T18:34:17Z")

</div>

Klar, ich hab mal mein ganzes Plugin hochgeladen bzw. Die Auszüge die für das Tab verantwortlich sein sollten. Evt. haben andere ebenfalls mal das selbe Problem … Ich glaub ich kann hier keine Attachments anhängen ???

---

<div class="post-metadata">

**Author:** ![Tr0nYx](https://avatars.discourse-cdn.com/v4/letter/t/eb9ed0/32.png) [@Tr0nYx](https://forum.shopware.com/u/Tr0nYx)\
**Post date:** [14. Juni 2013 um 08:43 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/16 "2013-06-14T08:43:21Z")

</div>

stimmt o.O kannst es ja als zip auf deinem webspace packen und den link posten 😉

---

<div class="post-metadata">

**Author:** ![Almare](https://avatars.discourse-cdn.com/v4/letter/a/a87d85/32.png) [@Almare](https://forum.shopware.com/u/Almare)\
**Post date:** [14. Juni 2013 um 09:07 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/17 "2013-06-14T09:07:13Z")

</div>

Ich habs mal auf einen File Uploader gelegt und das ganze als Plugin zusammengestellt. Evt. kann das ja später noch jemand gebrauchen. [MeinPlugin.rar](http://www.file-upload.net/download-7714367/MeinPlugin.rar.html)

---

<div class="post-metadata">

**Author:** ![markus.h](https://avatars.discourse-cdn.com/v4/letter/m/a587f6/32.png) [@markus.h](https://forum.shopware.com/u/markus.h)\
**Post date:** [10. Juli 2013 um 17:34 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/18 "2013-07-10T17:34:29Z")

</div>

Hi! Vermutlich ist es schon gelöst, aber in deinem aktuellen Code überschreibst du den bestehenden Block du solltes dein Object anhängen: `//{block name="backend/article/view/detail/sidebar" append}`

---

<div class="post-metadata">

**Author:** ![Almare](https://avatars.discourse-cdn.com/v4/letter/a/a87d85/32.png) [@Almare](https://forum.shopware.com/u/Almare)\
**Post date:** [11. Juli 2013 um 19:39 UTC](https://forum.shopware.com/t/sidebar-rechts-admin-artikeldetailseite-erweitern/13620/19 "2013-07-11T19:39:38Z")

</div>

Vielen Dank für den Hinweis. Tatsächlich ist es so das immer noch nicht funktioniert. Ich hab deine Ergänzung lokal hinzugefügt aber es läuft einfach nicht. Vielleicht fallen dir noch mehr Fehler von mir auf. Ich würde wenn es denn mal funktioniert den richtigen Code hier posten. Danke dennoch für deine Ergänzung. Ich denke das wird einige Interessieren leider geht mein Beispiel hier noch nicht. ☹
