我的最近订单在主页上,在用户仪表板之外

时间:2013-08-12 07:27:27

标签: magento magento-1.7

我需要知道是否需要为此类内容创建窗口小部件,或者只是将最近的订单块添加到主页layout.xml。

它应该只反映该商店的订单。

我知道用户必须登录才能使用此功能,但可能会有一些cookie魔法应用于检测用户,并显示最近订单的简短列表,而不显示项目,我认为不是一个巨大的隐私/安全问题。

这适用于空间有限的移动应用,快速链接很有用......

然后会在仪表板中显示重新排序/查看的链接,该视图需要下降登录。

如果可能的话,最好的方法是什么。

这是一个Paypal应用程序,最近的订单来自: http://www.sitename.com/storename/jsonsales/order/recenttemplate?s=2752732063744

先谢谢。

2 个答案:

答案 0 :(得分:1)

最重要的是,我要做的是创建一个自定义模块,观察者在下订单时捕获,触发将订单存储在cookie中的过程(例如最后3个订单?)

然后在该模块中创建一个块以从cookie中读取数据。

之后将该块渲染到模板中(通过编辑适当的.phtml或创建自己的.phtml并将其添加到layout.xml中)。

希望这有帮助。

答案 1 :(得分:0)

对于那些可能想要尝试这个的人,使用一个名为Paypal order Ahead的模块。

因为这是一个特定于PayPal的Web应用程序,所以我可以使用调用json模板的javascript函数来完成此操作。

在/app/design/frontend/paypal/test/template/cms/index.phtml上我添加了以下内容:

<div class="content-box greybg recentordercontainer">   
        <div id="productError_<?php echo $sid; ?>" style="display:none"></div>  
        <div class="page-title text-title"><?php echo $this->__('My Recent Orders'); ?></div>       
        <div id="recentorder-list-box_<?php echo $sid; ?>" class=""></div>  

        <div class="cart-empty" id="cart-empty_<?php echo $sid; ?>" style="display:none">
            <div class="box-shadow">
                <div class="error-desc cart-row2" style="margin-top:10px;"><?php echo $this->__('You have not yet made any purchases.'); ?></div>
            </div>
            <div class="pay-now" id="contshop_<?php echo $sid; ?>">
                <a href="#" onclick="navigationURL(storeRootUrl);" class="glossy-button"><?php echo Mage::getStoreConfig('checkout/options/continue_shopping_text'); ?></a>
            </div>
        </div>           
    </div>

然后我在这个模板底部的脚本部分添加了一些javascript:

getRecentOrderBlockJSON("<?php echo $sid; ?>")

function  getRecentOrderBlockJSON(id) {
    $.getJSON(storeRootUrl+"/jsonsales/order/recent", function(jsonObj) {
        renderRecentOrderBlock(jsonObj,id);
    });
}

function renderRecentOrderBlock(jsonObj,id) {
    var dataObj = jsonObj.recentorder;
    // Recent Order Item box target
    var ulObj = $("#recentorder-list-box_"+id);

    // Display error message on top
    if (jsonObj.messages.error.length >0) {

        var pdObj = $("#productError_"+id);
        var tplHTML = $("#ErrorPageTemplate").html();
        for (key in jsonObj.messages) {
            var re = new RegExp("%"+key+"%", "g");
            tplHTML = tplHTML.replace(re,jsonObj.messages[key]);
        }
        pdObj.append(tplHTML);
        $("#productError_"+id).css("display","block");
    }
    // have recent order
    if ( dataObj && dataObj.length > 0 ) {
        for ( var i=0; i<dataObj.length; i++ ) {
            var tplHTML = $("#RecentOrderFrontTemplate").html();
            // date
            var re = new RegExp("%created_at%", "g");
            //tplHTML = tplHTML.replace(re,dataObj[i].order.created_at);
            tplHTML = tplHTML.replace(re,dataObj[i].order.created_at_localetime);

            // update id
            var re3 = new RegExp("%id%", "g");
            tplHTML = tplHTML.replace(re3,dataObj[i].order.id);

            // update rid
            var re4 = new RegExp("%rid%", "g");
            tplHTML = tplHTML.replace(re4,id);
            ulObj.append(tplHTML);

            // Recent Ordered Item box
            var orderObj = $("#order-list-attr-"+id+dataObj[i].order.id);
        }   // for
    }
}

这给了我列表,前提是有一个名为ppmeccookie的cookie,其中包含了customerid的值。这个cookie通常是在您使用此paypal应用程序之前完成paypal结账时生成的。

感谢您的帮助。