Shop Logos automatisch bei Theme-Plugin Installation setzen?

Hallo zusammen,

gibt es eine Möglichkeit, ein im Plugin-Verzeichnis hinterlegtes Bild bei der Installation des Plugins automatisch als Logo für das Theme zu setzen? (Desktop, Mobile usw.)

Momentan mache ich es so, dass ich in der postInstall des Plugins die Bild Datei einlese und dann über den MediaService in die Datenbank schreibe. Jetzt müsste ich dann in der Tabelle “theme” das Feld “config_values” setzen mit der jeweiligen MediaID. Ist natürlich ne Möglichkeit aber finde es irgendwie wie mit dem Finger durch die Brust ins Auge.

Vielleicht gibt es ja einen eleganteren Weg, nur kann ich das ja nicht in die themes.json packen, weil ich zu dem Zeitpunkt ja noch keine MediaID habe um z.B. “sw-logo-desktop” zu setzen.

Über Ideen oder Anregungen würde ich mich sehr freuen.

MfG DerChris

das geht ganz prima über die theme.json:

"sw-logo-desktop": {
    "label": {
        "en-GB": "Desktop",
        "de-DE": "Desktop"
    },
    "helpText": {
        "en-GB": "Displayed for viewports of above 991px",
        "de-DE": "Wird über einem Viewport von 991px angezeigt"
    },
    "type": "media",
    "value": "app/storefront/dist/assets/logo/deinlogo.svg",
    "editable": true,
    "block": "media",
    "order": 100
}

die komplette theme.json findest du hier: https://github.com/shopware/platform/blob/master/src/Storefront/Resources/theme.json

 Vielen Dank, das hat mir sehr geholfen.

@mediaciety schrieb:

das geht ganz prima über die theme.json:

„sw-logo-desktop“: {
„label“: {
„en-GB“: „Desktop“,
„de-DE“: „Desktop“
},
„helpText“: {
„en-GB“: „Displayed for viewports of above 991px“,
„de-DE“: „Wird über einem Viewport von 991px angezeigt“
},
„type“: „media“,
„value“: „app/storefront/dist/assets/logo/deinlogo.svg“,
„editable“: true,
„block“: „media“,
„order“: 100
}

die komplette theme.json findest du hier: https://github.com/shopware/platform/blob/master/src/Storefront/Resources/theme.json

Das ganze funktioniert bei mir leider nicht. Meine theme.json

"sw-logo-desktop": {
		"value": "app/storefront/dist/assets/logo.png"
},
"sw-logo-tablet": {
		"value": "app/storefront/dist/assets/logo.png"
},
"sw-logo-mobile": {
		"value": "app/storefront/dist/assets/logo.png"
},
"sw-logo-share": {
		"value": "app/storefront/dist/assets/icon.png"
},
"sw-logo-favicon": {
		"value": "app/storefront/dist/assets/favicon.png"
}

Die Bilder liegen unter custom/plugins/theme/src/Resources/app/storefront/dist/assets und werden im Frontend leider nur so eingebunden wie sie in der theme.json stehen: shop.dev/app/storefront/dist/assets/logo.png 

Klinke mich auch rein, weil es nicht geht und ich das gleiche erreichen will.

Die Bilder liegen unter custom/plugins/theme/src/Resources/app/storefront/dist/assets und werden im Frontend leider nur so eingebunden wie sie in der theme.json stehen: shop.dev/app/storefront/dist/assets/logo.png 

Das ist eig. nicht der richtige Ort.
Deine assets sollten unter app/storefront/src/assets liegen (neben den scss).
Diesen Pfad definierst du in der theme.json unter “asset”

"asset": [
    "app/storefront/src/assets"
  ]

Die assets aus diesem Ordner werden dann nach /public/bundles/deinplugin/assets kopiert, damit diese nach außen erreichbar sind.
Trotzdem: Die Angabe eines Logos will hier nicht, habe auch gefühlt alle Variationen unter “value” durch mit Pfaden, leider wird nichts angezeigt :confused:

Niklas

Ich interessiere mich ebenfalls für die Lösung. Ich habe bereits alle Pfade durchprobiert, bisher aber kein Glück. Die Pfade scheinen wie von @TeichDatensysteme‍ beschrieben nur den Unterschied zu machen, ob das Bild auch extern erreichbar ist.

Oder verstehe ich die Antwort von @mediaciety‍ so, dass ich die gesamte Definition des Eingabefelds wiederholen sollte?

Merkwürdig übrigens: Mein via “previewMedia” definiertes Bild liegt danach im Medienmanager vor, hatte dies unter “app/storefront/dist/assets/xxxThemePreview.jpg” abgelegt.

Okay, ich glaube die Lösung für die Erweiterung der theme.json um neue Bilder als Vorbelegung gefunden zu haben:

 

     "sw-logo-desktop": {
        "type": "media",
        "value": "app/storefront/dist/assets/logo/XXX-logo.png"
      },
      "sw-logo-tablet": {
        "type": "media",
        "value": "app/storefront/dist/assets/logo/XXX-logo.png"
      },
      "sw-logo-mobile": {
        "type": "media",
        "value": "app/storefront/dist/assets/logo/XXX-logo.png"
      },
      "sw-logo-share": {
        "type": "media",
        "value": "app/storefront/dist/assets/logo/XXX-favicon.png"
      },
      "sw-logo-favicon": {
        "type": "media",
        "value": "app/storefront/dist/assets/logo/XXX-favicon.png"
      }

Der eigentliche Clou ist, dass die Dateinamen einzigartig sein müssen, und das „type“: „media“ davor stehen muss. Kann das jemand verifizieren?

@wnboes schrieb:

Der eigentliche Clou ist, dass die Dateinamen einzigartig sein müssen, und das “type”: “media” davor stehen muss. Kann das jemand verifizieren?

Das ist korrekt. Erst beim Typ m** edia  wird beim theme:refresh** die Grafik in den Ordner /public/media/ … kopiert.