Magento布局相关基本问题?

时间:2010-05-22 03:25:06

标签: magento

以下是我对Magento的看法(如果我错了,请纠正我)

1)每个模块都有自己的layout.xml存储在/ interface / theme / layouts /文件夹中。 2)Magento为当前主题加载所有这些布局并创建一个大的xml文件。

现在我很困惑。

a)如果magento加载/默认/默认/(界面和主题)那么为什么所有模板&布局在base / default / ??

之内

b)如果我在我的命名空间“Jason”中创建我的模块名称“page”,即Jason_Page,现在将在命名的布局文件中阻塞

c)由于所有布局都被加载并合并到一个大的xml文件中,那么具有相同名称属性且位于“默认”句柄标记内的所有参考块会发生什么? 例如

d)什么是Local.xml布局及其使用? e)在模块名称foo和它的布局名称foo.xml之间的关系? 如果diff namespace中存在两个具有相同名称的模块,那么layout.xml会发生什么?

提前致谢。

3 个答案:

答案 0 :(得分:3)

1)每个模块都可以选择定义进入/ interface / theme / layouts /文件夹的布局文件。您可以通过在模块的config.xml文件中指定布局来完成此操作,如下所示:

<frontend>
    <layout>
        <updates>
            <jason_page>
                <file>jasonpage.xml</file>
            </jason_page>
        </updates>
    </layout>
</frontend>

2)是的。

a)Magento的界面是使用后代构建的。模板和布局首先取自您选择的界面和主题,如果没有找到,将从基础中获取。这允许您仅在创建新内容时定义从基础更改的内容。

b)如果使用块创建新模块,则将在config.xml中指定这些块的类路径:

<global>
    <blocks>
        <jason_page>
            <class>Jason_Page_Block</class>
        </jason_page>
    </blocks>
</global>

这将定义标记jason_page以引用您的块。然后,在定义布局时,您将引用块作为:

<block type='jason_page/blockname' as='blockname' name='blockname' />

您的版块将在Jason_Page_Block_Blockname

中命名为:/app/code/local/Jason/Page/Block/Blockname.php

c)每次使用<reference>标签并添加一些子块时,它们都会被添加到大树中。确保为块使用不同的name / as标记,你会没事的。如果名称相同,则可能会导致错误。

d)local.xml(在app / etc中)定义了站点的一些配置参数,例如数据库连接信息和加密密钥。它与布局无关。

d第2部分)由于您定义了布局文件,包括它们的名称,因此您不应该引起冲突。选择一个比Page更独特的模块名称就可以了。如果您的模块与默认模块(例如Page)具有相同的名称,则在config.xml文件中声明文件时,请在文件前添加命名空间。

希望有所帮助!

谢谢, 乔

答案 1 :(得分:0)

只是为了添加Joe的答案,您可以使用interface / theme / layout / local.xml文件,它将在所有其他核心和模块布局XML文件之后加载。

将此文件用于本地主题自定义。

答案 2 :(得分:0)

我刚刚写了一篇关于如何使用静态块的帖子。以下是它的内容:

第一步:在您的Magento管理员中创建静态阻止

Magento管理面板 - &gt;静态块 - &gt;添加新块

1)为静态块命名,在本例中为自定义页脚链接

2)标记标识符(这是稍后用于调用块的链接),在这种情况下,自定义页脚链接

3)选择您希望在

中呈现的商店视图

4)将状态设置为启用

2)现在为有趣的部分!将导航链接添加到块。务必使用它们来匹配您的网站颜色和主题。

第二步:插入代码以调用静态块

这部分将要求您进入Magento网站并修改footer.phtml app-&gt; design-&gt; frontend - &gt; default-&gt;(您的模板) - &gt; template-&gt; page-&gt; footer.phtml

在页脚中找到您希望导航链接显示和插入的位置:

getLayout() - &GT; createBlock(“CMS /块”) - &GT; setBlockId(“定制页脚链接”) - &GT; toHtml(); ?&GT;

现在大多数时候静态块应该显示得很好但在某些情况下你会做一些额外的步骤来显示块。

1)而不是插入:

getLayout() - &GT; createBlock(“CMS /块”) - &GT; setBlockId(“定制页脚链接”) - &GT; toHtml(); ?&GT;

使用:

自定义页脚链接

2)修改catalog.xml APP-&GT;设计 - &GT; frontend-&GT;默认 - &GT; f002-&GT;&版图GT;的catalog.xml

下添加

自定义页脚链接