SEO Routing mit Parametern

Hallo, ich habe nun schon einiges im Forum über das SEO Plugin gelesen, aber nichts davon konnte mir weiterhelfen. Ich habe ein eigenes Plugin inkl. eigenem Controller. Der Smarty URL Aufruf sieht zb. wie folgt aus (es geht um Rezepte): {url controller=recipe action=view id=$sRecipe.id sCategory=$sRecipe.categoryId} Nun möchte ich das in etwa so eine URL raus kommt, wie bei einem Artikel auf der Detailseite. /Rezept/Kategorie1/Kategorie2/[ID]/Rezeptname?c=11 Leider habe ich das mit den normalen SEO Einstellungen im Backend nicht hinbekommen. Ich habe mir auch mal das SEO Plugin angeschaut und dort im Code ist mir aufgefallen das nur auf sViewport und in diesem Fall sAction geprüft wird. Alle anderen Parameter würden als Query hinter das ? angefügt werden, was ich aber nicht möchte.

schau dir mal in die Klasse Shopware_Plugins_Frontend_RouterRewrite_Bootstrap Dort passiert (fast) alles, FE Url nach Query umzuwandeln. Du kannst ebenefalls Enlight_Controller_Router_Route ausnutzen

Danke für die Antwort. Ich habe mir Shopware_Plugins_Frontend_RouterRewrite_Bootstrap bereits angesehen und auch in meinem Plugin einige Hooks abgefangen. Z.B. kann ich mir ja in assemble() meine URL zusammenbasteln die dann zurück gegeben wird. Allerdings weiß das Routing dann ja nicht wie diese URL gemappt werden soll wenn sie aufgerufen wird. Wie/Wo mache ich das? Also angenommen ich baue mir die URL /Rezept/Kategorie1/Kategorie2/[ID]/Rezeptname?c=11 zusammen. Wo kann ich die dann wieder abfangen und an den entsprechenden Controller und Action deligieren?

Ich kann momentan keine komplette Lösung schreiben… aber das Routing von SW läuft so: - Speaking URL in DB gespeichert - Speakring URL abgefangen von FrontController - Triggert Event Enlight_Controller_Router_Route ( in Enlight_Controller_Router_Default::route() ) - Plugin Shopware_Plugins_Frontend_RouterRewrite sucht anhand ( „KategorName/SubKategorie/ArticleID/Name“ ) in DB nach einem Match in Form sViewPort=xxx&sArticle=XXX, und diese wiederzurück an FrontControler - und dann FrontController triggert Event Enlight_Controller_Front_RouteShutdown Enlight\_Application::Instance()-\>Events()-\>notify( 'Enlight\_Controller\_Front\_RouteShutdown', $eventArgs ); - Core Plugin Shopware_Plugins_Core_Router fangt dieses Event wieder ab und verarbeitet diese mit Methode fixRequest() protected function fixRequest($request) { $aliases = array( 'sViewport' =\> 'controller', 'sAction' =\> 'action', ); foreach ($aliases as $key =\> $alias) { if (($value = $request-\>getParam($key)) !== null) { $request-\>setParam($alias, $value); $request-\>setAlias($key, $alias); } } $request-\>setQuery($request-\>getUserParams() + $request-\>getQuery()); } Dort wieder ‚conrtoller‘ aus sViewport „zugewiesen“ ----------- Ich denke es ist wichtig zu wissen wie deine Speaking URLs in Form /Rezept/… in DB gespeichert

Ok Danke für die Hilfe! Ich werde es nächste Woche versuchen.