Eigenartiges Verhalten von eigenen CMS Blöcken

Hallo,

Ich beschäftige mich gerade mit der Erstellung eigener CMS Blöcke und habe mich dabei primär an diese Doku (Add CMS block - Shopware Developer) gehalten. Soweit klappt das meiste auch recht gut.

Eine Sache ist mir jedoch aufgefallen:

Wenn ich die slots nicht „left“,„center-left“,„center-right“,„right“ benenne sondern zB: „text-1“,„text-2“,„text-3“,„text-4“ lässt es sich mit diesen zwar auch arbeiten, im Layout-Editor im Backend werden die Felder aber (wohlgemerkt erst nach dem Speichern) in zufälliger Reihenfolge angezeigt. Dasselbe Problem besteht dann auch in dem Layout Tab auf Kategorieseiten.

Dadurch ist für den Redakteur nicht mehr ersichtlich, welche Felder er gerade bearbeitet.

Anbei einmal der Unterschied in meinem Test-Block:
import ‚./component‘;
import ‚./preview‘;

Shopware.Service(‚cmsService‘).registerCmsBlock({
name: ‚test‘,
category: ‚id8‘,
label: ‚Test‘,
component: ‚sw-cms-block-test‘,
previewComponent: ‚sw-cms-preview-test‘,
defaultConfig: {

},
slots: {
    'text-1': 'text',
    'text-2': 'text',
    'text-3': 'text',
    'text-4': 'text',
},

});

import ‚./component‘;
import ‚./preview‘;

Shopware.Service(‚cmsService‘).registerCmsBlock({
name: ‚test‘,
category: ‚id8‘,
label: ‚Test‘,
component: ‚sw-cms-block-test‘,
previewComponent: ‚sw-cms-preview-test‘,
defaultConfig: {

},
slots: {
    'left': 'text',
    'center-left': 'text',
    'center-right': 'text',
    'right': 'text',
},

});

Getestet auf Shopware6 6.4.17.1. Aufgefallen ist mir das Verhalten bei der Erstellung eines Blocks mit 9 Slots. Hier würden „left“ & „right“ als Namen auch nicht mehr ausreichen.

Nun ist die Frage, gibt es hier vordefinierte Slot Namen, die zu nutzen sind? Lässt sich die Reihenfolge ggfs. irgendwo definieren? Oder handelt es sich dabei noch um einen Bug? Jemand eine Idee?

Viele Grüße,
Lars

Es gibt in shopware eine manuelle Sortierung für die slots. Kannst diese aber mit deinen eigenen slots erweitern. Da wird jedem slotnamen eine Zahl zugeordnet

1 „Gefällt mir“

Das klingt super! Weißt du wo ich die finde bzw. überschreiben kann?

const { Component } = Shopware;

Component.override('sw-cms-page-form', {
    computed: {
        slotPositions() {
            const slotPositions = this.$super('slotPositions');

            slotPositions['slot-a'] = 1;
            slotPositions['slot-b'] = 2;
            slotPositions['slot-c'] = 3;
            slotPositions['slot-d'] = 4;
            slotPositions['slot-e'] = 5;
            slotPositions['slot-f'] = 6;
            slotPositions['slot-g'] = 7;
            slotPositions['slot-h'] = 8;
            slotPositions['slot-i'] = 9;
            slotPositions['slot-j'] = 10;

            return slotPositions;
        },
    },
});

Vielen Dank! Jetzt läuft wieder alles wie es soll :slight_smile: