5

我想向config我的 magento 实例添加一个字段。您应该能够在其中存储一个 cms 块。

<block translate="label">
    <label>Cms block</label>
    <frontend_type>select</frontend_type>
    <source_model>???</source_model>
    <sort_order>30</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
</block>

但我只找到了 cms pages ( adminhtml/system_config_source_cms_page) 的模型。

source_modelcms对应的是什么?

4

4 回答 4

8

我认为 Mage_Cms_Model_Resource_Block_Collection 类对此非常有用:

                    <cms_block translate="label">
                      <label>Left template CMS block</label>
                      <frontend_type>select</frontend_type>
                      <source_model>cms/resource_block_collection</source_model>
                      <sort_order>0</sort_order>     
                      <show_in_default>1</show_in_default>
                      <show_in_website>0</show_in_website>
                      <show_in_store>0</show_in_store>
                    </cms_block>   
于 2014-01-12T18:15:09.293 回答
4

没有,但您可以自己制作:

class Your_Module_Model_System_Config_Source_Cms_Block
{
    protected $_options;

    public function toOptionArray()
    {
        if (!$this->_options) {
            $this->_options = Mage::getResourceModel('cms/block_collection')
                ->load()
                ->toOptionArray();
        }
        return $this->_options;
    }
}
于 2013-07-09T09:15:12.677 回答
2

创建您自己的源模型 -

class Namespace_Modulename_Model_System_Config_Source_Cmsblock
{
    protected $_options;

    public function toOptionArray()
    {
        if (!$this->_options) {
            $this->_options = Mage::getResourceModel('cms/block_collection')
                ->load()
                ->toOptionArray();
        }
        return $this->_options;
    }
}

将其包含在您的系统 xml 中:

<block translate="label">
  <label>Cms block</label>
  <frontend_type>select</frontend_type>
  <source_model>modulename/system_config_source_cmsblock</source_model>
  <sort_order>30</sort_order>
  <show_in_default>1</show_in_default>
  <show_in_website>1</show_in_website>
  <show_in_store>1</show_in_store>
</block>
于 2013-07-09T09:41:16.350 回答
2

您可以使用与类别静态块字段相同的模型:Catalog_Model_Category_Attribute_Source_Pageakacatalog/category_attribute_source_page

<block translate="label">
  <label>Cms block</label>
  <frontend_type>select</frontend_type>
  <source_model>catalog/category_attribute_source_page</source_model>
  <sort_order>30</sort_order>
  <show_in_default>1</show_in_default>
  <show_in_website>1</show_in_website>
  <show_in_store>1</show_in_store>
</block>
于 2013-07-09T10:53:34.237 回答