1

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

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

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

提前致谢!

4

3 回答 3

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 > Block table 中,或创建您自己的表并将此值与 cms >block table 的引用一起存储在该字段中。这是开箱即用的,您应该以自己的方式实现它。

快乐编码

于 2014-08-14T08:10:38.867 回答
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;    
        }
    }
于 2016-10-28T14:33:36.513 回答
0

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

于 2014-08-14T08:00:07.250 回答