Redirect nach Login

Hi … es geht mal wieder umd die Version 3.5.x … nach erfolgtem Login über das AJAX-Formular gelangt man automatisch zur Account-Seite … ich würde aber gerne den Redirect auf die Index-Seite des Shops legen wollen. Ich habe da jetzt nirgends eine Stelle gefunden wo ich das bewerkstelligen könnte. Für Tipps wäre ich dankbar. :sunglasses: Markus

Hi, ich versuche etwas ähnliches zu bewerkstelligen. Den Login kann ich erfolgreich mit dem Event Shopware_Modules_Admin_Login_Successful oder einen Hook vom Type TypeAfter auf die sLogin der sAdmin abfangen. Leider bekomme ich aber kein View-Objekt aus meinen $args um diesem ein anderes Template zuzuweisen. Hat jemand eine Idee?

Hi … weiss da niemand was bzw. kann mir helfen? schöne Grüße Markus

Im Template /frontend/account/ajax_login.tpl kannst du über die Action der Form die Zielseite nach dem Login bestimmen. Ich habe da z.B. mittels {url} festgelegt, dass man auf der jeweils aktuellen Seite bleiben soll: [code]

[/code]

Da müsstet ihr euch sonst mal den Account-Controller anschauen, dort gibt es ja die Methoden ajaxLoginAction und loginAction - da könnte man sonst über einen Hook oder Event dran und dann die Umleitung durchführen.

Mein kleines Plugin hierzu: /engine/Shopware/Plugins/Frontend/Frontend/LoginToMainPageRedirect/Bootstrap.php [code]<?php class Shopware_Plugins_Frontend_LoginToMainPageRedirect_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{
public function install()
{

   $hook = $this->createHook( 'Shopware\_Controllers\_Frontend\_Account', 'loginAction', 'onLoginAction', Enlight\_Hook\_HookHandler::TypeBefore, 0 ); $this-\>subscribeHook($hook); $this-\>subscribeHook($hook); $event = $this-\>createEvent( 'Enlight\_Controller\_Action\_PostDispatch', 'onPostDispatch' ); $this-\>subscribeEvent($event); return true; } static function onPostDispatch(Enlight\_Event\_EventArgs $args) { $view = $args-\>getSubject()-\>View(); $view-\>extendsTemplate(dirname(\_\_FILE\_\_).'/jQueryOverloadInlineHeader.tpl'); } static function onLoginAction(Enlight\_Hook\_HookArgs $args){ $subject = $args-\>getSubject(); $subject-\>Request()-\>setParam('sTarget','index'); } public function getInfo() { return array( 'version' =\> '0.0.1', 'autor' =\> 'Rene Gerritsen (rene.gerritsen@me.com)', 'copyright' =\> 'Copyright 2011 Rene Gerritsen', 'label' =\> $this-\>getName(), 'source' =\> $this-\>getSource(), 'description' =\> 'Nach dem Login gleich auf die Hauptseite kommen bzw. im Ajax Kontext auf der Aktuellen Seite zu bleiben.', 'license' =\> 'BSD', 'support' =\> 'http://www.shopware.de/', 'link' =\> 'http://www.shopware.de/' ); } } [/code] [b]/engine/Shopware/Plugins/Frontend/Frontend/LoginToMainPageRedirect/jQueryOverloadInlineHeader.tpl[/b] [code] {extends file="../\_default/frontend/index/header.tpl"} {block name="frontend\_index\_header\_javascript\_jquery" append} <script type="text/javascript">
        (function ($) {

        	//Default settings
            var config = {
                dataType: 'text',
                container: '.modal',
                headline: '',
                viewport: '',
                register: '',
                checkout: '',
                target: ''
            };

            //Extends jQuery's function namespace
        	$.fn.checkout = function (settings) {
        	    if (settings) $.extend(config, settings);

        	    $(config.container + ' form').live('submit', function (event) {
        	    	if(!$(this).hasClass('new_customer_form')) {
        	    		event.preventDefault();
        	    		$.checkout.loginUser(this);
        	    	}
        	    });
        	    $(config.container + ' .existing_customer input[type^=submit]').live('click', function(event) {
        	    	event.preventDefault();
        	    	var form = $(config.container + ' form[name^=existing_customer]');
        	    	$.checkout.loginUser(form);
        	    });

        	    this.live('click', function (event) {
        	        event.preventDefault();
        	        $.checkout.checkUser(this.href);
        	    });

        	    return this
        	};

            //Extends jQuery's namespace
            $.checkout = {};

            //Checks the user
            $.checkout.checkUser = function (target,event) {
            	config.target = target;    	
                $.ajax({
                    'url': config.viewport,
                    'dataType': 'jsonp',
                    'success': function (result) {
                        if (result.length) {
                        	var width = 530;
                        	var position = 'fixed';

                        	if($.browser.msie && parseInt($.browser.version) == 6) {
                        		var width = 530;
                        		var position = 'absolute';
                        	}

                            $.modal(result, config.headline, {
                                'position': position,
                                'textClass': '',
                                'textContainer': '<div>',
                                'width': width+'px'
                            }).find('.close').remove();

                        // user is logged in                
                        } else {
        					window.location.href = target;
                        }
                    }
                });
            };

            //Checks if the user is logged in
            $.checkout.loginUser = function (form) {
            	config.register = $.controller.register;
                $.ajax({
                    'url': config.viewport,
                    'dataType': 'jsonp',
                    'data': $(form).serialize(),
                    'success': function (result) {
                        if(result.length) {
                         $(config.container).empty().html(result);
                        } else {
                            //HIER IST DIE ÄNDERUNG
                            window.location.reload();
                        }
                    }
                });
            };
        })(jQuery);
</script>{/block} [/code] Für meinen Anwendungsfall (Kunde muss eingeloggt sein um den Warenkorb nutzen zu können) reicht es. Könnt das ja als Basis für eure Plugins nutzen. mfg René