Hallo Shopware Community, da ich gerade beginne mich mit der Plugin-Entwicklung zu beschäftigen - in diesem Fall speziell mit dem hinzufügen eines eigenen Controllers - kam die Frage auf wie die Namensgebung gehandhabt wird um Konflikte bezüglich der SEO URL aufzulösen. Als Beispiel: [color=purple]Wir haben in unserem Plugin einen Controller erstellt, der im Frontend über meinshop.tld/Spielplatz erreichbar ist. Gleichzeitig ist im Shop aber auch eine Seite mit dem Titel Spielplatz erstellt, so dass auch dort die SEO Url meinshop.tld/Spielplatz wäre. Ganz verwirrt hat mich dann auch die Überlegung… was passiert wenn eine Kategorie Spielplatz noch dazu kommt…[/color] Gewinnt hier dann die SEO URL die im Cache als erstes steht? Und gibt es zu dieser Problematik eventuell eine Konvention, um solche Konflikte zu vermeiden? Ich hatte gedacht, dass man dann auch dem Controller den Entwickler Tag voranstellt, wobei hier die URL unter Umständen auch wieder ungewünscht wäre. Als Shopbetreiber würde ich /Spielplatz haben wollen aber nicht unbedingt /AndereFirmaSpielplatz Hat sich hier schon einmal jemand mit dieser Thematik beschäftigt und hat eine gute Lösung oder übersehe ich gerade, dass es schon längst gelöst ist? Beste Grüße
Ganz einfach den Controller so benennen, dass keine Konflikte auftreten? Kommt ja drauf an, wofür der Bereich ist, aber wenn z.B. das Entwicklerkürzel noch davor ist wäre es ja relativ unwahrscheinlich, dass mal so eine Kategorie existiert … Schöne Grüße, Niklas
[quote=„TeichDatensysteme“]Ganz einfach den Controller so benennen, dass keine Konflikte auftreten?[…][/quote] Ich danke dir auf jeden Fall schon einmal dass du dir die Zeit genommen hast zu antworten. Allerdings bin ich genau auf die Lösung auch schon gekommen und finde Sie eher unschön, zumindest wenn man darauf hin arbeitet einmal ein Plugin für die Öffentlichkeit bereitzustellen. Ausgehend davon, dass ich eventuell wirklich sprechende URLS haben möchte, die ich vielleicht auch einfach weitergeben möchte und eben nicht möchte, sagen zu müssen /SwagSonderangebote… sondern einfach nur /Sonderangebote. Aber je mehr ich drüber nachdenke, desto weniger scheint es mir möglich überhaupt eine Lösung zum ausschließen möglicher Konflikte zu haben. Ausser den offensichtlichen Weg - einen Controllernamen mit Prefix zu wählen - zu gehen. Beste Grüße Martin
Genau aus dem Grund ist auch durchaus sinnvoll bei Kategorien usw. die IDs mit auszugeben. Aus SEO-Sicht sicherlich nicht optimal, aber es verhindert (oder verringert zumindest) die Gefahr, dass es diese Konflikte gibt.
Ich überlege gerade ob es hier nicht am sinnvollsten wäre, entsprechende Konflikte in der Installationsroutine abzufangen, ala: $ControllerName = "Sonderangebote"; if(Conflict == true) { $ControllerName = $Prefix.$ControllerName ; } $this-\>subscribeEvent( 'Enlight\_Controller\_Dispatcher\_ControllerPath\_Frontend\_' . $ControllerName, 'onGetFrontendController' );
Und dann eine entsprechende Rückmeldung zu geben, dass Aufgrund eines Konfliktes mit einer Kategorie oder Seite die neuen Funktionalitäten unter /SwagSonderangebote verfügbar sind. Damit wäre es dann dem Plugin-Nutzer überlassen, ob er die Konflikte auflösen möchte oder mit der /EntwicklerControllerName Situation leben kann. Da bin ich jetzt aber wieder an dem Punkt: Blind oder ist es nicht vorgesehen, Rückmeldungen bei einer Installation zu geben?
Würde ich persönlich anders angehen, Du kannst eine Installation abbrechen, aber du musst beim programmieren immer ja auch versuchen alle Fälle zu bedenken. So würdest Du nur prüfen, ob bei der Installation etwas vorhanden ist. Was ist, wenn Du eine Kategorie mit dem Namen später anlegst/benennst/usw. Guck doch mal in den Resourcen wie die Logik bei den Kategorien ist, wenn etwas gleich benannt wurde. Ebenfalls kannst Du mal überlegen, ob wirklich eine eigene Seite notwendig ist, oder Du eher als Widget/Block dich auf bestimmten Seiten definierst und einbettest. Da gäb es nämlich nicht solche Probleme, nur so als Idee Schöne Grüße, Niklas
Deine Vorgehensweise ist relativ sinnfrei und absolut nicht empfehlenswert. Du solltest immer den Shopbetreiber selber entscheiden lassen, ob und wie er SEO URLs nutzen will. Kein Mensch wird nachher wissen, wie man das Plugin nun wirklich anspricht - direkt über „Sonderangebote“ oder doch über „PrefixSonderangebote“? Was ist, wenn der Shopbetreiber nachträglich eine Kategorie oder einen content „Sonderangebote“ anlegen will? Was ist, wenn dein Kunde einen englischsprachigen Shop anbietet? Was ist, wenn sich andere Plugin Anbieter genau den selben Blödsinn ausdenken und alle „Sonderangebote“ für sich beanspruchen? Plugin Namen und die entsprechenden namespaces sollten immer eindeutig und unverwechselbar sein. Wünscht der Shopbetreiber eine SEO URL, dann kann er diese selber über das backend definieren. Viele Grüße
Hallo, guten Morgen und noch einmal vielen Dank an alle, die sich die Zeit genommen haben zu antworten. Der Vollständigkeit halber fasse ich das ganze einfach noch einmal zusammen: [quote=“maybeonline”]Und gibt es zu dieser Problematik eventuell eine Konvention, um solche Konflikte zu vermeiden?[…] Hat sich hier schon einmal jemand mit dieser Thematik beschäftigt und hat eine gute Lösung oder übersehe ich gerade, dass es schon längst gelöst ist?[/quote] [quote=“Aguatuning GmbH”]Kein Mensch wird nachher wissen, wie man das Plugin nun wirklich anspricht - direkt über “Sonderangebote” oder doch über “PrefixSonderangebote”? Was ist, wenn der Shopbetreiber nachträglich eine Kategorie oder einen content “Sonderangebote” anlegen will? Was ist, wenn dein Kunde einen englischsprachigen Shop anbietet? Was ist, wenn sich andere Plugin Anbieter genau den selben Blödsinn ausdenken und alle “Sonderangebote” für sich beanspruchen?[/quote] Somit kommt man wenn man sich die Teile aus den Antworten holt, die tatsächlich etwas mit der Frage zu tun haben auf: Es gibt keine sinnvolle Möglichkeit die Problematik aus sicht des Pluginentwicklers zu behandeln. Auch in die Controllernamen gehört der EntwicklerPrefix um Namenskollisionen zu verhindern. Den Rest überlässt man dem Shopbetreiber. Und damit schließt sich der Kreis Morgendliche Grüße Martin