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

Proper Kentico object for non-user-editable block of static html/javascript

情况: 我有一个中等大小的 html/javascript 块,其中包含一个身份验证 script/input (它是一个文本输入,无线电控制,以及一个组合框和几个按钮)。它是什么比它是大量静态客户端代码的概念更重要,营销部门很容易不小心将整个事情搞砸。

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

我尝试过的: 带有默认文本的小部件。它有效,但感觉不对。用户可以编辑它,如果他们这样做,当我将它修复到一个地方时,它不会传播到所有实例。我有点 Kentico 菜鸟,但似乎应该有更好的方法来做到这一点。

另请注意:如果有差异,我正在使用门户引擎。

小部件是正确的用法。在这种情况下,您让小部件继承的是关键。我建议创建一个基于静态 HTML webpart 的新小部件。通过这种方式,您可以设置静态 HTML 标记并从前端的内容编辑器中隐藏 属性。您可以通过转到小部件的“属性”选项卡并设置字段在表单上的可见性来执行此操作。不要删除该字段,只是隐藏它。它应该是一个复选框,表示在 public 表单或编辑表单上隐藏。

** 编辑 ** 当我通读我的回答和评论时,我意识到我的意思是克隆静态 HTML webpart 并将其默认文本设置为您的 javascript。然后基于该克隆的 Web 部件创建一个小部件。文本将驻留在 Web 部件中,并允许您稍后在需要时在一个地方更新它。

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

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

  • 无需编码(只需一个宏即可读取自定义设置)
  • 能够在设置模块中的任何实例上即时编辑脚本。如果您有多个这样的设置,您将不需要浏览各种小部件来调整它们的默认设置,而是在一个中心位置找到它们。

干杯!

大卫

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

此语法应该可以通过宏访问自定义设置值:

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