【问题标题】:Modx Resource List as checkbox for usersModx 资源列表作为用户的复选框
【发布时间】:2017-09-15 18:41:12
【问题描述】:

请帮忙,我被 Modx Revo 电视输入类型选项卡住了。

我想要实现的是有一个复选框类型 tv,它将特定父级的资源显示为复选框项。因此,当用户检查一两个项目时,它们将作为逗号分隔值输出。

然后我会将我的电视放在模板上的 getresources 调用中,它会从检查的资源中输出一些信息。

那么如何将资源列表转换为复选框选项?

这方面的文档非常模糊。

【问题讨论】:

    标签: checkbox modx-revolution


    【解决方案1】:

    完成这个需要一些工作,但不是很困难。

    首先,创建一个新的模板变量。随意命名,例如list_children。然后转到 Input Options 选项卡并将 Input Type 设置为 Checkbox 并在 Input Option Values 下输入以下内容:

    @eval return $modx->runSnippet('list_children');
    

    转到“输出选项”选项卡并在“输出类型”下拉列表中选择“分隔符”。在分隔符文本框中写一个逗号,。将模板变量应用到您选择的模板并保存。

    新建,创建一个新的代码段。将此命名为 list_children,或您更改 eval 表达式以调用的任何名称。

    在这个sn-p中,填写以下内容:

    <?php
    $c = $modx->newQuery('modResource');
    $c->where(array(
        'parent' => 2, // Id to fetch children from
        'published' => 1, // Remove this line if you also want to include unpublished resources
        'deleted' => 0 // Remove this line if you also want resources that are marked for deletion
    ));
    $c->sortby('menuindex', 'ASC');
    $collection = $modx->getCollection('modResource', $c);
    $output = array();
    
    foreach ($collection as $v) {
        $output[] = $v->get('pagetitle') . '==' . $v->get('id');
    }
    
    return implode('||', $output);
    

    【讨论】:

      【解决方案2】:

      我找到了另一种方法。

      1. 使用输入类型复选框制作电视。
      2. 将@SELECT pagetitle, id FROM modx_site_content WHERE parent=123 !收件人。注意 modx_site_content,它需要反映 MySQL db 前缀,在本例中为 modx,将 123 更改为相应的 parent id。
      3. 将电视输出类型更改为分隔符和逗号 (,) 作为分隔符。
      4. 设置电视访问相应模板。

      现在您可以选择父资源的任意或多个子资源,这些子资源会将其 id 输出为 TV 输出。例如。假设我们的父母 123 有孩子 33、34 和 35。在资源的模板变量部分中,使用可以访问电视的模板,您会发现一个带有子标题的复选框列表。选择一个或多个,例如33 和 35 将在块中使用的电视中输出“33,35”。 我在 Modx 论坛中找到了解决方案。很遗憾丢失了链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-29
        • 1970-01-01
        相关资源
        最近更新 更多