自定义Magento扩展.如何添加选项以启用或禁用它



感谢大家,我终于构建了我的第一个扩展!我设法将扩展添加为管理区域中的选项卡。我有一个菜单,上面写着启用或禁用。我想让这个功能发挥作用,通过这个扩展让客户有更多的控制权。在提到之前,我知道您可以在高级菜单下启用和禁用扩展。然而,大多数Magento客户不是。我想把这个直接添加到我的扩展中。

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

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

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

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

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

我不能百分之百确定你说的"。。。模板xml文件,将模板设置为覆盖shipping.html文件…'`您可能需要找到并重写为运输设置模板文件的块构造

例如。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>

最新更新