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. 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é