Magento - Widget开发

时间:2016-07-19 16:22:32

标签: php magento

我正在尝试为magento cms开发一个小部件,我遇到了一些问题。

我对Magento很新,所以请你放轻松。

因此,小部件由图像,一些文本和超链接组成。

  1. 我在/ app / etc / modules /
  2. 中创建了一个文件MP_All.xml
  3. 在/ app / code / local / MP中创建了widget文件夹结构 - 为小部件创建了MP文件夹。
  4. 内部MP文件夹是一个BP_Widget文件夹,其中包含Block,Helper,Model和etc目录。
  5. / etc目录中的
  6. 是config.xml和widget.xml
  7. Block中的
  8. 是Banners.php文件,Helper目录下是data.php文件。
  9. Model目录中的
  10. 是一个Options.php文件。
  11. 这是创建文件的代码。

    /app/etc/modules/MP_All.xml

    <?xml version="1.0"?>
    <config>
      <modules>
        <MP_BP_Widget>
            <active>true</active>
            <codePool>local</codePool>
        </MP_BP_Widget>
      </modules>
    </config>
    

    /app/code/local/MP/BP_Widget/etc/config.xml

    <?xml version="1.0"?>
    <config>
      <modules>
        <MP_BP_Widget>
            <version>0.1.0</version>
        </MP_BP_Widget>
      </modules>
      <global>
        <blocks>
            <bp_widget>
                <class>MP_BP_Widget_Block</class>
            </bp_widget>
        </blocks>
        <helpers>
            <bp_widget>
                <class>MP_BP_Widget_Helper</class>
            </bp_widget>
        </helpers>
        <models>
            <bp_widget>
                <class>MP_BP_Widget_Model</class>
            </bp_widget>
        </models>
      </global>
    </config>
    

    /app/code/local/MP/etc/widget.xml

    <?xml version="1.0"?>
    <widgets>
      <bp_widget_banners type="bp_widget/banners" translate="name description" module="bp_widget">
        <name>Product Banners</name>
        <description>Create product banners with hyperlink to specific page/product/URL</description>
        <parameters>
            <link_options>
                <label>Link</label>
                <visible>1</visible>
                <type>text</type>
            </link_options>
        </parameters>
      </bp_widget_banners>
    </widgets>
    

    /app/code/local/MP/BP_Widget/Block/Banners.php

    class MP_BP_Widget_Block_Banners extends Mage_Core_Block_Template implements Mage_Core_Block_Interface {
    
        protected function _toHtml () {
    
        }
     }
    

    /app/code/local/MP/BP_Widget/Helper/data.php

    class MP_BP_Widget_Helper_Data extends Mage_Core_Helper_Abstract {
    
    }
    

    /app/code/local/MP/BP_Widget/Model/Options.php

    class MP_BP_Widget_Model_Options {
        public function toOptionArray () {
            return array(
                array( 'value' => 'test_option', 'label' => 'Test Option' ),
                array( 'value' => 'inquiry', 'label' => 'Inquiry' )
            );
        }
    }
    

    我现在遵循的教程说它应该是活动的“小部件”并且“随时可以使用”。但它仍然没有出现在可用小部件的下拉列表中。我在这里缺少什么?

    是否有关于Magento的XML Schema和widget开发规则的参考文献?

    正如我之前所说,我对Magento很新。提前致谢。快乐的节目!

1 个答案:

答案 0 :(得分:0)

似乎问题在于模块目录BP_Widget的名称。

在Magento&#34; _&#34;类名中的字符替换为&#34; /&#34; Autoloader尝试加载类时的目录分隔符请参阅: lib/Varien/Autoload.php::autoload()

因此,您需要将模块目录重命名为BPWidget并进行以下更改

/应用的/ etc /模块/的 MP_BPWidget.xml

<?xml version="1.0"?>
  <config>
    <modules>
      <MP_BPWidget>
        <active>true</active>
        <codePool>local</codePool>
      </MP_BPWidget>
    </modules>
  </config>

/应用程序/代码/本地/ MP /的 BPWidget /etc/config.xml

<?xml version="1.0"?>
  <config>
    <modules>
      <MP_BPWidget>
        <version>0.1.0</version>
      </MP_BPWidget>
    </modules>
    <global>
       <blocks>
         <bp_widget>
            <class>MP_BPWidget_Block</class>
         </bp_widget>
       </blocks>
       <helpers>
         <bp_widget>
          <class>MP_BPWidget_Helper</class>
         </bp_widget>
       </helpers>
       <models>
         <bp_widget>
           <class>MP_BPWidget_Model</class>
         </bp_widget>
       </models>
     </global>
  </config>

/应用程序/代码/本地/ MP /的 BPWidget /etc/widget.xml

<?xml version="1.0"?>
<widgets>
  <bp_widget_banners type="bp_widget/banners" translate="name description" module="bp_widget">
     <name>Product Banners</name>
     <description>Create product banners with hyperlink to specific page/product/URL</description>
     <parameters>
        <link_options>
           <label>Link</label>
           <visible>1</visible>
           <type>text</type><!-- select for dropdown type -->
           <!-- In case you need your source model for this option uncomment source_model node -->
           <!--<source_model>bp_widget/options</source_model>-->
        </link_options>
     </parameters>
  </bp_widget_banners>
</widgets>

/应用程序/代码/本地/ MP /的 BPWidget /Block/Banners.php

class MP_BPWidget_Block_Banners extends Mage_Core_Block_Template implements Mage_Core_Block_Interface {

     protected function _toHtml () {
            // You need to return your widget html as string here
    }
}

/应用程序/代码/本地/ MP /的 BPWidget /助手/的 Data.php

class MP_BPWidget_Helper_Data extends Mage_Core_Helper_Abstract {

}

/应用程序/代码/本地/ MP /的 BPWidget /Model/Options.php

class MP_BPWidget_Model_Options {
    public function toOptionArray () {
        return array(
            array( 'value' => 'test_option', 'label' => 'Test Option' ),
            array( 'value' => 'inquiry', 'label' => 'Inquiry' )
        );
    }
}

一个很好的参考可能就是这个链接create custom widget

希望它有所帮助:)欢迎来到Magento Development