代码之家  ›  专栏  ›  技术社区  ›  Majid Fouladpour

如何在Magento中找到要查找的代码块?

  •  1
  • Majid Fouladpour  · 技术社区  · 15 年前

    我一直在和一个愚蠢的情况作斗争。一位客户要求我更改他的“高级搜索”页面以添加一些选项。此网页的URL如下 http://www.domainname.com/index.php/catalogsearch/advanced/

    这是一个Magento存储,我对这个框架没有经验。我试着去学习,但发现学习曲线太陡,无法获得足够的知识按时完成项目。

    所以我首先做了一个小的PHP工具,它在所有源文件中搜索一个搜索词,并报告返回的命中数。我使用这个工具查找出现在高级搜索页面上的唯一字符串。但是文本找不到了!

    我的下一次尝试是查看数据库以查找字符串。因此,我导出了所有的数据库数据,并将结果查询复制到我的代码编辑器中,然后再次搜索,结果一无所获!

    这很尴尬,让我很生气。我找不到输出高级搜索选项的代码块!

    “任何”帮助都会非常感谢。

    谢谢, 马吉德

    2 回复  |  直到 10 年前
        1
  •  1
  •   demonkoryu    14 年前

    magento中的URL告诉您某个模块的模板文件在哪里。

    例如,当你在寻找 catalogsearch/advanced/ ,所有模板文件都位于应用程序中 /design/frontend/default/your-theme/ .

    看看那个文件夹,它应该是显而易见的。您将有一个名为 catalogsearch 在里面有一个文件夹叫做 advanced ;其中有两个文件:

    • form.phtml
    • result.phtml
        2
  •  6
  •   benz001    15 年前

    到目前为止,我已经在一个本地开发盒上使用了以下策略-显然不要在一个实况商店上尝试这个!:

    1. 在system->config->developer中打开模板路径提示+块名称。这将使您进入执行最终渲染的phtml文件,以及它使用的块对象类型。除非你有IP限制,否则每个访客都会看到这些!
    2. 然后在phtml文件中进一步挖掘,您可以轻松地zend_debug::dump($var)检查相关变量/对象并找到对象类型等。
    3. 在编辑器或grep中通过/app/code目录搜索,以查找定义您刚刚找到的对象类型的文件-尽管基于zend,正确的文件路径大部分时间都可以从对象类中计算出来。

    阿尔索

    • 一个简单的技巧是故意在php/phtml文件中插入一个错误,magento为您提供了一个格式良好的错误屏幕,其中有一个调用堆栈,阅读起来很有趣。
    • 核心文件中的echo()语句通常工作得很好,在magento设置中,它们通常不会触发在错误时间发送HTML头。
    • 使用一个类似netbeans/eclipse/zend studio等的IDE,并将所有magento代码放入您的项目中,得到的phpdoc信息、“开放声明”和代码辅助将为您节省数小时的搜索时间。
    • 花些时间让xdebug使用一个允许您使用它的IDE在您的测试服务器上工作。我从零开始(在Mac电脑上)找到的最简单的一个设置是本地mamp安装,以netbeans作为IDE-netbeans站点将引导您完成这一过程,一旦您顺利完成这一过程,您就可以忘记大部分其他技巧!

    这些只是我迄今为止尝试过的东西-请多提些建议! 我还没有找到一种技术来调试magento使用的大量XML文件中的XML问题导致的配置问题,这里的问题往往会安静地失败,并且很难跟踪,结果+XML文档非常糟糕。

    推荐文章