代码之家  ›  专栏  ›  技术社区  ›  Mr Coder

与Magento布局相关的基本问题?

  •  3
  • Mr Coder  · 技术社区  · 14 年前

    以下是我对马根托的看法(如果我错了请纠正我)

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

    我现在很困惑。

    a)如果magento加载/default/default/(interface&theme),那么为什么所有模板和布局都在base/default/中??

    b)如果我在名称空间jason(即jason_page)内创建模块名页,那么现在命名为jason的布局文件中的块会发生什么情况?

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

    d)local.xml布局的用途是什么?? e)模块名foo与其布局名foo.xml之间的关系如何? 如果diff命名空间中存在两个同名模块,那么layout.xml会发生什么情况?

    事先谢谢。

    3 回复  |  直到 13 年前
        1
  •  3
  •   Joe Mastey    14 年前

    1)每个模块都可以选择定义进入/interface/theme/layouts/folder的布局文件。您可以通过如下方式在模块的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文件中声明该文件时,请在该文件前面加上名称空间。

    希望有帮助!

    谢谢, 乔

        2
  •  0
  •   Unirgy    14 年前

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

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

        3
  •  0
  •   theChrisKent    13 年前

    我最近写了一篇关于如何使用静态块的文章。这是它的肉:

    第一步:在Magento管理员中创建静态块

    magento管理面板>静态块>添加新块

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

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

    3)选择要呈现的商店视图

    4)将状态设置为启用

    2)现在开始有趣的部分!将导航链接添加到块。确保使用它们与您的网站颜色和主题相匹配。

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

    此部分将要求您通过ftp进入magento站点并修改footer.phtml app>设计>前端->默认>(您的模板)>模板>页面>页脚.phtml

    在页脚中查找要显示和插入导航链接的位置:

    getlayout()->创建块(cms/block)->setblockid(自定义页脚链接)->tohtml();?gt;

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

    1)不插入:

    getlayout()->创建块(cms/block)->setblockid(自定义页脚链接)->tohtml();?gt;

    用途:

    自定义页脚链接

    2)修改catalog.xml app>设计>前端>默认>f002>布局>catalog.xml

    添加下

    自定义页脚链接