使用后端条件在 Sitefinity 中显示模块字段

Display module fields in Sitefinity using conditions in the back end

我正在寻找一种在 Sitefinty 的后端屏幕上有条件地显示模块字段的方法。

例如,假设我通过模块生成器创建了一个模块 - 我有两个字段:一个复选框和一个文本字段。

我希望文本字段仅在内容编辑选中复选框字段后才显示给他们。理想情况下,该复选框可以 hide/show 在内容输入过程中现场的一些字段。

谢谢!

经过一番挖掘,我找到了可行的解决方案。以下是我的处理方式:

注意:[module] 和 [section] 假定您的自定义模块名称和部分。如果您没有在 backend screens and tweaks 中设置部分,那么所有字段都将位于 MainSection

步骤 1 - 在高级设置中向模块添加自定义脚本。

假设这是一个动态模块...

在您的项目中创建一个 JS 文件并在高级设置中引用它,方法是:

Advanced settings > Dynamic Modules > Controls > [module] > Views > [Module]View > Scripts

单击 Create New 并将脚本位置指向您创建的 JS 文件。


步骤 2 - 添加自定义 classes 到您的字段

在高级设置中停留在原处并导航到您创建的字段。例如:

Advanced settings > Dynamic Modules > Controls > [module] > Sections > [Section] > Fields > [Field]

在此页面上向下滚动到 CSS Class 并向此字段添加自定义 CSS class


步骤 3 - 添加自定义 Javascript

Sitefinity 使用 jQuery 所以我使用它并根据 class 名称设置了一些非常基本的 JS:

$(document).ready(function(){
    $('.myTextBox').hide();

    $('.myCheckbox input').on('change', function(){
        var $this = $(this),
            textBox = $('.myTextBox');

        $this.is(':checked') ? textBox.show() : textBox.hide();
    })
});

注意:自定义 CSS class 应用于实际元素的父包装器

现在,当内容编辑器向模块添加新内容项时,选中特定复选框将显示和隐藏自定义文本框。

除了这个过程看起来有点过头之外,还有一些其他问题:

  • 您必须在编辑和插入时设置对自定义脚本的调用 看法。
  • 它不考虑任何验证。
  • 随着 Sitefinity 获得后端 UI 升级,长期可持续性值得怀疑。

如果有better/easier解决这个问题的方法,我会暂时不回答这个问题。