CMS设计模式和注意事项

时间:2011-01-10 20:28:15

标签: php content-management-system design-patterns

我正在为一个相对简单的网站创建cms - 组合,一些常规内容页面,自定义博客等。

在深入设计之前需要考虑哪些最佳模式。

我希望系统尽可能灵活,而不要太复杂。

我已经找了一些很好的资源来讨论cms和博客设计,但找不到太好的东西。

我的语言是php,但我想我正在寻找更多与语言无关的建议。

6 个答案:

答案 0 :(得分:11)

没有复杂性的灵活性......很棒的程序。

也许你是一个天才,你会做出满足你需求的东西。但我认为您将面临的最大问题是安全性健壮性。所以,真的,在这个页面上采取其他建议,看看wordpress,drupal,joomla和ezpublish。已经完成了很多安全措施。而且不仅仅是安全......

因此,研究其中一些工具,跟踪其缺陷,检查其安全策略。研究他们如何处理缓存,会话,bootstrap,绝对和&相对url管理,文档(图像,视频等),ajax,身份验证,身份识别,acl,用户界面,富文本编辑,迁移,模板,页面组成,内容过滤(我尝试删除你不需要的东西) ,插件,数据库抽象,精细缓存,css和js缩小,单个实例简单CMS不需要的所有额外复杂的东西)。很快你就会对他们所做的事情有一个“画面”。

通过这项工作,你肯定会注意到一些重大差异和错误。你将开始研究irc和火红的开发者,告诉他们其他人做了更好的选择。你会开始忘记刮胡子了。你可能会做一些贡献。有些会被接受,有些则不会。当某人解释为什么他们犯错误(他们犯错误)时,老核心开发者不喜欢。

现在,你有一个胡子的那一天。你的一些贡献将开始看起来像叉子。你会有敌人,朋友或追随者。你会开始感受到力量。

然后你会继续向上帝告诉上帝这个世界是丑陋的,你将会制造出第一个灵活而又不复杂的CMS。人们会哭。鸟儿会围成一圈。您将能够解释CMS的设计模式。

  • 我是用户。我知道我想要什么。做我想做的事情会让用户满意。我很高兴。
  • 你不相信戴眼镜的人的代码
  • “MVC MVC MVC”:人们回答“应该做的事”

认真,仍然有一个良好的CMS与破坏性创新的地方,很久以前与phpNuke开始的fork历史(据我所知)。但是一些实际产品对于大多数任务来说都非常好。

答案 1 :(得分:4)

我可能会冒这个名声,但我的经验表明,构建自己的CMS可能是一个非常合理的决定,特别是当您熟悉当前的开源系统并了解它们在功能,安全性或功能方面缺乏的时候。什么不是。开源通常意味着许多向后兼容性问题和糟糕的架构决策,这些问题无法轻易改变。

我强烈建议您不要只是采用MVC,而是要考虑使其具有吸引力的想法。

CMSes的一个主要问题是驱动动态网站所涉及的技术范围:逻辑的命令式php,数据查询的声明性SQL,界面的标记HTML,动态界面的命令式/功能性javascript,ajax调用的JSON等为了使系统易于管理,您必须将这些技术保持在受控且易于理解的环境中,但仍允许顺利集成。那里有知识和最佳实践。 MVC只是管理这个问题的一种方法。

我当时的选择是使用以下原则:

  • 使用静态调用的面向对象的代码(php是一次运行的东西,许多代码对象的实例很少被证明是合理的),除了全局上下文中的一行init代码之外什么都没有。
  • 使用XSLT和自定义内容处理器实现100%的代码设计分离
  • 可以接受任何http请求并将其重新路由到已注册方法的自定义路由器
  • 自定义内容处理器,可以根据请求参数(即http://local/class/method.xhtmlhttp://local/class/method.json
  • 根据需要为尽可能多的虚拟Web服务器提供一份代码副本
  • 所有数据库查询的SQL查询构建器(针对ORM选择灵活性)
  • 使用filter_ * functions强制过滤方法输入

我相信你可以选择一些你喜欢的:)祝你好运!

答案 2 :(得分:2)

一个好的模式是模型视图控制器模式或MVC。 这种模式建议在以下层中分离应用程序的逻辑:数据逻辑(模型),操作或业务逻辑(控制器)和显示逻辑(视图)。

这是一个很好的模式,因为你会遇到其他问题(以及模式)。 以下网站很好地解释了MVC概念:MVC Principles

答案 3 :(得分:1)

没有必要重新发明轮子,除非你试图改进它。

已经有很多CMS可用。我个人使用过ezpublish。还有其他选项,如drupal等。这是可用的所有开源cms的列表 - Click here

如果您只是想学习,那么您可以选择任何一种流行的开源来处理它们以找到它的架构和设计。

此外,我不认为任何人都可以为您提供最适合CMS工具的设计模式列表。因为每种设计模式都解决了一些特殊问题。而且,您只需根据要在项目中解决的特定问题选择设计模式。

答案 4 :(得分:0)

现在,编写自己的CMS是一种可怕的浪费时间。通常的开源解决方案 - 现在Joomla,WordPress和Drupal很受欢迎 - 是由成千上万的人编写的,虽然你可以通过使用已经准备好的东西来放松一点灵活性,这远远不能重做从刮。如果您使用Drupal,您还可以享受高质量,大规模可扩展的代码:)

答案 5 :(得分:-1)

如果您的rquiremnt是投资组合,一些常规内容页面,仅限自定义博客, Wordpress 将简单而且更好。

在PHP中有这么多可用的CMS,最受欢迎的是 Joomla