Methode überschreiben

Hallo, ich möchte eine Methode in der untenstehenden Datei überschreiben: /templates/_default/backend/order/view/list/document.js es handelt sich genauer gesagt um: /** * Columns renderer for the name column * @param value */ nameColumn: function(value, metaData, record, rowIndex, colIndex, store, view) { var helper = new Ext.dom.Helper, display = ‘’, type = record.getDocType().first(); if (record.get(‘typeId’) === 4) { display = type.get(‘name’); } else { display = type.get(‘name’) + ’ ’ + Ext.String.leftPad(record.get(‘documentId’), 8, ‘0’); } var spec = { tag: ‘a’, html: display, href: ‘{url action=“openPdf”}?id=’ + record.get(‘hash’), target: ‘_blank’ }; return helper.markup(spec); }, Ich möchte den Namen der angezeigten Datei in Abhängigkeit von ihrem Typ (ID) ändern und ich möchte es mit Hilfe von Override richtig machen. Ich weiß, dass die von mir erstellte Datei geladen wird, doch die ursprüngliche Methode wird nicht überschrieben. Habe ich die Datei richtig konfiguriert? Bitte um Hilfe! console.log(“ok!!”); /** * * WAS MUSS GEÄNDERT WERDEN, DAMIT ES FUNKTIONIERT? */ /** * Shopware UI - Order list backend module * * The order document list */ //{block name=“backend/order/view/list/document” append} //{namespace name=“backend/article/swag_article_orders_tab/view/list”} Ext.define(‘Shopware.apps.Order.view.swagArticleOrders.list.Document’, { /** * Defines an override applied to a class. * @string */ override: ‘Shopware.apps.Order.view.list.Document’, /** * Columns renderer for the name column * @param value */ nameColumn: function(value, metaData, record, rowIndex, colIndex, store, view) { var helper = new Ext.dom.Helper, display = ‘’, type = record.getDocType().first(); if (record.get(‘typeId’) === 4) { display = type.get(‘name’); } else { display = type.get(‘name’) + ’ ’ + Ext.String.leftPad(record.get(‘documentId’), 8, ‘0’); } var spec = { tag: ‘a’, html: display, href: ‘{url action=“openPdf”}?id=’ + record.get(‘hash’), target: ‘_blank’ }; return helper.markup(spec); } }); //{/block} Vielen Dank für Ihre Antworten im Voraus!

Könntest du bitte einmal kurz formulieren, was du genau willst und was an dem bisherigen Code nicht funktioniert. Bin nicht ganz Schlau draus geworden. Liebe Grüße Kerstin

Hallo, ich schreibe ein Plugin und ich möchte die untenstehende Datei überschreiben: /templates/_default/backend/order/view/list/document.js Genauer gesagt eine Methode in dieser Datei: nameColumn: function(value, metaData, record, rowIndex, colIndex, store, view) { var helper = new Ext.dom.Helper, display = ‘’, type = record.getDocType().first(); display = type.get(‘name’); /* ich möchte, dass immer in Display der Dateiname steht */ var spec = { tag: ‘a’, html: display, href: ‘{url action=“openPdf”}?id=’ + record.get(‘hash’), target: ‘_blank’ }; return helper.markup(spec); },

Für JavaScript gibt es hier kein Blocksystem, du müsstest also die ganze Datei überschreiben.

Danke, Was meinst Du dadurch? Soll man die ganze Datei kopieren und einfügen oder wie?

Hi, im Backend gibt es eine Kombination aus Smarty-Blöcken und ExtJS-Overrides: In deinem Fall musst du den Smarty-Block backend/order/view/list/document erweitern und einen Override auf die ExtJS-Klasse Shopware.apps.Order.view.list.Document definieren. Da kannst du dann gezielt einzelne Methoden überschreiben. Gezeigt ist das beispielsweise hier im Wiki: http://wiki.shopware.com/Schuhgr%C3%B6% … undenliste Auch im Backend gibt es also ein Erweiterungssystem, so dass das Komplette Ersetzen von Dateien nicht nötig ist. Besten Gruß, Daniel