自定义选项卡不会显示在目录产品信息中

时间:2015-06-10 11:58:15

标签: php magento magento-1.9

我正在尝试在目录中添加自定义标签,我正在关注FishPig's tutorial

所以我想要实现这样的目标

enter image description here

我已经按照教程中的每个说明进行操作,但仍然无法正确使用。

我已禁用捕获并启用调试。我已检查过日志,但我没有收到任何与此模块相关的错误。

我的代码

应用的/ 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的新手,我不知道出了什么问题。有人可以指出我的错误或示例代码吗?

我的完整代码可以找到here,并且可以找到存档here

2 个答案:

答案 0 :(得分:1)

由于以下几点,您的扩展程序无法正常使用

<强> 1。禁用Magento编译器功能

通过System&gt;找到Magento编译器。工具&gt;汇编。编译器收集Magento的文件并在/ includes / src下存储压缩副本。每次文件更改时,都必须通过单击“运行编译过程”来刷新编译器。这既可以刷新压缩文件,也可以启用编译器。

确保编译器在继续之前被禁用。

<强> 2。检查读/写权限:

虽然通常没有必要,但在某些情况下,您可能需要验证复制的文件权限。在Unix / Linux系统上,您应该将文件设置为服务器可读

第3。刷新缓存

一旦禁用了编译器并复制了文件,就可以刷新Magento缓存了。转到系统&gt;缓存管理并刷新所有缓存,包括CSS,图像和外部缓存。

第3。退出Magento并重新登录

现在必须退出Magento的管理员,然后重新登录。这需要为权限系统启用任何新权限。

** 4确认扩展合并**

必须确认您的新扩展是否与另一个控制器发生冲突?

How to install an Appmerce Magento extension manually

答案 1 :(得分:0)

要在新产品和编辑产品中注册自定义标签

我将代码更改为

应用/设计/ adminhtml /默认/默认/布局/ customtabs.xml

Edit.php

并在Tab.php

之外添加了另一个名为{{1}}的块