2011-11-10 126 views
2

我想定製產品頁面上的評論摘要塊,但我似乎無法找到Review模塊的Helper塊(這是名爲「Helper」,它不是助手的塊)的註冊位置在現有佈局XML(連接到真正的類名)「Review」模塊的「Helper」塊在哪裏註冊?

我挖了一個小到Magento的核心代碼,看看像一個怎麼行:

$this->getLayout->createBlock('modulename/blockname'); 

計算爲這樣的: 「Namespace_Modulename_Block_Blockname」

不知何故,內存中的XML配置包含評審組和幫手,所看到的文件app/code/core/Mage/Core/Model/Config.php上線1173:

1164 $classArr = explode('/', trim($classId)); 
1165 $group = $classArr[0]; 
1166 $class = !empty($classArr[1]) ? $classArr[1] : null; 
1167 
1168 if (isset($this->_classNameCache[$groupRootNode][$group][$class])) { 
1169  return $this->_classNameCache[$groupRootNode][$group][$class]; 
1170 } 
1171 
1172 //$config = $this->getNode($groupRootNode.'/'.$group); 
1173 $config = $this->_xml->global->{$groupType.'s'}->{$group}; 
1174 
1175 if (isset($config->rewrite->$class)) { 
1176  $className = (string)$config->rewrite->$class; 
1177 } else { 
1178  if (!empty($config)) { 
1179   $className = $config->getClassName(); 

我用法師::日誌的那後面線1173可以得到所需要的信息了$config對象的代碼進行覈對。

如果有人可以給我提示,這將不勝感激。

回答

1

如果你看一看

app/code/core/Mage/Review/etc/config.xml 

你可以看到,有一個節點在

<config> 
    <global> 
     <blocks> 
      <review> 
       <class>Mage_Review_Block</class> 
      </review> 
     </blocks> 
    </global> 
</config> 

這將註冊review作爲一個組塊。之後,無需專門配置名爲Helper的塊,因爲別名的類部分(groupname/classname)將Leading_Camel_Cased並附加到爲該組配置的類。

+0

謝謝,爲了您的快速回答,我很抱歉,我沒有回到你的更早。我能理解任何重寫只能在這個層面完成嗎?對我來說,這意味着如果我想在Review模塊中創建任何塊的子類,我將被強制子類化所有塊。 – pancake

+0

我剛剛有一點啓示,請查看我編輯的問題。 – pancake

+0

但是這可能是最好的地方:我嘗試在我的自定義模塊的config.xml中重寫「review_helper」,因爲我被整個「helper」做爲一個名爲helper的塊,而不是幫助器本身。它應該是「幫手」,現在它起作用了! – pancake