Hallo,
technisch gesehen ist eine Möglichkeit im Core Vorhanden um den Kategorie-Baum rekursiv zu duplizieren. Wurde wahrscheinlich nur nicht aktiviert, weil man sich damit auch leicht den Shop zerschießen kann. Außerdem würden die SEO Urls Probleme bereiten.
Ich habe einen ähnlichen Fall vor ca. einem Jahr bei einem meiner Kunden. Ich denke man könnte Stand jetzt ein Plugin bauen um die Sichtbarkeit und eine CMS Page Zuweisung pro Verkaufskanal zu steuern. Würde aus meiner Sicht mehr Sinn machen. Nur was darf sowas kosten? Ich denke 2-3 Tage muss man dafür einplanen.
Dazu wäre mein Ansatz eine Relationstabelle anlegen und die navigationRoute neu dekorieren. Dort die Criteara mit der Relationstabelle + SalesChannel-spezifische Filter anreichern. Anschließend das sales_channel.category.loaded Event abfangen und dort die ID der CMS Page überschreiben…
Oder wenn du doch nur die Kategorien klonen willst:
Folgende Stellen sind relevant:
src/Administration/Resources/app/administration/src/module/sw-category/component/sw-category-tree/sw-category-tree.html.twig
:allow-duplicate="true"
src/Administration/Resources/app/administration/src/module/sw-category/component/sw-category-tree/index.js (Methode einbauen)
async duplicateElement(contextItem) {
const behavior = {
cloneChildren: true,
overwrites: {
name: `${contextItem.data.name} ${this.$tc('global.default.copy')}`
}
};
await this.categoryRepository.clone(contextItem.id, Shopware.Context.api, behavior);
}
VG
Philipp