首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有效模板系统

问有效模板系统
EN

Software Engineering用户
提问于 2012-02-17 20:17:43
回答 3查看 736关注 0票数 1

我正在建立一个内容管理系统,并且需要关于我应该采用的主题结构的建议。有几个选项(这不是一个完整的列表):

  1. Wordpress风格:
    • 控制器根据用户请求决定加载什么模板,例如:主页/文章存档/单个文章页等等。
    • 这些模板中的每一个都与其他模板无关,必须存在于主题中。
    • 主题开发人员决定(S)是否想使用内部模板(比如“侧栏”、“边栏项目”),并在他认为需要的地方手动将它们包括在内。

  2. Drupal风格:
    • 控制器只让主题开发人员控制内部模板;如果它们不存在,则内部返回到一些默认模板(我发现这非常有限制性)。

  3. 时髦风格:
    • 控制器只加载一个"index.php“模板,并提供主题开发人员的条件标记,如果(S)想要的话,他可以使用它来包含内部模板。

在这些样式中,或其他风格的模板系统允许快速开发和更简洁的设计和实现。

EN

回答 3

Software Engineering用户

发布于 2012-03-08 13:09:01

不如选择一个,比如Symfony 2 (http://symfony.com)或Zend (http://zendframework.com),它们都有预先构建的模板系统,您可以重用这些系统。

顺便说一下,Drupal目前正在将其核心框架组件的一部分转移到Symfony 2,因此您可能想看看它。

票数 3
EN

Software Engineering用户

发布于 2013-03-04 15:39:57

您可以将其归类为"Funky“样式的示例或离散的第四种风格:

  1. 聪明的风格:
  • 在模板中包含可替换项的纯文本标记(通常用大括号分隔);在运行时解释整个模板,用内容替换标记。该过程旨在使设计人员更加友好,因为编程结构不是直接嵌入的。无论您使用Python、PHP还是其他服务器语言,您都将以同样的方式解析和替换占位符,因此模板在这个意义上是相对良性的和可重用的。相反,您通常会放弃将参数传递给嵌入式函数的能力。

但是,您已经提出了一个更深层次的问题,我也必须解决这个问题,并提出了一些想法:“什么样式的模板系统允许快速开发和更简洁的设计和实现。”

由于您正在开发您自己的CMS,您可以自由地为模板系统定义您自己的接口,而不是将您的接口调整到现有的系统。你可以考虑:

  1. 是否要向其他将绕过模板的系统提供API?在这种情况下,在通常调用模板的情况下,您的所有内容都需要作为远程API请求的完全解析端点可用。因此,模板通常是带有变量调用的可执行HTML文件,该实例的内容与模板中的适当位置相同。大多数API驱动的应用程序将请求主要内容(标题、作者、正文、页面元),但通常情况下,与基于web的用户体验不同,侧边栏或页脚小部件之类的内部模板部件并不相同。这是一个很好的设计方法,任何CMS,提供公平的叙事或静态内容-也就是说,内容区域的网页可以很容易地预先构建为一个内容块,然后被嵌入模板或发送作为一个API的响应。此表单的模板内容倾向于使用类别名称作为主选项卡的标签,因为web界面的主要作用是提供对丰富CMS内容(例如,百科全书或面向阅读的站点)的分层演练。在这种情况下,单一索引是很好的,因为从视图到视图没有任何功能更改,只有内容更新。将自己借给前端控制器类型的路由,该路由与内容类别/层次结构相关联。
  2. CMS是否提供了更多基于应用程序的行为?如果顶层导航从主页切换到论坛、博客到管理等等,那么每个模板中的“内容”可能是非常不同的,而且可能是一系列带有标题的函数/查询,而不是静态内容。在这里,您可以有一个单独的模板来包装每种不同类型的主要内容(论坛与博客还是静态主页),或者在主体中有一个具有切换实例内容功能的单一模板。无论哪种方式,您仍然可以将该内容作为API请求的端点。如果使用独立的、依赖于类型的页面模板,这种通用的CMS方法将有助于页控制器类型的路由,特别是如果模板外壳本身可能需要对每种内容类型有一定的不同。另一方面,如果您可以通过单个嵌入式函数实现内容切换(如果它包含与上下文相关的小部件,则可能需要控制侧栏内容),那么您仍然可以使用单一索引模板方法,这将为用户提供更一致的外观和感觉体验。无论是页面控制器还是前端控制器路由都可以为该内容切换提供解决方案--您只是使用带有参数化内容开关的公共模板,而不是具有自己固定内容类型的参数化页面。

如果您能够在CMS为响应查询而准备的内容和使用它的模板系统(或API调用)之间建立一个干净的接口,那么您将有一个额外的优势:通过简单地更改模板目录的名称,新目录中的同名模板将以几乎等效的方式呈现相同的内容。我认为这是设计内容的一个最重要的好处: template :api接口清晰--你最终得到了一个更丰富的外部模板环境,比如Wordpress享受,你的上下文相关的区域,比如侧栏和页脚,可以利用内部模板将内容嵌入外部模板,比如Drupal,并且您可以根据应用程序的需要将替换机制定义为编程调用或解析的定位器。我可以采取任何免费或商业模板,并改进它与我的CMS接口在相当短的时间内,以支持非常不同的主题风格。大多数工作最终定义了不同主题之间的单独视图,这些主题有自己的非主内容内部样式(如侧栏小部件或用于表示集合的列表/表;主要内容通常只是注入其保留区域,而不进行中间处理)。

希望这对您正在设计的CMS有意义!

票数 0
EN

Software Engineering用户

发布于 2013-03-04 17:22:10

在近十年的PHP中,我还没有在我使用过的任何模板引擎中找到一个比"WordPress“样式更好的优势。

允许控制器确定引用了哪些模板,允许视图直接引用子模板,这是直接、简洁和可维护的。

我唯一的次要建议是,开发人员应该能够在某种通用配置中指定模板来源的主题。这防止了开发人员必须全局查找/替换控制器和子模板引用中的主题名称。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/135638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档