0

我想在 Magento 的主页之前添加一个登录页面,但似乎到处都是我看的文档非常模糊或论坛很难理解。我对 Magento 相当陌生,但对编码非常精通。谁能给我一些指示?或引导我朝正确的方向...

谢谢!

4

1 回答 1

3

我做过一次。在显示 pre-home.phtml 模板文件之前,我需要验证 cookie。

我创建了一个名为“Pagina”的新模块,并将其设置为 etc/config.xml:

<page>

            <layouts>

                <pre_home module="pagina" translate="label">

                        <label>Pre-home</label>

                        <template>page/pre-home.phtml</template>

                        <layout_handle>pre_home</layout_handle>

                </pre_home>

            </layouts>

        </page>

cookie 验证是通过 JavaScript 进行的,因此如果爬虫机器人访问该站点,我们会重定向到正确的页面。在cms_index_index节点的 layout/page.xml 中,我们放入:

<cms_index_index>
...
        <reference name="after_body_start">

            <block type="page/html_head" after="-" name="index.js.beginning">

                <action method="addItem"><type>skin_js</type><name>js/prehome.js</name></action>

            </block>

        </reference>
...
</cms_index_index>

在 /js/prehome.js 上的 JS 文件中:

var c_name = 'city';

if(window.location.toString().indexOf('pre-home') == -1){

    var first_visit = true;

    var i,x,y,ARRcookies=document.cookie.split(";");

    for (i=0;i<ARRcookies.length;i++)

    {

      x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));

      y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);

      x=x.replace(/^\s+|\s+$/g,"");

      if (x==c_name)

        {

         first_visit=false;

        }

    }   

    if(first_visit){
//you must define URL_SITE with site base url
        location.href = URL_SITE + 'pre-home';

    }

    

}else{

    document.getElementById("sp").onclick = function(){

        var exdate=new Date();

        exdate.setDate(exdate.getDate() + 365);

        var c_value=escape('SP') + "; expires="+exdate.toUTCString();

        document.cookie= c_name + "=" + c_value;

    }

}

请注意,我在与 /default 相同的目录中创建了另一个 escope,名为 /pre-home。所以我们需要另一个句柄pre_home布局处理程序,并且一些 JS 在 template/[yourscope]/pre-home 而不是 /default 中。但是 pre-home.phtml 必须位于 /default/template/page/pre-home.phtml 中,如 config.xml 中所述。

基本上我有:

应用程序/代码/本地/命名空间/Pagina/etc/config.xml

应用程序/设计/前端/mytheme/default/layout/page.xml

应用程序/设计/前端/mytheme/default/template/page/pre-home.phtml

皮肤/前端/mytheme/default/js/prehome.js

我希望这可以帮助你。

于 2012-07-12T17:19:53.817 回答