2011-09-05 53 views
2

我试图在管理区域中反向工程一些功能,但是我遇到了一个问题。当我的代码的定制版本上运行它失败在这下一行,说category_info_tabsJsTabs没有定义Magento - js变量category_info_tabsJsTabs - 这是什么?

如果(category_info_tabsJsTabs.activeTab){

原本是在模板文件adminhtml_catalog_category_tree.phtml

我已经完成了对这个字符串的文本搜索,但我似乎无法在任何地方找到它,因此找出它的声明位置。任何人都可以帮忙吗?

谢谢, 伊恩

回答

3

即特定变量是在app/design/adminhtml/default/default/template/widget/tabs.phtml

<script type="text/javascript"> 
    <?php echo $this->getJsObjectName() ?> = new varienTabs('<?php echo $this->getId() ?>', '<?php echo $this->getDestElementId() ?>', '<?php echo $this->getActiveTabId() ?>', <?php echo $this->getAllShadowTabs()?>); 
</script> 

getJsObjectName()属于类Mage_Adminhtml_Block_Widget_Tabs的方法声明。它看起来像这样:

public function getJsObjectName() 
{ 
    return $this->getId() . 'JsTabs'; 
} 

的ID,然后由标签类的每一个派生集,在这种情况下,它是Mage_Adminhtml_Block_Catalog_Category_Tabs它做到这一点:

$this->setId('category_info_tabs'); 
+0

嗨ClockWorkGeek, 感谢您指出了这一点。这无疑帮助我了解发生了什么事情。 变量名称连接在getJsObjectName中的事实解释了为什么我无法通过文本搜索找到它。 如果我假设正确,这意味着getJsObjectName解析getId()到'选项卡' - 从而使'tabsJsTabs'。我猜get1d方法只是使用模板名称 - 即标签(.phtml)? 只是为了让我完成这个图片,变量名的'category_info_'部分在哪里构造? 再次感谢您的帮助, Ian –

0

我正在寻找同样的东西,所以想在这里添加“category_info_tabs”的位置: ./app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tabs.php