我想在Magento的主页之前添加一个登陆页面,但似乎无处不在我看起来文档很模糊或论坛很难理解。我对Magento来说相当新,但我非常精通编码。谁能给我一些指示?或引导我朝着正确的方向......
谢谢!
答案 0 :(得分: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在模板/ [yourscope] / pre-home而不是/ default中。但pre-home.phtml必须位于config.xml中提到的/default/template/page/pre-home.phtml。
基本上我有:
应用程序/代码/本地/命名空间/ Pagina的/ etc / config.xml中
应用程序/设计/前端/ mytheme的/默认/布局/ page.xml
应用程序/设计/前端/ mytheme的/默认/模板/页/预home.phtml
皮肤/前端/ mytheme的/默认/ JS / prehome.js
我希望这可以帮到你。