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