amici/craft-super-dynamic-fields

使用JSON模板作为下拉列表、单选按钮或复选框的字段选项。

5.0.1 2024-03-30 10:07 UTC

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问题与我们联系