我正在尝试在目录中添加自定义标签,我正在关注FishPig's tutorial。
所以我想要实现这样的目标
我已经按照教程中的每个说明进行操作,但仍然无法正确使用。
我已禁用捕获并启用调试。我已检查过日志,但我没有收到任何与此模块相关的错误。
我的代码
应用的/ etc /模块/ Fishpig_Customtabs.xml
<config>
<modules>
<Fishpig_Customtabs>
<active>true</active>
<codePool>local</codePool>
</Fishpig_Customtabs>
</modules>
</config>
应用/代码/本地/ Fishpig / Customtabs的/ etc / config.xml中
<?xml version="1.0"?>
<config>
<modules>
<Fishpig_CustomTabs>
<version>0.1.0</version>
</Fishpig_CustomTabs>
</modules>
<global>
<blocks>
<customtabs>
<class>Fishpig_Customtabs_Block</class>
</customtabs>
</blocks>
<models>
<customtabs>
<class>Fishpig_Customtabs_Model</class>
</customtabs>
</models>
</global>
<adminhtml>
<layout>
<updates>
<customtabs>
<file>customtabs.xml</file>
</customtabs>
</updates>
</layout>
<events>
<catalog_product_save_after>
<observers>
<fishpig_save_product_data>
<type>singleton</type>
<class>customtabs/observer</class>
<method>saveProductTabData</method>
</fishpig_save_product_data>
</observers>
</catalog_product_save_after>
</events>
</adminhtml>
</config>
应用/代码/本地/ Fishpig / Customtabs /砌块/ Adminhtml /目录/产品/ Tab.php
<?php
class Fishpig_Customtabs_Block_Adminhtml_Catalog_Product_Tab
extends Mage_Adminhtml_Block_Template
implements Mage_Adminhtml_Block_Widget_Tab_Interface {
/**
* Set the template for the block
*
*/
public function _construct()
{
parent::_construct();
$this->setTemplate('customtabs/catalog/product/tab.phtml');
}
/**
* Retrieve the label used for the tab relating to this block
*
* @return string
*/
public function getTabLabel()
{
return $this->__('My Custom Tab');
}
/**
* Retrieve the title used by this tab
*
* @return string
*/
public function getTabTitle()
{
return $this->__('Click here to view your custom tab content');
}
/**
* Determines whether to display the tab
* Add logic here to decide whether you want the tab to display
*
* @return bool
*/
public function canShowTab()
{
return true;
}
/**
* Stops the tab being hidden
*
* @return bool
*/
public function isHidden()
{
return false;
}
/**
* AJAX TAB's
* If you want to use an AJAX tab, uncomment the following functions
* Please note that you will need to setup a controller to recieve
* the tab content request
*
*/
/**
* Retrieve the class name of the tab
* Return 'ajax' here if you want the tab to be loaded via Ajax
*
* return string
*/
# public function getTabClass()
# {
# return 'my-custom-tab';
# }
/**
* Determine whether to generate content on load or via AJAX
* If true, the tab's content won't be loaded until the tab is clicked
* You will need to setup a controller to handle the tab request
*
* @return bool
*/
# public function getSkipGenerateContent()
# {
# return false;
# }
/**
* Retrieve the URL used to load the tab content
* Return the URL here used to load the content by Ajax
* see self::getSkipGenerateContent & self::getTabClass
*
* @return string
*/
# public function getTabUrl()
# {
# return null;
# }
}
应用/设计/ adminhtml /默认/默认/布局/ customtabs.xml
<?xml version="1.0"?>
<layout>
<adminhtml_catalog_product_edit>
<reference name="product_tabs">
<action method="addTab">
<name>my_custom_tab</name>
<block>customtabs/adminhtml_catalog_product_tab</block>
</action>
</reference>
</adminhtml_catalog_product_edit>
</layout>
应用/设计/ adminhtml /默认/默认/模板/ customtabs /目录/产品/ tab.phtml
<div class="input-field">
<label for="custom_field">Custom Field</label>
<input type="text" class="input-text" name="custom_field" id="custom_field" />
</div>
我已经检查了两次代码仍然没有出现标签,我错过了什么?如何检查我的模块中是否出错?
确定我还添加了型号代码
应用/代码/本地/ Fishpig / Customtabs /型号/ Observer.php
class Fishpig_Customtabs_Model_Observer
{
/**
* Flag to stop observer executing more than once
*
* @var static bool
*/
static protected $_singletonFlag = false;
/**
* This method will run when the product is saved from the Magento Admin
* Use this function to update the product model, process the
* data or anything you like
*
* @param Varien_Event_Observer $observer
*/
public function saveProductTabData(Varien_Event_Observer $observer)
{
if (!self::$_singletonFlag) {
self::$_singletonFlag = true;
$product = $observer->getEvent()->getProduct();
try {
/**
* Perform any actions you want here
*
*/
$customFieldValue = $this->_getRequest()->getPost('custom_field');
/**
* Uncomment the line below to save the product
*
*/
//$product->save();
}
catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
}
/**
* Retrieve the product model
*
* @return Mage_Catalog_Model_Product $product
*/
public function getProduct()
{
return Mage::registry('product');
}
/**
* Shortcut to getRequest
*
*/
protected function _getRequest()
{
return Mage::app()->getRequest();
}
}
仍然不起作用。我是magento的新手,我不知道出了什么问题。有人可以指出我的错误或示例代码吗?
答案 0 :(得分:1)
由于以下几点,您的扩展程序无法正常使用
<强> 1。禁用Magento编译器功能
通过System&gt;找到Magento编译器。工具&gt;汇编。编译器收集Magento的文件并在/ includes / src下存储压缩副本。每次文件更改时,都必须通过单击“运行编译过程”来刷新编译器。这既可以刷新压缩文件,也可以启用编译器。
确保编译器在继续之前被禁用。
<强> 2。检查读/写权限:
虽然通常没有必要,但在某些情况下,您可能需要验证复制的文件权限。在Unix / Linux系统上,您应该将文件设置为服务器可读
第3。刷新缓存
一旦禁用了编译器并复制了文件,就可以刷新Magento缓存了。转到系统&gt;缓存管理并刷新所有缓存,包括CSS,图像和外部缓存。
第3。退出Magento并重新登录
现在必须退出Magento的管理员,然后重新登录。这需要为权限系统启用任何新权限。
** 4确认扩展合并**
必须确认您的新扩展是否与另一个控制器发生冲突?
答案 1 :(得分:0)
要在新产品和编辑产品中注册自定义标签
我将代码更改为
应用/设计/ adminhtml /默认/默认/布局/ customtabs.xml 强>
Edit.php
并在Tab.php