2012-01-27 77 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(),所以,當有人將數據添加同一類通過這個功能,你會看到回溯並找出它是如何發生的