Modx资源列表作为用户的复选框

时间:2017-04-19 13:35:44

标签: checkbox modx-revolution

请帮助,我坚持使用Modx Revo电视输入类型选项。

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

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

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

关于此的文件非常模糊。

2 个答案:

答案 0 :(得分:1)

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

首先,创建一个新的模板变量。根据需要命名,例如list_children。然后转到“输入选项”选项卡并将“输入类型”设置为Checkbox,并在“输入选项值”下输入以下内容:

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

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

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

在此代码段中,请填写以下内容:

<?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);

答案 1 :(得分:0)

我找到了另一种方式。

  1. 使用输入类型复选框制作电视。
  2. 放置@SELECT pagetitle,id FROM modx_site_content WHERE parent = 123 !经办人。注意modx_site_content,它需要反映MySQL数据库前缀,在这种情况下是modx,将123改为各自的父ID。
  3. 将电视输出类型更改为分隔符,将昏迷(,)更改为分隔符。
  4. 将电视访问权限设置为相应的模板。
  5. 现在,您可以选择父资源的任何或多个子节点,这些子节点将输出其ID作为电视输出。例如。让我们说我们的父母123有33,34和35个孩子。在资源的Template变量部分中,使用可以访问tv的模板,你会发现一个带有子标题的复选框列表。选择一个或多个,例如33和35将输出&#34; 33,35&#34;在用于块的电视中。 我在Modx论坛中找到了解决方案。遗憾的是丢失了链接。