0

即使我认为下面的代码会自行解释,也可以快速概述。我想扩展 getName() 公共函数并截断它。但是我的代码什么也不做,甚至没有抛出错误。这是我的文件。

贝金/TextShortner/etc/config.xml

<config>    
<modules>
<Beckin_TextShortner><version>1.0.0</version></Beckin_TextShortner>
    </modules>

<global>           
            <models>
               <textshortner>
                     <class>Beckin_TextShortner_Model</class>
               </textshortner>
            </models>
    <helpers>
         <textshortner>
          <class>Beckin_TextShortner_Helper</class>
         </textshortner>
    </helpers>      
</global>


<textshortner>
  <settings>
    <enable>1</enable>
  </settings>
</textshortner>


 <frontend>
    <layout>
        <updates>
            <beckin>
                <file>beckin_textshortner.xml</file>
            </beckin>
        </updates>
    </layout>
    <routers>
        <textshortner>
            <use>standard</use>
            <args>
                <module>Beckin_TextShortner</module>
                <frontName>textshortner</frontName>
            </args>
        </textshortner>
    </routers>  
</frontend>

</config>

Beckin/TextShortner/Model/Catalog/Product.php

class Beckin_TextShortner_Model_Catalog_Product extends Mage_Catalog_Model_Catalog_Product
{   

public function getName()
{
$getmyName = $this->_getData('name');
return  $this->helper('core/string')->truncate($getmyName,10); 
}

}

贝金/TextShortner/etc/system.xml

<config>
<tabs>
    <beckin translate="label">
        <label>Beckin Extensions</label>
        <sort_order>100</sort_order>
    </beckin>
</tabs>

<sections>  
            <textshortner translate="label">
        <label>Text Shortner</label>
        <tab>beckin</tab>
        <frontend_type>text</frontend_type>
        <sort_order>1010</sort_order>
        <show_in_default>1</show_in_default>
        <show_in_website>1</show_in_website>
        <show_in_store>1</show_in_store>


            <groups>            

                <settings translate="label">
                <label>Settings</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>

                </settings>
            </groups>
        </textshortner>
</sections>     
</config>

贝金/TextShortner/etc/adminhtml.xml

<config>  

    <acl>
        <resources>
        <all>
            <title>Allow Everything</title>
        </all>
            <admin>
                <children>
                    <system>
                        <children>
                            <config>
                                <children>
                                    <textshortner>
                                        <title>Beckin Text Shortner Extension</title>
                                    </textshortner>
                                </children>
                            </config>
                        </children>
                    </system>
                </children>
            </admin>
        </resources>
    </acl>

</config>

当然,我也设置了我的模块 xml 文件。

任何人都可以帮忙吗?

4

1 回答 1

0

首先是您扩展的模型 Mage_Catalog_Model_Catalog_Product 我认为这不是模型的正确名称??

你的意思是 ?Mage_Catalog_Model_Product

其次,您的代码扩展了模型,但没有重写模型。因此,您必须更改核心池中的块文件中的模型,这不好。

所以你需要在这里做的是在你的 config.xml 中为模型指定重写

<models>
....
<catalog>
      <rewrite>
            <product>Beckin_TextShortner_Model_Catalog_Product</product>
      </rewrite>
</catalog>
....
</models>

然后您将能够毫无问题地使用该方法

于 2012-12-21T08:53:34.050 回答