我想在 Magento 的主页之前添加一个登录页面,但似乎到处都是我看的文档非常模糊或论坛很难理解。我对 Magento 相当陌生,但对编码非常精通。谁能给我一些指示?或引导我朝正确的方向...
谢谢!
我想在 Magento 的主页之前添加一个登录页面,但似乎到处都是我看的文档非常模糊或论坛很难理解。我对 Magento 相当陌生,但对编码非常精通。谁能给我一些指示?或引导我朝正确的方向...
谢谢!
我做过一次。在显示 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
我希望这可以帮助你。