这是我对Magento的看法(如果我错了,请纠正我)
1)每个模块都有自己的layout.xml存储在/ interface / theme / layouts /文件夹中 . 2)Magento为当前主题加载所有这些布局并创建一个大的xml文件 .
现在我很困惑 .
a)如果magento加载/ default / default /(接口和主题)那么为什么所有模板和布局都在base / default / ??
b)如果我在我的命名空间“Jason”中创建我的模块名称“page”,即Jason_Page,现在将在命名的布局文件中阻塞
c)由于所有布局都被加载并合并到一个大的xml文件中,那么具有相同名称属性且位于“默认”句柄标记内的所有参考块会发生什么?例如
d)什么是Local.xml布局及其使用? e)在模块名称foo和它的布局名称foo.xml之间的关系?如果diff命名空间中存在两个具有相同名称的模块,layout.xml会发生什么?
提前致谢 .
3 回答
1)每个模块可以选择定义进入/ interface / theme / layouts /文件夹的布局文件 . 您可以通过在模块的config.xml文件中指定布局来完成此操作,如下所示:
2)是的 .
a)Magento的界面是使用后向性构建的 . 模板和布局首先取自您选择的界面和主题,如果没有找到,将从基础中获取 . 这允许您仅在创建新内容时定义从基础更改的内容 .
b)如果使用块创建新模块,则将在config.xml中指定这些块的类路径:
这将定义标签
jason_page
以引用您的块 . 然后,在定义布局时,您将引用块作为:您的块将命名为:
Jason_Page_Block_Blockname
in/app/code/local/Jason/Page/Block/Blockname.php
c)每次使用
<reference>
标记并添加一些子块时,它们会被添加到大树中 . 确保为块使用不同的name
/as
标签,你会没事的 . 如果名称相同,则可能会导致错误 .d)local.xml(在app / etc中)定义了站点的一些配置参数,例如数据库连接信息和加密密钥 . 它与布局无关 .
d第2部分)由于您定义了布局文件,包括它们的名称,因此您不应该引起冲突 . 选择一个比Page更独特的模块名称就可以了 . 如果您的模块与默认模块(例如Page)具有相同的名称,则在config.xml文件中声明该文件时,请在文件前添加命名空间 .
希望有所帮助!
谢谢,乔
只是为了添加Joe的答案,您可以拥有interface / theme / layout / local.xml文件,它将在所有其他核心和模块布局XML文件之后加载 .
使用此文件进行本地主题自定义 .
我刚刚写了一篇关于如何使用静态块的帖子 . 这是它的内容:
Step One: Create Static Block in Your Magento Admin
Magento管理面板 - >静态块 - >添加新块
1)为静态块命名,在本例中为自定义页脚链接
2)标记标识符(这是稍后将用于调用块的链接),在这种情况下,自定义页脚链接
3)选择要在其中呈现的商店视图
4)将状态设置为启用
2)现在为有趣的部分!将导航链接添加到块 . 务必使用它们来匹配您的网站颜色和主题 .
Step Two: Inserting Code to Call the Static Block
这部分将要求你进入你的Magento网站并修改footer.phtml app-> design-> frontend - > default - >(你的模板) - > template-> page-> footer.phtml
在页脚中找到您希望导航链接显示和插入的位置:
getLayout() - > createBlock(“CMS /块”) - > setBlockId(“定制页脚链接”) - > toHtml(); ?>
现在大多数时候静态块应该显示得很好但在某些情况下你会做一些额外的步骤来显示块 .
1)而不是插入:
getLayout() - > createBlock(“CMS /块”) - > setBlockId(“定制页脚链接”) - > toHtml(); ?>
使用:
自定义页脚链接
2)修改catalog.xml app-> design-> frontend-> default-> f002-> layout-> catalog.xml
添加下
自定义页脚链接