billythekid/conditional-fields

根据其他字段的值显示或隐藏字段。

0.0.6 2020-04-28 12:05 UTC

This package is auto-updated.

Last update: 2024-09-04 08:02:33 UTC


README

此插件是一个临时解决方案。Mats已经将Reasons for Craft 3移植过来,并在Craft Discord中留下了这条信息。

我决定最终从Craft 2移植它,主要是为了使使用它的Craft 2网站升级更容易。由于Craft 4即将发布,无法保证Reasons条件可以迁移到核心条件,因此我建议不要用它来构建新的Craft 3网站。另一方面,“不久”是一个非常相对的术语……在3.0发布时,我从未想过要花费3-4年才能将字段布局条件添加到核心。此外,我们实际上还不知道Craft 4何时发布 :slight_smile

Brandon还添加了

由于各种原因,关于v4的计划有所改变。最初,v4是我们今年主要关注的内容,但现在我们认为进行如此重大的更新时机还不合适。因此,我们正在努力将尽可能多的v4功能添加到v3中,而不破坏现有功能,希望包括条件字段。由于是现有项目,所以进度会慢一些,但我们认为这是正确的选择。

除非你真的需要条件字段,否则我建议等待它集成到核心中。如果你真的非常需要它们,首先使用Reasons,只有在你需要最简单的实现时才使用这个。你已经收到警告了!

Craft CMS 3.x的Conditional Fields插件

条件字段概述

根据其他字段的值显示或隐藏字段或字段选项卡。欢迎提交PR。

现在,这可能不是你看到它发布时希望的所有内容!话虽如此,请发布你遇到的任何问题,我会查看它们。

条件字段布局即将添加到Craft CMS版本4的核心。 Craft CMS版本2有Reasons插件,但目前还没有适用于Craft 3的插件。

Reasons回归了!我强烈建议使用该插件而不是这个。

这是一个非常简单、非常愚蠢的实现方式,可以在你的条目等中实现条件字段布局。

如果你需要更复杂的功能,几乎肯定无法使用此插件实现,但如果你只需要根据简单的选择显示和隐藏一些字段,比如开关,可以试试这个。

要求

此插件需要Craft CMS 3.4.10或更高版本。它可能在早期版本(^3.0)上也能工作,但我没有测试过。我没有将安装限制为3.4.10,所以你可以试试看!

安装

要安装插件,请按照以下说明操作。

  1. 打开您的终端并转到您的Craft项目

     cd /path/to/project
    
  2. 然后告诉Composer加载插件

     composer require billythekid/conditional-fields
    
  3. 在控制面板中,转到设置 → 插件,然后点击“安装”按钮来安装“条件字段”。

使用条件字段

此插件添加了一个新的可用字段类型,称为“条件”。

  • 选择要监视其值的字段
  • 选择此值应为何种情况匹配和不匹配
  • 选择是否根据此值显示或隐藏字段
  • 选择在匹配/不匹配时应该显示或隐藏的字段或选项卡

创建用于显示/隐藏字段的条件字段

Creating a conditional field for fields

创建用于显示/隐藏选项卡的条件字段

Creating a conditional field for tabs

要检查条目字段中的条目,请使用“包含”并将条目ID作为值。

注意:这可能在矩阵块或其他复杂内容中不起作用。请保持简单。

一旦创建了条件字段,您就可以将其拖放到任何您希望其工作的字段布局中。

adding a conditional field to a field layout

字段本身对布局不可见。在布局视图中没有设置或值需要保存,我们只是添加了功能,所以将其隐藏。

显示/隐藏字段的示例

Layout view showing a matching fields condition

Layout view showing a non-matching fields condition

显示/隐藏选项卡的示例

Layout view showing a non-matching tabs condition

Layout view showing a matching tabs condition

应该做和不应该做的事情

做…

  • …尽可能保持简单。轻触开关字段是很好的“切换器”,并避免使用对用户“魔法”。
  • …将元素ID添加到“包含”匹配中,以匹配元素字段中包含该元素的元素。
  • …记住,这是一个视觉显示/隐藏。隐藏字段中的值不会更改,它们只是从视图中显示/隐藏。(因此,如果在隐藏之前具有值,则该值可以并将会在您的模板中针对您使用!)
  • …选择选项卡名称以条件性地隐藏整个选项卡的字段。
  • …报告问题,或者更好的是,分叉它并提交特性请求和修复。

不要…

  • …对这个期望过高!它不是解决问题的最优雅解决方案,但它在某些时候还算不错。
  • …在“包含”框中放置多个ID,这目前不会工作。
  • …如果某个字段没有值,将其设置为必填字段。您的元素将无法验证,并且您将无法看到原因!
  • …在字段布局中将任何“条件”字段(包含规则的字段)设置为必填项,这些字段没有可以验证的值。
  • …在任何布局中给不同的选项卡相同的名称。我的意思是,你为什么要这样做?这可能会只切换第一个。
  • …隐藏条件字段所在的选项卡,您将永远无法恢复它。
  • …将不同的条件字段设置为在相同布局中(显示/隐藏)相同的字段。谁知道会发生什么‽ 肯定会有坏事!