如何在MODX Collections子网格中配置下拉菜单?

时间:2019-06-01 14:40:51

标签: modx

我希望能够使用下拉选择框来更改“收藏集”网格中显示的“资源”电视的价值。

任何人都可以提供一个示例,说明如何在“收藏夹”网格中创建一个选择框。

  • 从现有模板变量中的选项填充
  • 从固定列表填充,只需选择选项1、2、3

我知道这是有可能的,但是找不到一个足够接近我所需要实现的示例,我可以自己解决。

我尝试过的事情

我看过苏珊·奥特维尔(Susan Otwell)的示例,该示例如何使用选择框更改“创建者” http://modxcookbook.com/add-ons/collections/editable-grid-view.html

下面链接的讨论解决了类似的问题,但仍未得到答复 https://forums.modx.com/thread/95984/adding-modx-combo-to-collections-list

MIGX的配置和语法看起来相似,但距离不够近,无法弄清需要做什么 https://forums.modx.com/thread/91403/single-select-listbox-entries-in-migx

MODx.combo.ComboBox文档看起来似乎有一些相关的细节,但我还不了解这是否有用 https://docs.modx.com/revolution/2.x/developing-in-modx/advanced-development/custom-manager-pages/modext/modx.combo.combobox

我已经在其他Extras的源代码中寻找类似的下拉列表示例。我看到了xtype引用,但是无法对它们进行反向工程,以了解在Collections网格中创建自己的下拉菜单所需的内容。

上面的Susan Otwell的示例基于xtype modx-combo-user创建了一个下拉列表。这看起来很接近我的需求,但是我无法弄清楚如何通过电视值或固定列表来创建下拉菜单。

{"xtype":"modx-combo-user","renderer":true,"fields": ["fullname","username","id"],"displayField": "fullname","baseParams": {"action": "security/user/getlist","usergroup":2}}

任何人都可以提供示例或为我指出可能有用的其他资源吗?

1 个答案:

答案 0 :(得分:0)

我刚刚在MODX论坛上回答了这个问题,但是这里是给StackOverflow上的任何人的

  1. 在资产目录中创建一个JS文件。为了简单起见, 在资产目录中创建一个名为test.js的文件。

  2. 转到MODX系统设置页面,然后选择“集合”名称空间过滤器。然后在collections.user_js设置中,输入 值:{assets_url} test.js。这将指示集合加载 每当您启动Collections时,您都会创建新的test.js文件。

  3. 对于此示例,将以下ZoomLevel(适用于Google Maps缩放)示例复制并粘贴到新的test.js文件中。

collections.combo.ZoomLevel = function(config) {
    config = config || {};
    Ext.applyIf(config,{
        store: new Ext.data.ArrayStore({
            id: 0
            ,fields: ['level']
            ,data: [
                ['1'],
                ['2'],
                ['3'],
                ['4'],
                ['5'],
                ['6'],
                ['7'],
                ['8'],
                ['9'],
                ['10'],
                ['11'],
                ['12'],
                ['13'],
                ['14'],
                ['15'],
                ['16'],
                ['17'],
                ['18'],
                ['19'],
                ['20'],
                ['21']
            ]
        })
        ,mode: 'local'
        ,displayField: 'level'
        ,valueField: 'level'
        ,name: 'zoom_level'
        ,hiddenName:'zoom_level'
    });
    collections.combo.ZoomLevel.superclass.constructor.call(this,config);
};
Ext.extend(collections.combo.ZoomLevel,MODx.combo.ComboBox);
Ext.reg('collections-combo-zoomlevel',collections.combo.ZoomLevel);
  1. 粘贴后,保存文件。

  2. 转到“收藏夹”视图页面,并为收藏夹网格添加新列。在编辑器字段中,复制并粘贴以下JSON:

 {
    "xtype": "collections-combo-zoomlevel",
    "renderer": true
 }

您现在有了一个组合框编辑器,其中包含我们在test.js文件中定义的值。

这些组合框是非常可配置的,但是要找出什么设置可以做什么会有些困难。

在这里您可以看到Collections本身定义的组合: https://github.com/modxcms/Collections/blob/9a328fa881b76e2ce355876156eaca3126065717/assets/components/collections/js/mgr/extra/collections.combo.js