Magento如何为静态块添加额外的字段

时间:2014-08-14 07:42:45

标签: magento magento-1.9

我一直在尝试向静态块添加额外的字段,以便更新。

如何添加简单的文本字段或图像上传字段?

参见示例:http://i.stack.imgur.com/2HtDC.jpg

提前致谢!

3 个答案:

答案 0 :(得分:1)

为此,您需要覆盖此类Mage_Adminhtml_Block_Cms_Block_Edit_Form。此类用于为cms_block添加字段集和字段。看看里面的_prepareForm()方法。

如果您将此代码放在Title字段之后,

    $fieldset->addField('sub_title', 'text', array(
        'name'      => 'sub_title',
        'label'     => Mage::helper('cms')->__('Sub Title'),
        'title'     => Mage::helper('cms')->__('Sub Title'),
        'required'  => true,
    ));

您可以在静态块中看到sub-title文本字段。但是不要直接编辑核心文件。您需要编写一个应该覆盖此类的自定义模块。您的模块配置文件应包含此代码

档案:app/code/local/Namespace/Module/etc/config.xml

<config> 
    <global>
        <blocks>
            <adminhtml>
                <rewrite>
                     <cms_block_edit_form>Namespace_Module_Block_Adminhtml_Cms_Block_Edit_Form</cms_block_edit_form>
                </rewrite>        
            </adminhtml>
        </blocks>
    </global>
</config>

这将允许您重写该类。你现在需要做的是现在定义重写类,你需要重写_prepareForm()。它应该是这样的。

地点:app/code/local/Namespace/Module/Block/Adminhtml/Cms/Block/Edit/Form.php

<?php
class Namespace_Module_Block_Adminhtml_Cms_Block_Edit_Form extends Mage_Adminhtml_Block_Cms_Block_Edit_Form {

     protected function _prepareForm()
    {
        //put all the code inside parent class here 
        //then place the below content in appropriate place

        $fieldset->addField('sub_title', 'text', array(
            'name'      => 'sub_title',
            'label'     => Mage::helper('cms')->__('Sub Title'),
            'title'     => Mage::helper('cms')->__('Sub Title'),
            'required'  => true,
        ));
        return parent::_prepareForm();

    }
}

尝试基于这个想法

修改

请注意,它允许您在cms > block中添加新字段,不管怎样保存,您需要为模块定义模型。你有两个选择。添加新字段以在Cms中保存新字段&gt;阻止表或创建自己的表并将该值与对cms&gt;块表的引用一起存储在该字段中。这是开箱即用的,你应该按照自己的方式实现它。

快乐编码

答案 1 :(得分:1)

致@Rajeev 您需要以这种方式获取父表单...

<?php
    class Namespace_Module_Block_Adminhtml_Cms_Block_Edit_Form extends Mage_Adminhtml_Block_Cms_Block_Edit_Form {

         protected function _prepareForm()
        {
          $form = parent::_prepareForm()->getForm();
          $fieldset = $form->addFieldset('fieldset_example', array('legend'=>Mage::helper('core')->__('My example fieldset')));
          $fieldset->addField('sub_title', 'text', array(
                'name'      => 'sub_title',
                'label'     => Mage::helper('cms')->__('Sub Title'),
                'title'     => Mage::helper('cms')->__('Sub Title'),
                'required'  => true,
            ));
            return $this;    
        }
    }

答案 2 :(得分:0)

我的建议是,而是添加一个额外的字段,你可以在内容中添加一个<div>...</div>,删除你看到的是你得到的编辑器(只需点击显示/隐藏编辑器)。 /> 对于图像,您可以通过单击菜单中的inset/edit image选项直接上传图像。 它比创建自定义字段更简单。