我一直在尝试向静态块添加额外的字段,以便更容易更新。
如何添加简单的文本字段或图像上传字段?
参见示例:http: //i.stack.imgur.com/2HtDC.jpg
提前致谢!
为此,您需要覆盖此类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 的引用一起存储在该字段中。这是开箱即用的,您应该以自己的方式实现它。
快乐编码
除了@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;
}
}
我的建议是,而不是添加一个额外的字段,您可以<div>...</div>
在内容中添加一个,方法是删除您所见即所得的编辑器(只需单击显示/隐藏编辑器)。
对于图像,您可以通过单击inset/edit image
菜单中的选项直接上传图像。这将比创建自定义字段更简单。