gpt4 book ai didi

Magento - 查找与一段 HTML 相对应的 block

转载 作者:行者123 更新时间:2023-12-02 16:36:26 25 4
gpt4 key购买 nike

我是 Magento 的新手,在探索系统时我发现尴尬的一件事是将生成的 (X)HTML 页面中的给定元素与创建它的 block 的名称联系起来。我知道系统->配置->模板路径提示。然而,它非常丑陋,有时会改变页面上元素的布局,并且不显示所有 block (我认为它只覆盖模板 block )。

我尝试过的一种方法是修改 Mage_Core_Block_Abstract 中的 toHtml() 方法,以在内容之前和之后添加空元素,例如。

<blockStart xmlns="http://some/url" name="the_block_name"/>
<!-- the block's contents -->
<blockEnd/>

(可能有一种方法可以在不修改核心文件的情况下做到这一点,但我现在并不介意这种方法,因为它仅供我自己使用。不过,欢迎任何想法。)

这些元素在文档中为我提供了足够的信息,以便我在浏览器端使用 jQuery 的 .nextUntil() 函数将 data-magento-blockname 属性添加到之间的元素blockStart 和 blockEnd 元素。然后,我可以使用这些属性在任何给定时间显示一个工具提示,其中包含指向指针下内容的完整 block 名称“路径”。

这种方法的问题在于,尽管 Magento 生成具有严格 DOCTYPE 的 XHTML,但将 Content-Type 设置为“text/html”是硬编码的(请参阅 app/code/core/Mage/Core/Model/App.php 第 1246 行)。这意味着浏览器将 XML 解释为 HTML“标签汤”,从而导致奇怪的事情发生 - 我的许多标签完全消失,出现在错误的位置,或者没有立即关闭,因此它们包含其他内容。此外,并非文档中的所有 HTML 元素都显示在 DOM 中。

我尝试修改 App.php 以将 Content-Type 更改为 application/xhtml+xml,这确实允许我的机制成功工作。然而,它有一些严重的缺点:

  1. 我不得不禁用加载项,特别是 Commerce Bug,因为它们不会生成有效的 XHTML。 Commerce Bug 的丢失非常糟糕,因为我确实希望在我的加载项运行时访问其页面和包 XML 查看功能。
  2. Magento 中包含的大部分 javascript 都使用 document.write(),但它不适用于 XHTML,因此我遇到了 javascript 异常,并且可能某些功能无法正常工作。

有谁知道我的方法可以解决这些问题,或者知道有什么更简单的方法将输出中的 HTML 元素链接到生成它们的 Magento block 吗?

最佳答案

使用模板路径提示时,有时您需要检查元素,然后通过在 ChromeDevTools 或 Firebug 中查看来查找列出的关联模板文件(它将是具有一堆内联样式的父元素)。

我也经常使用 grep 来查找东西。只需导航到您认为应该查找的最高文件夹(这样就不必遍历数千个不相关的文件夹/文件)。

因此,如果您知道 block 名称,并且想要查找哪些模板文件使用该 block ,您可以转到/app/design/frontend/base/default/layout 并执行以下操作:

grep "catalog/category" -r -l .

并且您应该能够获取一些正在加载该 block 的文件名,然后找到它们的声明节点并查看正在加载哪个模板文件。

echo get_class($this)

也可能有帮助。

关于Magento - 查找与一段 HTML 相对应的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com