# 301 Redirect für vorhandenen Controller

**URL:** <https://forum.shopware.com/t/301-redirect-fur-vorhandenen-controller/9955>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [19. November 2012 um 15:43 UTC](https://forum.shopware.com/t/301-redirect-fur-vorhandenen-controller/9955 "2012-11-19T15:43:51Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![jhit](https://avatars.discourse-cdn.com/v4/letter/j/6a8cbe/32.png) [@jhit](https://forum.shopware.com/u/jhit)\
**Post date:** [19. November 2012 um 15:43 UTC](https://forum.shopware.com/t/301-redirect-fur-vorhandenen-controller/9955/1 "2012-11-19T15:43:51Z")

</div>

Hallo. Ich versuche den Zugriff auf die Tell A Friend Funktion zu deaktivieren. Da ich im Backend keine Option dafür gefunden habe war meine Idee das über ein Plugin zu realisieren. Da ich noch Blutiger Anfänger bin brauche ich nun etwas Hilfe. Mein Plan ist, über das Event Enlight\_Controller\_Front\_PreDispatch den Aufruf des tellafriend Controllers abzufangen und einen 301 Redirect auf die Produktseite der im tellafriend-Link enthaltenen Product-ID auszulösen. Was mir nicht klar ist, wie kann ich aus dem Plugin-Code heraus den 301 Redirect auslösen und die weitere Ausführung des Aufrufs unterbrechen?

---

<div class="post-metadata">

**Author:** ![Nico\_Minuth](https://avatars.discourse-cdn.com/v4/letter/n/73ab20/32.png) [@Nico\_Minuth](https://forum.shopware.com/u/Nico_Minuth)\
**Post date:** [19. November 2012 um 16:05 UTC](https://forum.shopware.com/t/301-redirect-fur-vorhandenen-controller/9955/2 "2012-11-19T16:05:26Z")

</div>

Um die Tell-A-Friend Funktion zu deaktivieren, könntest Du einfach den Link aus dem Template entfernen. Schau Dir ggf. im “Labs”-Bereich den “Designer’s Guide” an, falls noch nicht geschehen. Das Basis-Template liegt unter templates/\_default/frontend/detail/actions.tpl. Eine direkte lokale Anpassung geht so: Erstelle unter \_emotion\_local die Ordnerstruktur /frontend/detail/. Leg darin eine Datei namens actions.tpl an. Die Datei bekommt folgenden Inhalt:`{extends file='parent:frontend/detail/actions.tpl'} {block name='frontend\_detail\_actions\_voucher'} {/block}` Damit überschreibst Du den Block [color=blue]frontend\_detail\_actions\_voucher[/color] mit einem leeren Block =\> der Link ist weg. Zum Übernehmen der Änderungen muss der Template-Cache im Backend geleert werden. Wenn das ganze für einen Kunden-Shop ist, kannst du natürlich auch über ein Plugin Änderungen am Template vornehmen. Siehe dazu die Beispiel-Plugins der Developer-Schulung (z.B. gleich das erste). Gruß, Nico.

---

<div class="post-metadata">

**Author:** ![jhit](https://avatars.discourse-cdn.com/v4/letter/j/6a8cbe/32.png) [@jhit](https://forum.shopware.com/u/jhit)\
**Post date:** [19. November 2012 um 16:18 UTC](https://forum.shopware.com/t/301-redirect-fur-vorhandenen-controller/9955/3 "2012-11-19T16:18:00Z")

</div>

Danke für den Tip. Genau das habe ich bereits getan. Das löst aber nicht das Problem dass die Formulare trotzdem funktionieren und von Spambots verwendet werden können.

---

<div class="post-metadata">

**Author:** ![jhit](https://avatars.discourse-cdn.com/v4/letter/j/6a8cbe/32.png) [@jhit](https://forum.shopware.com/u/jhit)\
**Post date:** [19. November 2012 um 18:57 UTC](https://forum.shopware.com/t/301-redirect-fur-vorhandenen-controller/9955/4 "2012-11-19T18:57:40Z")

</div>

Habe es hinbekommen. Falls sich jemand fragt wie das geht: ` public function install() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PreDispatch\_Frontend\_Tellafriend', 'redirectTellafriend', 300 ); return true; } function redirectTellafriend(Enlight\_Event\_EventArgs $args) { /\* @var $action Enlight\_Controller\_Action \*/ $action = $args-\>getSubject(); /\* @var $request Enlight\_Controller\_Request\_RequestHttp \*/ $request = $action-\>Request(); $articleId = $request-\>getParam('sArticle'); $sArticle = Shopware()-\>Modules()-\>Articles()-\>sGetArticleById($articleId); $action-\>redirect($sArticle['linkDetailsRewrited'], array('code' =\> 301)); return true; } `

---

<div class="post-metadata">

**Author:** ![Nico\_Minuth](https://avatars.discourse-cdn.com/v4/letter/n/73ab20/32.png) [@Nico\_Minuth](https://forum.shopware.com/u/Nico_Minuth)\
**Post date:** [20. November 2012 um 11:57 UTC](https://forum.shopware.com/t/301-redirect-fur-vorhandenen-controller/9955/5 "2012-11-20T11:57:54Z")

</div>

Jepp, wenn Du wegen Spambots o.ä. wirklich den Controller überladen musst, ist dieses Event genau der richtige Ansatz.
