我正在寻找一种在Sitefinty的后端屏幕上有条件地显示模块字段的方法。
例如,假设我已经通过模块构建器创建了一个模块 - 我有两个字段:复选框和文本字段。
我希望文本字段仅在他们选中复选框字段后才显示给内容编辑者。理想情况下,复选框可以通过内容输入过程在现场隐藏/显示一些字段。
谢谢!
答案 0 :(得分:1)
注意:[module]和[section]假定您的自定义模块名称和部分。如果您未在backend screens and tweaks
中设置部分,则所有字段都位于MainSection
第1步 - 在高级设置中为模块添加自定义脚本。
假设这是一个动态模块......
在项目中创建一个JS文件,并通过转到:
在高级设置中引用它Advanced settings > Dynamic Modules > Controls > [module] > Views > [Module]View > Scripts
单击Create New
并将脚本位置指向您创建的JS文件。
第2步 - 在字段中添加自定义类
保持在高级设置中的位置并导航到您已经制作的字段。例如:
Advanced settings > Dynamic Modules > Controls > [module] > Sections > [Section] > Fields > [Field]
在此页面上向下滚动到CSS Class
并向此字段添加自定义CSS类
第3步 - 添加自定义Javascript
Sitefinity使用jQuery所以我使用它并根据类名设置一些非常基本的JS:
$(document).ready(function(){
$('.myTextBox').hide();
$('.myCheckbox input').on('change', function(){
var $this = $(this),
textBox = $('.myTextBox');
$this.is(':checked') ? textBox.show() : textBox.hide();
})
});
注意:自定义CSS类应用于实际元素的父包装
现在,当内容编辑器将新内容项添加到模块时,选中该特定复选框将显示并隐藏自定义文本框。
除了这个过程看起来有点过头之外,还有一些其他问题:
如果有更好/更简单的方法,我会暂时不回答这个问题。