0

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

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

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

这适用于空间有限且快速链接很有帮助的移动应用程序...

然后将有一个简单的链接来重新排序/查看仪表板,并且该视图将需要下降登录。

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

这是一个 Paypal 应用程序,最近的订单可通过以下方式查看: http ://www.sitename.com/storename/jsonsales/order/recenttemplate?s=2752732063744

提前致谢。

4

2 回答 2

1

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

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

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

希望这可以帮助。

于 2013-08-13T07:36:50.597 回答
0

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

因为这是一个特定于 paypal 的网络应用程序,所以我能够使用调用 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。

谢谢您的帮助。

于 2013-08-19T06:50:37.553 回答