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

Magento如何为静态块添加额外字段,magento,magento-1.9,Magento,Magento 1.9,我一直在尝试向静态块添加额外的字段,以便更容易更新 如何添加一个简单的文本字段或图像上传字段 见示例: 提前谢谢 我的建议是,与其添加一个额外的字段,不如通过删除“所见即所得”编辑器(只需单击“显示/隐藏”编辑器),在内容中添加一个。。 对于图像,您可以通过单击菜单中的插入/编辑图像选项直接上载图像。 这将比创建自定义字段更简单。为此,您需要覆盖该类Mage\u Adminhtml\u Block\u Cms\u Block\u Edit\u Form。此类用于为cms\u块添加字段集和字段。查

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

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

见示例:


提前谢谢

我的建议是,与其添加一个额外的字段,不如通过删除“所见即所得”编辑器(只需单击“显示/隐藏”编辑器),在内容中添加一个

对于图像,您可以通过单击菜单中的
插入/编辑图像
选项直接上载图像。
这将比创建自定义字段更简单。

为此,您需要覆盖该类
Mage\u Adminhtml\u Block\u Cms\u Block\u Edit\u Form
。此类用于为
cms\u块
添加字段集和字段。查看其中的
\u prepareForm()
方法

如果将此代码放在
标题
字段之后

    $fieldset->addField('sub_title', 'text', array(
        'name'      => 'sub_title',
        'label'     => Mage::helper('cms')->__('Sub Title'),
        'title'     => Mage::helper('cms')->__('Sub Title'),
        'required'  => true,
    ));
您可以在静态块中看到您的
子标题
文本字段。但是,不要直接编辑核心文件。您需要编写一个自定义模块来覆盖此类。您的模块配置文件应该包含以下代码

文件:
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>
试着基于这个想法

编辑 请注意,它将允许您在
cms>块中添加新字段,但要保存此字段,您需要为模块定义模型。你有两个选择。添加一个新字段以将您的新字段保存在Cms>块表中,或创建您自己的表,并将此值与引用到Cms>块表一起存储在该字段中。这是现成的,您应该以自己的方式实现它

快乐编码

与@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;    
        }
    }

谢谢您的回答。我试图将其添加到模块中,但出现以下错误:
致命错误:在C:\Git\abs\app\code\local\shopmerce\Static\Block\Adminhtml\Cms\Block\Edit\Form.php的非对象上调用成员函数addField(),第8行
我在
父项之后添加:\u prepareForm()以下内容:
$form=new Varien\u Data\u form(数组('id'=>'edit\u form','action'=>$this->getData('action'),'method'=>'post'))$表单->设置HTMLIDPrefix('block_')$fieldset=$form->addFieldset('base_fieldset',array('legend'=>Mage::helper('cms')->(General Information'),'class'=>fieldset wide')错误消失了,但我的字段没有显示。我说这是提示回答。它会指引你正确的道路。第一个错误显然会发生,因为那里没有定义
$fieldset
。很高兴知道你尝试了别的东西。这对你有用吗?
$fieldset
现在被定义为
$fieldset=$form->addFieldset('base_fieldset',array('legend'=>Mage::helper('cms')->uu('General Information'),'class'=>'fieldset wide')我现在没有收到错误,但我的字段子标题没有显示。当我添加
$form->setValues($model->getData())时$表单->setUseContainer(true)$此->设置形式($form)最后,子标题字段是我看到的唯一内容。它不会增加其他领域的内容,你不需要再努力了。现在需要做的是,将
Mage\u Adminhtml\u Block\u Cms\u Block\u Edit\u表单中的
\u prepareForm()
中的所有代码复制到
\u prepareForm()
中,并在其中添加字段。那就行了
<?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;    
        }
    }