如何参数化 Umbraco 模板?

发布于 2024-10-25 03:18:59 字数 816 浏览 5 评论 0原文

我有一个 Umbraco 网站

...具有各种文档类型,例如:

  • 页面
  • 发布
  • 事件
  • 新闻

...以及各种模板,例如:

  • 内容的家庭
  • 内容
  • 带有嵌入式媒体列表
  • 内容(例如 youtube 视频)

在模板中,我有一些可选宏/小部件。例如,有时具有“内容”模板的页面会显示“搜索站点”小部件,有时则不会。特定小部件是否显示在特定页面上将由 CMS 管理员(不是开发人员)控制。

为每个小部件组合添加模板不是一个选项:如果“内容”模板具有可选小部件 W1、W2、W3,那么我最终需要为这些小部件的 powerset 的每个成员创建一个模板 - 即我必须将我拥有的模板数量乘以 8 (2^n),以获得 3 个可选小部件(实际站点将有超过 3 个可选小部件)。

因此,我想根据用户在 Umbraco 后端某处设置的参数来打开和关闭小部件的显示。实际的打开和关闭非常简单 - 我只需在用户控件中添加一个“if (widgetX_is_turned_on)”语句。

但是,据我所知,我只能向文档类型添加属性,而不能向模板添加属性。我不想添加用于将每个小部件切换到我的根文档类型中的属性,因为如果与文档关联的模板不允许某个小部件,那么许多切换/属性最终将不会执行任何操作。例如,如果我创建一个名为“示例页面”且具有“内容”文档类型的“页面”文档,那么如果“内容”模板实际上不允许显示,则“显示搜索站点小部件”切换/属性将不会执行任何操作“搜索站点”小部件的。

是否有一种简洁的方法来参数化模板,以便我可以打开和关闭单个文档的宏/小部件?

I have an Umbraco site

...with various document types, e.g.:

  • page
  • publication
  • event
  • news

...and various templates, e.g.:

  • home
  • content
  • content with listing
  • content with embedded media (e.g. a youtube video)

Within a template I have some optional macros / widgets. For example, sometimes a page with the "content" template will display a "search site" widget, and sometimes it wont. Whether or not a particular widget is displayed on a particular page will be controlled by the CMS admin (who isn't a developer).

Adding a template for each combination of widgets isn't an option: if the "content" template has optional widgets W1, W2, W3 then I'll end up needing to create a template for each member of the powerset of those widgets - i.e. I'll have to multiply the number of templates I have by 8 (2^n) for just 3 optional widgets (there'll be more than 3 optional widgets for the real site).

So I'd like to toggle the display of widgets on and off, based on a parameter set by the user in the Umbraco backend somewhere. The actual toggling on and off is very easy - I'll just add an "if (widgetX_is_turned_on)" statement in my user control.

But, as far as I can tell, I can only add properties to document types, not to templates. I'd prefer not to add a property for toggling every widget into my root document type, because many of those toggles / properties will end up doing nothing if the template associated with a document doesn't allow a certain widget. For example if I create a "page" document called "Example Page" with a "content" document type, then the "display search site widget" toggle / property will do nothing if the "content" template doesn't actually allow the display of the "search site" widget.

Is there a neat and tidy way to parameterize a template so that I can switch macros / widgets on and off for individual documents?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我偏爱纯白色 2024-11-01 03:18:59

基本上,您所做的就是为您的小部件创建单独的文档类型,然后将它们链接到您的内容。如果当前页面没有选择小部件,您甚至可以从父文档继承小部件。

这个概念的一个很好的解释可以在这篇博客文章中找到:http: //blog.hendyracher.co.uk/sidebar-widgets-with-umbraco-v4/

Basically what you do is create seperate document types for your widgets and then link them to your content. You could even inherit widgets from parent documents if no widget has been chosen for the current page.

A good explanation of this concept can be found in this blog post: http://blog.hendyracher.co.uk/sidebar-widgets-with-umbraco-v4/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文