用于静态html/javascript的非用户可编辑块的适当Kentico对象

用于静态html/javascript的非用户可编辑块的适当Kentico对象,kentico,Kentico,情况:我有一个中等大小的html/javascript块,其中包含一个验证脚本/输入(它是一个文本输入、单选控件、一个组合框和几个按钮)。重要的是,它是一个由大量静态客户端代码组成的概念,营销部门可以很容易地意外地完成整个过程 愿望:我希望用户能够将其作为一个整体添加到页面中,但不能对其进行修改。当需要更改某些内容时,我希望在一个地方更改它,并在所有页面上更改它 我所尝试的:带有默认文本的小部件。这是可行的,但感觉不对。用户可以编辑它,如果我在一个地方修复了它,它就不会传播到所有实例。我有点像肯

情况:我有一个中等大小的html/javascript块,其中包含一个验证脚本/输入(它是一个文本输入、单选控件、一个组合框和几个按钮)。重要的是,它是一个由大量静态客户端代码组成的概念,营销部门可以很容易地意外地完成整个过程

愿望:我希望用户能够将其作为一个整体添加到页面中,但不能对其进行修改。当需要更改某些内容时,我希望在一个地方更改它,并在所有页面上更改它

我所尝试的:带有默认文本的小部件。这是可行的,但感觉不对。用户可以编辑它,如果我在一个地方修复了它,它就不会传播到所有实例。我有点像肯迪科的书呆子,但似乎应该有更好的方法来做到这一点


另请注意:如果有区别,我使用的是portal engine。

小部件是正确的用法。在本例中,使小部件从中继承的是关键。我建议基于静态HTML Web部件创建一个新的小部件。通过这种方式,您可以设置静态HTML标记,并在前端的内容编辑器中隐藏该属性。您可以通过转到小部件的属性选项卡并设置表单上字段的可见性来实现这一点。不要删除该字段,只需将其隐藏。它应该是一个复选框,显示隐藏在公共窗体或编辑窗体上

**编辑**
当我阅读我的答案和评论时,我意识到我的意思是说克隆静态HTML Web部件并将其默认文本设置为javascript。然后基于克隆的Web部件创建一个小部件。文本将驻留在web部件中,并允许您稍后在一个位置进行更新(如果需要)。

我不会这样做,因为您将无法在将来进行更改。您可以更好地创建一个新的Web部件这可以是一个空的Web部件,然后创建一个自定义布局。在这个布局中,你可以放置你的代码。通过这种方式,您可以在将来随时更改您的代码,然后它将在放置小部件的所有位置上被更改。

我将使用基于静态HTML Web部件的新小部件(将字段设置为只读或隐藏,如Brenden所述),但将数据存储在新的自定义设置中

  • 无需编码(仅使用宏读取自定义设置)
  • 能够在“设置”模块中的任何实例上动态编辑脚本。如果您有多个这样的设置,您不需要通过各种小部件来调整它们的默认设置,而是在一个中心位置找到它们
干杯


David在本例中,我认为创建一个自定义web部件来存储所有代码并以这种方式使用是有意义的。如果您想在不创建自定义web部件的情况下实现它,那么必须将代码存储在一些非web部件而不是特定于小部件的对象中。我喜欢创建自定义设置的建议。然后,您可以通过宏访问此自定义设置。此宏可用作新创建的web部件的默认属性(例如,从静态文本web部件继承,您将使用文本属性)。您也可以用它创建一个小部件。另一种方法是使用Kentico本地化键作为解决方案。您可以在本地化应用程序中创建一个密钥,然后通过宏再次访问它,例如{?customkey.myhtml?}。然而,对我来说,使用自定义设置的方法听起来更干净

此语法应适用于通过宏访问自定义设置值:

   {%Settings.CustomSettings.xxx%}
   {%Settings.CustomSettings["xxx"]%}
   {%Settings.CustomSettings.GetValue("xxx")%}

您使用的是什么版本?使用最新版本(8.2)感谢您的快速回答。我认为这不符合他的要求,即您可以在一个位置更新文本并将其传播到所有小部件,因为它存储在页面的内容定义中。我不明白您为什么要创建新的Web部件?它是静态HTML。所以我会使用一个静态HTML Web部件,并将其创建为一个小部件,其中已经编码了标记。内容编辑器不需要配置任何东西,只需将小部件放在页面上即可。创建新的web部件会增加复杂性和不需要的额外代码。如果将代码放在小部件的属性中,则将来无法更新小部件,因此最好的解决方案是使用web部件布局,这是保存在数据库中的代码,因此只需使用Kentico即可更改,而无需释放文件,并且当更改时,所有小部件都会更新。您可以通过创建一个空的web部件来实现这一点,但是如果您不需要额外的代码,您也可以复制一个简单的现有web部件,例如静态HTML代码,然后使用另一个web部件布局。