【问题标题】:Trying to add a custom field to the Magento page CMS尝试向 Magento 页面 CMS 添加自定义字段
【发布时间】:2017-07-07 12:31:49
【问题描述】:

我正在尝试使用 this 指南将自定义字段添加到 Magento CMS 页面编辑器,但我无法让附加字段显示在后端。

这是我创建的文件:

/app/etc/modules 中的 ddog_customcms.xml

<config>
    <modules>
        <ddog_customcms>
            <active>true</active>
            <codePool>local</codePool>
            <depends/>
        </ddog_customcms>
    </modules>
</config>

config.xml 在 /app/code/local/ddog/customcms/etc

<?xml version="1.0"?>
<config>
    <modules>
        <ddog_customcms>
            <version>1.0.0</version>
        </ddog_customcms>
    </modules>
    <global>
        <models>
            <ddog_customcms>
                <class>ddog_customcms_Model</class>
            </ddog_customcms>
        </models>
        <events>
            <adminhtml_cms_page_edit_tab_content_prepare_form>
                <observers>
                    <ddog_customcms_page_edit_tab_content>
                        <type>singleton</type>
                        <class>ddog_customcms_Model_Observer</class>
                        <method>cmsField</method>
                    </ddog_customcms_page_edit_tab_content>
                </observers>
            </adminhtml_cms_page_edit_tab_content_prepare_form>
        </events>
        <resources>
            <ddog_customcms_setup>
                <setup>
                    <module>ddog_customcms</module>
                </setup>
            </ddog_customcms_setup>
        </resources>
    </global>
</config>

将 content_custom 列添加到 cms_page 数据库表中

/app/code/local/ddog/customcms/Model/中的observer.php

<?php

class ddog_customcms_observer
{
    public function addNewCmsField($observer)
    {
        //get CMS model with data
        $model = Mage::registry('cms_page');
        //get form instance
        $form = $observer->getForm();
        //create new custom fieldset 'ddog_customcms_content_fieldset'
        $fieldset = $form->addFieldset('ddog_customcms_content_fieldset', array('legend'=>Mage::helper('cms')->__('Custom'),'class'=>'fieldset-wide'));
        //add new field
        $fieldset->addField('content_custom', 'text', array(
            'name'      => 'content_custom',
            'label'     => Mage::helper('cms')->__('Content Custom'),
            'title'     => Mage::helper('cms')->__('Content Custom'),
            'disabled'  => false,
            //set field value
            'value'     => $model->getContentCustom()
        ));

    }
}

我已清除缓存,但我无法让该字段出现在页面编辑器的任何位置。有人可以帮忙吗?

【问题讨论】:

标签: php xml magento magento-1.9


【解决方案1】:

在声明中

<events>
     <adminhtml_cms_page_edit_tab_content_prepare_form>
         <observers>
             <ddog_customcms_page_edit_tab_content>
                 <type>singleton</type>
                 <class>ddog_customcms_Model_Observer</class>
                 <method>cmsField</method>
             </ddog_customcms_page_edit_tab_content>
         </observers>
     </adminhtml_cms_page_edit_tab_content_prepare_form>
</events>

您设置方法名称cmsField,但在观察者中您编写方法名称addNewCmsField 将其更改为cmsField,它将起作用

【讨论】:

  • 好地方!我已将方法名称修改为 cmsField,但在编辑页面时仍然看不到任何新字段。除了清除缓存以使其显示之外,我还需要做些什么吗?
  • 代码中没有任何错误我已经尝试过您的代码,它的工作只是将观察者的类名更改为 Ddog_Customcms_Model_Observer
  • 好的,我已经进行了更改,我的观察者现在具有类名 ddog_customcms_Model_Observer。不过,我仍然没有看到该领域:(
  • 你检查日志了吗?是否有任何错误,因为在我的管理页面中我可以看到一个字段
  • “内容”选项卡中的字段显示。
猜你喜欢
  • 1970-01-01
  • 2011-11-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2012-04-22
  • 2010-11-26
  • 1970-01-01
  • 2013-12-30
相关资源
最近更新 更多