Modx 资源列表作为用户的复选框
Modx Resource List as checkbox for users
请帮忙,我受困于 Modx Revo 电视输入类型选项。
我想要实现的是拥有一个复选框类型的电视,它将特定父级的资源显示为复选框项目。因此,当用户检查一两个项目时,它们将作为逗号分隔值输出。
然后我会将我的电视放在模板上的 getresources 调用中,它将从检查的资源中输出一些信息。
那么如何将资源列表转换为复选框选项呢?
这方面的文档非常模糊。
完成这个需要一些工作,但不是很困难。
首先,创建一个新的模板变量。随意命名,例如 list_children
。然后转到输入选项选项卡并将输入类型设置为 Checkbox
并在输入选项值下输入以下内容:
@eval return $modx->runSnippet('list_children');
转到“输出选项”选项卡,然后在“输出类型”下拉列表中 select 分隔符。在分隔符文本框中写一个逗号 ,
。将模板变量应用于您选择的模板并保存。
新建,创建一个新的代码段。将此命名为 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);
我找到了另一种方法。
- 使用输入类型复选框制作电视。
- 将@SELECT pagetitle, id FROM modx_site_content WHERE parent=123
!注意。注意modx_site_content,它需要反映MySQL db前缀,在本例中是modx,将123更改为相应的parent id。
- 将 TV 输出类型更改为分隔符和逗号 (,) 作为分隔符。
- 将电视访问设置为各自的模板。
现在您可以select parent 资源的任何或多个 children,这些资源将输出其 ID 作为电视输出。例如。假设我们的 parent 123 有 children 33、34 和 35。在使用可访问电视的模板的资源的模板变量部分,您会找到一个带有 children 标题的复选框列表。选择一个或多个,例如33 和 35 将在块中使用的电视中输出“33,35”。
我在 Modx 论坛中找到了解决方案。不幸失去了link。
请帮忙,我受困于 Modx Revo 电视输入类型选项。
我想要实现的是拥有一个复选框类型的电视,它将特定父级的资源显示为复选框项目。因此,当用户检查一两个项目时,它们将作为逗号分隔值输出。
然后我会将我的电视放在模板上的 getresources 调用中,它将从检查的资源中输出一些信息。
那么如何将资源列表转换为复选框选项呢?
这方面的文档非常模糊。
完成这个需要一些工作,但不是很困难。
首先,创建一个新的模板变量。随意命名,例如 list_children
。然后转到输入选项选项卡并将输入类型设置为 Checkbox
并在输入选项值下输入以下内容:
@eval return $modx->runSnippet('list_children');
转到“输出选项”选项卡,然后在“输出类型”下拉列表中 select 分隔符。在分隔符文本框中写一个逗号 ,
。将模板变量应用于您选择的模板并保存。
新建,创建一个新的代码段。将此命名为 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);
我找到了另一种方法。
- 使用输入类型复选框制作电视。
- 将@SELECT pagetitle, id FROM modx_site_content WHERE parent=123 !注意。注意modx_site_content,它需要反映MySQL db前缀,在本例中是modx,将123更改为相应的parent id。
- 将 TV 输出类型更改为分隔符和逗号 (,) 作为分隔符。
- 将电视访问设置为各自的模板。
现在您可以select parent 资源的任何或多个 children,这些资源将输出其 ID 作为电视输出。例如。假设我们的 parent 123 有 children 33、34 和 35。在使用可访问电视的模板的资源的模板变量部分,您会找到一个带有 children 标题的复选框列表。选择一个或多个,例如33 和 35 将在块中使用的电视中输出“33,35”。 我在 Modx 论坛中找到了解决方案。不幸失去了link。