自定义Magento扩展。如何添加启用或禁用它的选项?

时间:2012-12-14 18:42:29

标签: magento module

我终于得到了我的第一个扩展,感谢大家!我设法将扩展程序添加为管理区域中的选项卡。我有一个菜单,说启用或禁用。我想让这个功能工作,让客户更好地控制这个扩展。在提到之前,我知道您可以在高级菜单下启用和禁用扩展。但是,大多数Magento客户都没有。我想将此直接添加到我的扩展程序中。

如果模块已启用,我想使用我自己的自定义送货模板覆盖checkout / cart / shipping.phtml中的shipping.phtml文件。

  1. 如何启用或禁用下拉框工作?以下是我的代码:
  2. 等/的system.xml

    <?xml version="1.0"?>
    <config>
    <tabs>
        <beckinconfig translate="label" module="dropdownshipping">
            <label>Beckin Extensions</label>
            <sort_order>100</sort_order>
        </beckinconfig>
    </tabs> 
    <sections>  
        <dropdownshipping translate="label" module="dropdownshipping">
            <label>Drop Down Shipping Options</label>
            <tab>beckinconfig</tab>
            <frontend_type>text</frontend_type>
            <sort_order>1000</sort_order>
            <show_in_default>1</show_in_default>
            <show_in_website>1</show_in_website>
            <show_in_store>1</show_in_store>
    
            <groups>            
                      <general>
                <label>General</label>
                <frontend_type>text</frontend_type>
                <sort_order>1</sort_order>
                <show_in_default>1</show_in_default>
                <show_in_website>1</show_in_website>
                <show_in_store>1</show_in_store>       
                  <fields>
                                <enable translate="label">
                                <label>Enable</label>
                                <comment>
                                <![CDATA[Enable or Disable this extension.]]>
                                </comment>
                                <frontend_type>select</frontend_type>
                                     <source_model>adminhtml/system_config_source_yesno</source_model>
                                <sort_order>1</sort_order>
                                <show_in_default>1</show_in_default>
                                <show_in_website>1</show_in_website>
                                <show_in_store>1</show_in_store>                    
                                </enable>           
                 </fields>                 
            </general>
            </groups>
        </dropdownshipping>
    </sections>     
    </config>
    

    等/ config.xml中

    <?xml version="1.0"?>
    <config>    
    <modules>
    <Beckin_DropDownShipping><version>1.0.0</version></Beckin_DropDownShipping>
        </modules>
    
    <global>
    
                <blocks>
                     <beckin_dropdownshipping>
                          <class>Beckin_DropDownShipping_Block</class>
                     </beckin_dropdownshipping>
                </blocks>
    
        <helpers>
             <beckin_dropdownshipping>
             <class>Beckin_DropDownShipping_Helper</class>
             </beckin_dropdownshipping>
        </helpers>      
    </global>
    
    <frontend>
        <layout>
            <updates>
                <beckin>
                    <file><!-- beckin_dropdownshipping.xml --></file>
                </beckin>
            </updates>
        </layout>
        <routers>
            <dropdownshipping>
                <use>standard</use>
                <args>
                    <module>Beckin_DropDownShipping</module>
                    <frontName>dropdownshipping</frontName>
                </args>
            </dropdownshipping>
        </routers>  
    </frontend>
    
    
    <adminhtml>
        <acl>
            <resources>
                <admin>
                    <children>
                        <system>
                            <children>
                                <config>
                                    <children>
                                        <dropdownshipping_options>
                                            <title>Beckin Drop Down Shipping Extension</title>
                                        </dropdownshipping_options>
                                    </children>
                                </config>
                            </children>
                        </system>
                    </children>
                </admin>
            </resources>
        </acl>
    </adminhtml>
    
    </config>
    

    助手/ Data.php

    <?php
    class Beckin_DropDownShipping_Helper_Data extends Mage_Core_Helper_Abstract
    {   
    
    }
    

    块/车/ Shipping.php

    <?php
    
    
    class Beckin_DropDownShipping_Block_Cart_Shipping extends Mage_Checkout_Block_Cart_Shipping
    {
    
    protected function _construct()
    {
    
          if(Mage::getStoreConfig('beckin/dropdownshipping_options/enable', Mage::app()->getStore()->getId()){
         {
         $this->setTemplate('Beckin/dropdownshipping/drop_down_shipping.phtml');
         }
            else
            {
            $this->setTemplate('checkout/cart/shipping.phtml');
            }
    }
    }
    

    感谢您提供的任何帮助!当我进入我的扩展所在的系统/配置部分时,我现在得到一个空白的管理页面。我确信这是我想念的简单事。我已经包含了我正在使用的每个文件,除了我认为无关的模板文件。你能发现我的错误吗?我希望它会显示错误而不是页面空白:(

1 个答案:

答案 0 :(得分:0)

您不知道您的模块究竟做了什么以及加载它的位置和方式。假设它不是自定义的运输延期。你可以做到

EG。 1

if((Mage::getStoreConfig('deckin/dropdownshipping_options/beckin_enable', Mage::app()->getStore()->getId()){
   module enable/display .phtml
   assuming that beckin_enable value are 0 or 1
}

我不是100%肯定你的意思是'...模板xml文件来设置模板来覆盖shipping.phtml文件......' ` 您可能需要查找并重写为运输

设置模板文件的块结构

EG。 2

protected function _construct()
{
    if(Mage::getStoreConfig('deckin/dropdownshipping_options/beckin_enable', Mage::app()->getStore()->getId()){
        $this->setTemplate('.../my_custom_shipping.phtml');
     }
     else{
        $this->setTemplate('.../regular_shipping.phtml');
     }
}

此外,您不需要为yes / no创建自己的'source model',magento预先构建它

<beckin_enable>
    ....
    <source_model>dropdownshipping/enable</source_model>                           
    ...                    
</beckin_enable>

你可以做到

<beckin_enable>
    ....
    <source_model>adminhtml/system_config_source_yesno</source_model>                          
    ...                    
</beckin_enable>