2012-01-27 74 views
0

他们给了我一些在Magento实现的大型网站上的任务。
我使用Netbeans和Xdebug进行调试(我在lubuntu oneiric btw上),我发现自己在我所有的任务中都很完美。
我碰巧遇到类重新宣布的任务,我花了很多时间找到正确的文件进行更改。

只是为了学习如何正确地做到这一点:
任务是改变meta关键字,从代码开始像如何追踪调试一个magento对象

<meta name="keywords" content="<?php echo htmlspecialchars($this->getKeywords()) ?>" /> 

与NetBeans调试器,我可以很容易地打开包含getKeywords文件(),它有:

public function getKeywords() 
{ 
    if (empty($this->_data['keywords'])) { 
     $this->_data['keywords'] = Mage::getStoreConfig('design/head/default_keywords'); 
    } 
    return $this->_data['keywords']; 
} 

现在我无法找到一个简单的方法,通过调试走在这两种情况:(
特别是我的情况是$this->_data['keywords']不是空的页面上,我不得不纠正..

所以我怎么能轻松知道如何创建这个对象,特别是谁填充_data['keywords']
我花了很长时间才找到正确的文件。

我不擅长调试,所以也许我可以用netbeans w/xdebug来做,但我无法弄清楚。

由于

回答

2

打开终端和

grep 'setKeywords(' app/code/ -rsn 

这将揭示在哪里这个变量被设置或使用

+0

优秀的侧面思考。 – clockworkgeek 2012-01-27 13:53:20

0

grep -ri "Keywords" * | grep -v cache

位置 '-R'装置递归
'-i'表示不区分大小写
'*'表示任何文件名
'|' grep的-v缓存”指剔除任何引用到缓存目录

0

你可以暂时创建方法:

public function setKeywords($s) { 

    echo sprintf('<pre>%s</pre>', print_r(debug_backtrace(), true)); 
    exit; 
} 

添加以下代码到具有getKeywords(),所以,当有人将数据添加同一类通过这个功能,你会看到回溯并找出它是如何发生的