我正在尝试为magento cms开发一个小部件,我遇到了一些问题。
我对Magento很新,所以请你放轻松。
因此,小部件由图像,一些文本和超链接组成。
这是创建文件的代码。
/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很新。提前致谢。快乐的节目!
答案 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