amici / craft-super-dynamic-fields
使用JSON模板作为下拉列表、单选按钮或复选框的字段选项。
Requires
- php: ^8.2
- craftcms/cms: ^5.0
README
您现在可以包含任何Craft CMS模板,在其中添加JSON变量作为选项,而不是在字段设置中添加键/值。如果您有成百上千的字段带有选项,而不想在每个字段中添加选项,这是您最好的插件。此字段可以生成复选框、单选按钮、选择下拉框(单选或多选)。此字段类型支持后端和前端通道表单,包括普通字段、GRID和流体字段类型。最重要的用途是,由于它来自模板,您可以使用任何Craft CMS标签来生成选项。此插件不仅限于标签和值字段选项,还提供了自定义字段支持。在相同的JSON中,您可以传递任何变量,并通过简单的Craft CMS标签在前端获取这些变量。在我们的文档中了解更多信息。
安装
打开您的终端并转到您的Craft项目
cd /path/to/project
运行此命令以加载插件
composer require amici/craft-super-dynamic-fields
在控制面板中,转到设置 → 插件,并点击“安装”按钮为Super Dynamic Fields。
使用方法
创建新字段并选择任何超级动态字段(复选框、单选按钮或下拉列表),然后滚动到设置。您必须选择已添加选项的JSON模板,这样就完成了!
您必须遵循正确的JSON格式来添加选项。有两个必需的JSON字段,即“label”和“value”。您可以使用“default”作为“yes”来使任何选项为默认选中。JSON示例
[ {"value" : "option1", "label" : "Option 1"}, {"value" : "option2", "label" : "Option 2", "default" : "yes"}, {"value" : "option3", "label" : "Option 3"}, ]
"value","label"和"default"是JSON预定义变量。您也可以在JSON中传递其他任何内容,这将自动成为自定义字段变量。
[ {"label": "--" , "value" : "" , "default" : "yes", "link" : ""}, {"label": "Large" , "value" : "lg", "link" : "<a href='/abc'>Click Here</a>"}, {"label": "Medium" , "value" : "md", "link" : "<a href='/xyz'>Click Here</a>"} ] // In this example, link is a custom field.
{% set entries = craft.entries.section("sectionName").limit(11).all() %} [ {"label": "--" , "value" : "" , "default" : "yes", "url_title" : ""}, {% for item in entries %} {"label": "{{ item.title }}" , "value" : "{{ item.getId() }}", "slug" : "{{ item.slug }}"} {% if not loop.last %},{% endif %} {% endfor %} ] // In this example, slug is a custom field.
模板代码
您可以非常容易地从选择的JSON选项中获取值、标签和其他自定义字段。
对于单选框,如下拉列表和单选按钮
// Render Value {{ entry.myField }} {{ entry.myField.getValue() }} {{ entry.myField.value }} // Render Label {{ entry.myField.getLabel() }} {{ entry.myField.label }} // Render Extra fields: // (extras will always be an array that have other fields from json option.) {% set extras = entry.myField.getExtras() %} {{ extras.field1 }} {{ extras.field2 }}
对于多选框,如复选框和多选下拉列表
{% for item in entry.myField %} // Render Value {{ item.myField }} {{ item.myField.getValue() }} {{ item.myField.value }} // Render Label {{ item.myField.getLabel() }} {{ item.myField.label }} // Render Extra fields: // (extras will always be an array that have other fields from json option.) {% set extras = item.myField.getExtras() %} {{ extras.field1 }} {{ extras.field2 }} {% endfor %}
文档
访问Super Dynamic Fields获取所有文档、指南、定价和开发者资源。
支持
通过Amici Infotech支持或通过创建Github问题与我们联系