magento时事通讯成功消息弹出窗口

时间:2016-10-10 06:39:02

标签: javascript php jquery ajax magento

我想创建一个弹出消息框,在用户订阅简报后显示

  

"您的订阅已经确认[确定]"

它必须在javascript或jquery中,因为我只想在magento前端区域修改它

它与此帖Magento newsletter succeess message in pop up类似,但它最终没有正确答案和死链接

另一个信息:我的Magento ver。 1.14.1.0

我有一点代码并将其放在subscribe.phtml中,但它无法正常工作

<script type="text/javascript">
    var formdata = {'email': jQuery('input[name=email]').val()};
jQuery(document).ready(function() {

  jQuery('.btn-subs').click(function(){
    jQuery.ajax({
        method: "POST",
        url: "<?php echo Mage::getBaseUrl() ?>newsletter/subscriber/new/",
        data: formdata,
        datatype: 'json'
    })
    .success(function( data ) {
      alert( "Your Subscription has been confirmed" );
    })
    .error(function(data){
        alert(data);
        console.log(data);
    })
  });
});
</script>

2 个答案:

答案 0 :(得分:0)

Magento的内置通知系统非常精心构建,Inchoo在此广泛解释:http://codepen.io/anon/pen/xEWJKd

我有点猜测这并不是你想要的,因为你明确声明它必须用javascript或jquery完成。您是否意识到magento控制器操作可能基本上停留在同一页面上,但在订阅某人通讯页面后添加通知?

此帖子(http://inchoo.net/magento/magento-frontend/utilizing-magento-notification-system/)帮助我实现了在页面上获取通知,但没有重定向到其他页面,只是重新加载同一页面。

如果你真的坚持只使用js / jquery,我的直觉是一个简单的警报就足够了。默认情况下,这只给你一个'ok'按钮,但我自己并没有看到在动作完成后需要一个'取消'按钮,除非这会取消订阅我想的时事通讯。

如果情况并非如此,您能否提供更多有关您要实现的目标的信息?为什么仅使用js / jquery很重要?

亲切的问候,

汤姆

答案 1 :(得分:0)

您可以异步(AJAX)发布到控制器,但默认情况下它不会为您提供任何有意义的验证成功。

您需要做的是扩展newsletter / subscriber / new(不要更新核心文件,任何更新都会擦除您的更改。)

这可能会有所帮助: http://inchoo.net/dev-talk/how-to-extend-magento-core-controller/

基本上,你想要做的是创建一个新的控制器动作,它几乎可以完成现有控制器所做的一切,但不是在完成时重定向,而是应该回显前端的数据,以便在ajax响应中进行解析。此外,您还需要删除通常添加的会话成功消息。 (他们会在下一页加载时显示。)

在现有控制器之后对新控制器进行建模:

应用程序/代码/核心/法师/新闻/控制器/ SubscriberController.php