# SEO Routing mit Parametern

**URL:** <https://forum.shopware.com/t/seo-routing-mit-parametern/14633>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [26. Juli 2013 um 08:48 UTC](https://forum.shopware.com/t/seo-routing-mit-parametern/14633 "2013-07-26T08:48:55Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ToxicCrack](https://avatars.discourse-cdn.com/v4/letter/t/bc8723/32.png) [@ToxicCrack](https://forum.shopware.com/u/ToxicCrack)\
**Post date:** [26. Juli 2013 um 08:48 UTC](https://forum.shopware.com/t/seo-routing-mit-parametern/14633/1 "2013-07-26T08:48:55Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Parker](https://avatars.discourse-cdn.com/v4/letter/p/c6cbf5/32.png) [@Parker](https://forum.shopware.com/u/Parker)\
**Post date:** [26. Juli 2013 um 10:44 UTC](https://forum.shopware.com/t/seo-routing-mit-parametern/14633/2 "2013-07-26T10:44:15Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![ToxicCrack](https://avatars.discourse-cdn.com/v4/letter/t/bc8723/32.png) [@ToxicCrack](https://forum.shopware.com/u/ToxicCrack)\
**Post date:** [26. Juli 2013 um 10:53 UTC](https://forum.shopware.com/t/seo-routing-mit-parametern/14633/3 "2013-07-26T10:53:33Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![Parker](https://avatars.discourse-cdn.com/v4/letter/p/c6cbf5/32.png) [@Parker](https://forum.shopware.com/u/Parker)\
**Post date:** [26. Juli 2013 um 12:11 UTC](https://forum.shopware.com/t/seo-routing-mit-parametern/14633/4 "2013-07-26T12:11:05Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![ToxicCrack](https://avatars.discourse-cdn.com/v4/letter/t/bc8723/32.png) [@ToxicCrack](https://forum.shopware.com/u/ToxicCrack)\
**Post date:** [26. Juli 2013 um 12:47 UTC](https://forum.shopware.com/t/seo-routing-mit-parametern/14633/5 "2013-07-26T12:47:37Z")

</div>

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