Eigener Menü-Eintrag im Backend

Hallo zusammen,

ich habe nach folgender Dokumentation versucht ein Menü-Eintrag im Bereich „Katalog“ anzulegen:

Leider ist es mir nach mehrfachen versuchen nicht gelungen einen Eintrag zu setzen:

Wie folgt bin ich vorgegangen:

1.) Plugin über die Konsole erstellt
2.) main.js angelegt
3.) index.js angelegt
4.) snippets angelegt für DE & EN

Das sollte eigentlich alles korrekt sein, damit ein Menüeintrag im Backend unter Katalog sichtbar ist

EmailTool/src/Resources/app/administration/src/main.js

import './module/mail-sender';

EmailTool/src/Resources/app/administration/src/module/mail-sender/index.js

import deDE from './snippet/de-DE';
import enGB from './snippet/en-GB';

Shopware.Module.register('mail-sender', {
    type: 'plugin',
    name: 'mail-sender',
    title: 'mail-sender.general.mainMenuItemGeneral',
    description: 'sw-property.general.descriptionTextModule',
    color: '#ff3d58',
    icon: 'default-shopping-paper-bag-product',

    snippets: {
        'de-DE': deDE,
        'en-GB': enGB
    },

    routes: {
        list: {
            component: 'swag-example-list',
            path: 'list'
        },
        detail: {
            component: 'swag-example-detail',
            path: 'detail/:id',
            meta: {
                parentPath: 'swag.example.list'
            }
        },
        create: {
            component: 'swag-example-create',
            path: 'create',
            meta: {
                parentPath: 'swag.example.list'
            }
        }
    },

    navigation: [{
        id: 'mailsender-custommodule-list',
        label: 'mail-sender.general.mainMenuItemGeneral',
        color: '#ff3d58',
        path: 'swag.example.list',
        icon: 'default-shopping-paper-bag-product',
        parent: 'sw-catalogue',
        position: 100
    }]
});

EmailTool/src/Resources/app/administration/src/module/mail-sender/snippet/de-DE/de-DE.json

{
  "mail-sender": {
    "general": {
      "mainMenuItemGeneral": "My custom module",
      "descriptionTextModule": "Manage this custom module here"
    }
  }
}

Ich lese nix von ./bin/build-administration.sh

Hast du das auf den Konsole ausgeführt?

Habe es einige Male versucht, aber das Skript stürzt immer ab.

0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'run', 'build' ]
2 info using npm@6.14.15
3 info using node@v12.22.7
4 verbose run-script [ 'prebuild', 'build', 'postbuild' ]
5 info lifecycle administration@1.0.0~prebuild: administration@1.0.0
6 info lifecycle administration@1.0.0~build: administration@1.0.0
7 verbose lifecycle administration@1.0.0~build: unsafe-perm in lifecycle true
8 verbose lifecycle administration@1.0.0~build: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/var/www/html/vendor/shopware/administration/Resources/app/administration/node_modules/.bin:/u
sr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
9 verbose lifecycle administration@1.0.0~build: CWD: /var/www/html/vendor/shopware/administration/Resources/app/administration
10 silly lifecycle administration@1.0.0~build: Args: [ '-c', 'mode=production webpack' ]
11 silly lifecycle administration@1.0.0~build: Returned: code: 1  signal: null
12 info lifecycle administration@1.0.0~build: Failed to exec build script
13 verbose stack Error: administration@1.0.0 build: `mode=production webpack`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack     at EventEmitter.emit (events.js:314:20)
13 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:314:20)
13 verbose stack     at maybeClose (internal/child_process.js:1022:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5)
14 verbose pkgid administration@1.0.0
15 verbose cwd /var/www/html/vendor/shopware/administration/Resources/app/administration
16 verbose Linux 5.10.102.1-microsoft-standard-WSL2
17 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "build"
18 verbose node v12.22.7
19 verbose npm  v6.14.15
20 error code ELIFECYCLE
21 error errno 1
22 error administration@1.0.0 build: `mode=production webpack`
22 error Exit status 1
23 error Failed at the administration@1.0.0 build script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

Kann dir bei dem Fehler leider nicht weiterhelfen. Bevor Webpack dein JS aber nicht verarbeitet hat, wirst du im Backend nichts sehen.

Im Backend wird erst was zu sehen sein, wenn du den build ausgeführt hast. Wenn du in Docker entwickelst versuch mal ./psh.phar administration:build

Bin inzwischen auf Dockware umgestiegen. Ohne meine Plugin klappt ./psh.phar administration:build einwandfrei.

Sobald ich das Plugin aktiviere, stürzt es ab…

Inzwischen läuft das Script einwandfrei und die js wird erzeugt. Dennoch sehe ich keine Änderung im Backend ‚‘-.-

Gelöst… Das Script ./psh.phar administration:build erstellt die Js Datei ohne Bindestriche

Datei müsste bspw mail-sender.js lauten, erzeugt wird mailsender.js

1 Like

Bei Shopware musst du aufpassen. Es gibt x unterschiedliche Konventionen, was die Groß-, Kleinschreibung, Binde- und Unterstrich angeht. Am besten an den Shopware Dateien orientieren.