【问题标题】:Magento xml layouts - before="-" not working in 1.4.2Magento xml 布局 - before="-" 在 1.4.2 中不起作用
【发布时间】:2011-01-14 04:04:23
【问题描述】:

我有一些自定义扩展。它们显示在右侧边栏中,我之前让它们直接出现在侧边栏购物车下方,该购物车出现在顶部,因为它在 checkout.xml 文件中有 before="-"

自从升级到 1.4.2 后,我的自定义扩展现在出现在侧边栏的顶部。我已将 after="cart_sidebar" 添加到扩展 xml 布局中,但无论如何它们仍会出现在侧边栏购物车上方。

更改扩展的顺序,它们只会在它们之间移动,总是在顶部 - 例如,如果我将 after="-" 添加到它们中的任何一个,它们只会出现在另一个之后自定义扩展,但仍位于购物车和其他默认侧边栏项目的顶部。

有人知道为什么吗?

更新:

我打开了“模板路径提示”,对于我的自定义侧边栏块,显示模板路径的红色文本出现在侧边栏下方,应该显示块,但块的实际 html 出现在仍然是侧边栏的顶部!

【问题讨论】:

  • 当你说你“有一些自定义扩展”时,这真的很模糊。你的意思是你已经创建了一个带有一些块的模块,当你通过 layout.xml 添加这些块时,渲染顺序不起作用?或者您是否正在使用一些特定的自定义模块,这些模块用于自动将项目插入到布局中的特定位置,而现在该位置的行为已经改变?当您在这里提出问题时,假设我们对您的设置的所有了解都是基本的、通用的 Magento 安装。如果您想要一个程序来诊断您的问题,您需要将其余信息告知我们。

标签: magento


【解决方案1】:

在尝试找出这里发生的事情之前,您应该注意以下几点:

  • 所有 Magento 模块和扩展都按照满足声明部分要求的顺序加载(app/etc/modules/ 中的 xml)。这样依赖于其他模块的模块只会在它们之后加载。
  • 如果模块的需求相同,则优先级转到“Mage”命名空间,然后是自定义模块命名空间。内部命名空间的优先级按字母顺序排列。
  • 模块布局配置是在模块加载期间创建的。因此“之前”和“之后”指令的结果取决于先前加载的模块已经添加的块。 IE。当某个块有 'before="-"' 指令时 - 它首先放置块,但随后来自下一个模块的其他块可以使用它们的指令附加到该块之前。

现在让我们回到您的案例。根据您的 Magento 配置,您的问题可能有多种原因。

首先我推荐

  1. 关闭整个缓存 - 这样您就可以立即看到所有更改
  2. 关闭所有扩展程序并仅使用其中一个进行测试
  3. 打开默认 Magento CE 主题和皮肤(“默认”包)

然后检查以下情况:

  1. 可能您的布局方案已修改,而您的扩展未引用正确的块(与“cart_sidebar”使用相同)来放入 self。
  2. 可能某些扩展会删除原始的 cart_sidebar 块,然后将其放在块队列的最后。
  3. 可能某些 CSS 或 JS 规则仅在视觉上将块放置在其他块之前(检查原始 html 源中的块顺序)
  4. 可能某些扩展正在修改布局组合规则。尝试只转动其中一个。然后尝试只转动另一个并检查结果。

【讨论】:

  • 问题是,它之前在 1.4.1.1 上运行良好。只有在升级之后,行为才会改变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多