【问题标题】:Custom Magento Extension. How can I add the option to enable or disable it?自定义 Magento 扩展。如何添加启用或禁用它的选项?
【发布时间】:2012-12-14 18:42:28
【问题描述】:

感谢这里的每一个人,我终于完成了我的第一个扩展!我也设法将扩展添加为管理区域中的选项卡。我有一个显示启用或禁用的菜单。我想让这个功能发挥作用,让客户通过这个扩展获得更多的控制权。在提及之前,我知道您可以在高级菜单下启用和禁用扩展。但是,大多数 Magento 客户不是。我想将此直接添加到我的扩展程序中。

如果启用了该模块,我想用我自己的自定义运输模板覆盖位于 checkout/cart/shipping.phtml 中的 shipping.phtml 文件。

  1. 如何使启用或禁用下拉框工作?以下是我的代码:

etc/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>

etc/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>

Helper/Data.php

<?php
class Beckin_DropDownShipping_Helper_Data extends Mage_Core_Helper_Abstract
{   

}

Block/Cart/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');
        }
}
}

感谢您提供的任何帮助!当我转到我的扩展所在的系统/配置部分时,我现在得到一个空白的管理页面。我敢肯定,我缺少一些简单的东西。除了我认为不相关的模板文件之外,我已经包含了上面我正在使用的每个文件。你能发现我的错误吗?我希望它会显示一个错误而不是页面空白:(

【问题讨论】:

    标签: magento module


    【解决方案1】:

    不知道你的模块做什么以及你在哪里以及如何加载它。假设它不是自定义运输扩展。你可以这样做

    例如。 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 文件...”是什么意思 ` 您可能需要找到并重写为运输设置模板文件的块构造

    例如。 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');
         }
    }
    

    此外,您不需要为是/否创建自己的“源模型”,magento 已经预先构建了它

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

    你本来可以的

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

    【讨论】:

    • 谢谢你。如果我的模块启用了我自己的模板,我只是想澄清一下我只是想覆盖购物车运输模板。我尝试按照您的说明进行操作,但是当我转到我的扩展程序所在的系统/配置部分时,我现在得到一个空白的管理页面。我敢肯定,我缺少一些简单的东西。除了我认为不相关的模板文件之外,我已经包含了上面我正在使用的每个文件。你能发现我的错误吗?附言从那以后,我做了一些编辑,让它做得更多。我希望它会显示一个错误而不是页面空白:(
    • 如果你这样做&lt;sections&gt; &lt;beckin translate="label" module="dropdownshipping"&gt; 会更好&lt;sections&gt; &lt;dropdownshipping translate="label" module="dropdownshipping"&gt; 这不再需要Model/Enable.php。这没有使用 getCfgGeneral()
    • 同时检查你的错误日志,看看你得到了什么错误。我没有看到你在哪里重写这个 Block/Cart/Shipping.php,在你的 layout.xml 中你是在使用 block `type='dropdownshipping/cart_shipping' 吗?
    • 再次感谢您的建议。我已经根据你上面所说的更改了我的文件。但是,我仍然得到一个空白的配置页面 :( 关于块的重写。我取消了它。它在模板 layout.xml 文件中,因为我们正在尝试启用或禁用此功能。你能现在看看代码有什么问题?我要打电话给我的托管公司,找出为什么我没有看到任何错误日志。再次感谢所有建议!
    • 仔细检查 Beckin_DropDownShipping_Helper Helper/Data.php 它没有找到它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 2016-06-18
    • 1970-01-01
    • 2015-09-24
    • 2016-08-13
    • 1970-01-01
    相关资源
    最近更新 更多