我尝试过的方法是修改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元素之间的元素.然后,我可以使用这些属性在任何给定时间显示包含指针下内容的完整块名称“path”的工具提示.
这种方法的问题在于,虽然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,这确实允许我的机制成功运行.但是,它有一些严重的缺点:
>我必须禁用不生成有效xhtml的加载项,特别是Commerce BUG. Commerce BUG的丢失非常糟糕,因为我真的希望在我的加载项运行时访问其页面和包XML查看功能.
> Magento中包含的大部分JavaScript都使用了document.write(),它不能与xhtml一起使用,因此我得到了JavaScript异常,并且可能是某些功能不起作用.
有没有人知道我的方法对这些问题的任何解决方案,或者知道将输出中的HTML元素链接到生成它们的Magento块的任何更简单的方法?
解决方法 使用模板路径提示时,有时您需要检查元素,然后通过查看ChromeDevTools或FireBUG中的列表找到列出的关联模板文件(它将是具有一堆内联样式的父元素).我经常使用grep来找东西.只需导航到您认为应该查看的最高文件夹(以便不必遍历数千个不相关的文件夹/文件).
因此,如果您知道块名称,并且想要找到哪个模板文件使用该块,您可以转到/ app / design / frontend / base / default / layout并执行以下 *** 作:
grep "catalog/category" -r -l .
并且您应该能够获得一些正在加载该块的文件名,然后找到它们的声明节点并查看正在加载哪个模板文件.
echo get_class($this)
也可以提供帮助.
总结以上是内存溢出为你收集整理的Magento – 找到对应于一段HTML的块全部内容,希望文章能够帮你解决Magento – 找到对应于一段HTML的块所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)