2011-11-10 125 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