是否可以将 Kentico webparts 硬编码到布局中?

Is it possible to hardcode Kentico webparts into a layout?

Kentico 8.2.

我有一个布局 "master" 文件 - 创造性地命名为 Master.ascx。

我在布局中有三个 Web 部件区域:header、主要区域和页脚区域。 Main 仅包含一个内容占位符,该占位符会被下一个布局覆盖 - 主页、标准等。

可以 将 Web 部件拖放到 header 上,将页脚 Web 部件区域拖放到 "design" 选项卡上,但我不这样做出于几个原因想要:

  1. 哪些 Web 部件进入哪个区域存储在数据库中,Git 中没有版本控制。布局文件本身 通过 "store CMS Virtual Files on disk" 选项进行版本控制的。
  2. header 中的布局标记非常复杂,我最终需要为 4 或 5 个 Web 部件设置 4 或 5 个 Web 部件区域 - 或者我需要编写布局 Web部分或将行布局/列布局拖入等 - 在定制标记中对 Web 部件进行硬编码似乎要简单得多。
  3. 我发现使用 Visual Studio 编辑纯文本文件比将 Web 部件拖放到区域中要快得多,这同样适用于将在此站点上工作的任何其他人。
  4. 哪些 web 部件进入哪些 web 部件区域永远不会改变 - 始终有一个主导航,share-on-facebook,等等 - 包含哪些 web 部件永远不需要以任何方式动态。

是否可以将 Web 部件硬编码到我的布局中?

为了回答您的问题,您不能在布局中对 Web 部件进行硬编码。简单的推理是 webparts 不是布局的一部分,它们是模板的一部分。每个模板的 Web 部件定义与模板一起存储在数据库中 XML。您可以通过转到模板并选择 Webparts 选项卡来查看它,它将显示该页面模板上每个 webparts 的所有 XML。

了解您的 4 点来自何处。您还需要考虑的是:

  • 当您want/need升级或应用修补程序时会发生什么?
  • 从客户端、内容编辑器和内容管理员的角度来看,将所有内容都写在代码中会使 CMS 变得毫无用处。
  • 如果您在物理文件中编写所有代码,那么如果每个请求都需要开发人员或更改物理代码,那么拥有 CMS 就毫无意义了

CMS 的要点是动态的和数据库驱动的。并非所有内容都可以驻留在文件系统、数据库或代码存储库中。 Kentico 有一些非常强大的开发人员工具,您可以启用它们,例如工作流、版本控制和 check-in/out。

我还会启用您的 DBA 并确保他们在发生某些灾难时有有效的备份和恢复计划。

不可能,因为它违背了Portal Engine的开发模式。如果您的主要问题是这些对象在 GIT 中不可用,请考虑保存虚拟对象的选项(https://docs.kentico.com/display/K82/Deployment+mode+for+virtual+objects) to the file system, so they are picked up by GIT. I'd also suggest to keep the website upgrade safe (e.g. by using the Portal model), because the next version will feature CI support (saving of all DB objects to the file system) http://www.kentico.com/product/roadmap 将在 2 个月内发布