Magento 1.7:自定义小部件的块类型错误无效

时间:2013-06-27 03:23:04

标签: magento widget

我只是想让一个基本的自定义小部件工作。我想我在这里设置错了。这是我得到的例外:

2013-06-27T03:00:11+00:00 ERR (3): 
exception 'Mage_Core_Exception' with message 'Invalid block type: Mage_Categoryproductslider_Block_Slider' in /home/sites/<url>/app/Mage.php:594

以下是带有路径的模块/窗口小部件文件

应用\等\模块\ PaulCodes_Categoryproductslider.xml

<?xml version="1.0"?>
<config>
    <modules>
        <PaulCodes_Categoryproductslider>
            <active>true</active>
            <codePool>community</codePool>
            <depends>
                <Mage_Cms />
            </depends>
        </PaulCodes_Categoryproductslider>
    </modules>
</config>

应用\代码\社区\ PaulCodes \ Categoryproductslider \块\ Slider.php

<?php
/**
 * @author 
 * 
 */
class PaulCodes_Categoryproductslider_Block_Slider extends Mage_Core_Block_Abstract implements Mage_Widget_Block_Interface
{

    /**
     * Produces slider html
     *
     * @return string
     */
    protected function _toHtml()
    {
        $pageTitle = '';
        $headBlock = $this->getLayout()->getBlock('head');
        if ($headBlock) {
            $pageTitle = $headBlock->getTitle();
        }

        $html = '<a class="delicious" href="#" title="Add to del.icio.us">Del.icio.us</a>';

        return $html;
    }

}


?>

应用\代码\社区\ PaulCodes \ Categoryproductslider \等\ config.xml中

<?xml version="1.0"?>
<config>
    <modules>
        <PaulCodes_Categoryproductslider>
            <version>0.0.1</version>
        </PaulCodes_Categoryproductslider>
    </modules>
    <global>
        <blocks>
      <PaulCodes_Categoryproductslider>
          <class>PaulCodes_Categoryproductslider_Block</class>
      </PaulCodes_Categoryproductslider>
    </blocks>
    <helpers>
      <PaulCodes_Categoryproductslider>
          <class>PaulCodes_Categoryproductslider_Helper</class>
      </PaulCodes_Categoryproductslider>
    </helpers>
    </global>
</config>

应用\代码\社区\ PaulCodes \ Categoryproductslider \等\ widget.xml

<?xml version="1.0"?>
<widgets>
    <categoryproductslider_slider type="categoryproductslider/slider">
        <name>Category Product Slider</name>
        <description type="desc">A slider of products of a certain category</description>
    </categoryproductslider_slider>
</widgets>

1 个答案:

答案 0 :(得分:2)

如果您的BLOCK图层XML标记标识符为<PaulCodes_Categoryproductslider>,则必须使用type="PaulCodes_Categoryproductslider/slider"

引用它

当您使用Mage :: getModel / Helper / Block / etc时,访问字符串的第一部分是您的XML标记标识符,下一部分是文件夹层中文件的路径。

我建议您将所有XML标记层标识符设置为小写(请参阅标准magento模块的构建方式)