将Magento小部件参数添加到“添加小部件实例”编辑器

3

这个问题似乎已经被问过多次,但没有得到答案。

我创建了一个小部件,可以为可配置产品添加属性值。仅仅是为了明确,如果一个可配置产品由多个基于尺寸和颜色属性的简单产品(关联产品)组成,那么我想向客户展示此可配置产品的“可用”尺寸和颜色。而且,我想通过编程实现,而不仅仅是在描述中放置尺寸和颜色列表,因为并非所有尺寸或颜色此时都可用。所以我创建了这个小部件。

现在,我想制作一个更通用的版本,可以使用任何关联产品的属性。但是,为了做到这一点,设置小部件的管理员需要从可用属性列表中选择属性。当将小部件添加到CMS页面时,实际上可以使用widget.xml文件中定义的参数。

问题在于,我没有将小部件添加到CMS页面。我正在将其添加到产品页面。因此,我需要在CMS ->小部件 ->添加新小部件实例编辑器的Widget Instance功能中使用它。然而,此编辑器有前端属性和小部件选项选项卡。而来自widget.xml文件的参数不会显示在此编辑器的Widget Options选项卡中。

那么,是否有一种方法可以从widget.xml文件向添加小部件实例编辑器的Widget Options选项卡中添加参数(例如:

<widgets>
  <Widget Options>
    <parameters>
      <my_widget_instance_parameter> ... </my_widget_instance_parameter>
    </parameters>
  </Widget Options>
</widget>

这是需要增强实际的窗口小部件实例编辑器吗?

谢谢。

1个回答

4

前往\app\code\core\Mage\Cms\etc\widget.xml,查看CMS页面链接小部件选项:

<cms_page_link type="cms/widget_page_link" translate="name description" module="cms">
    <name>CMS Page Link</name>
    <description>Link to a CMS Page</description>
    <is_email_compatible>1</is_email_compatible>
    <parameters>
        <page_id type="complex" translate="label">
            <visible>1</visible>
            <required>1</required>
            <label>CMS Page</label>
            <type>label</type>
            <helper_block>
                <type>adminhtml/cms_page_widget_chooser</type>
                <data>
                    <button translate="open">
                        <open>Select Page...</open>
                    </button>
                </data>
            </helper_block>
            <sort_order>10</sort_order>
        </page_id>
        <anchor_text translate="label description">
            <visible>1</visible>
            <label>Anchor Custom Text</label>
            <description>If empty, the Page Title will be used</description>
            <type>text</type>
        </anchor_text>
        <title translate="label">
            <visible>1</visible>
            <label>Anchor Custom Title</label>
            <type>text</type>
        </title>
        <template translate="label">
            <label>Template</label>
            <visible>1</visible>
            <type>select</type>
            <value>cms/widget/link/link_block.phtml</value>
            <values>
                <default translate="label">
                    <value>cms/widget/link/link_block.phtml</value>
                    <label>CMS Page Link Block Template</label>
                </default>
                <link_inline translate="label">
                    <value>cms/widget/link/link_inline.phtml</value>
                    <label>CMS Page Link Inline Template</label>
                </link_inline>
            </values>
        </template>
    </parameters>
</cms_page_link>

正如您所看到的,参数可以具有简单类型(文本、选择)和带有辅助块的更复杂类型:

            <helper_block>
                <type>adminhtml/cms_page_widget_chooser</type>
                <data>
                    <button translate="open">
                        <open>Select Page...</open>
                    </button>
                </data>
            </helper_block>

在Magento中,Type是帮助程序块的类名。


嗨Zyava, 这是一个非常好的想法。只是为了补充你的解决方案。您还可以通过将类型从cms_page更改为cms_block来插入CMS静态块。 <helper_block> <type>adminhtml/cms_block_widget_chooser</type> <data> <button translate="open"> <open>Select CMS Static Block...</open> </button> </data> </helper_block> - Swapna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接