构建轻量级面向公众网站的工具箱/框架


Toolbox/framework to construct lightweight public-facing web site

我知道成熟的内容管理系统(CMS),如SugarCRM和TikiWiki。。。其中内容通常存储在数据库中。。。并在发布时通过相同的界面进行编辑。虽然我喜欢其中的许多功能,但该产品显然是面向企业范围的使用,而不是面向公众。

我想建立的是填补成熟CMS和手工编码定制网站之间空间的潜在替代方案。我喜欢在CMS中添加模块的方式。。。允许我快速引入新功能,我希望在公共网络内容的系统中有一个类似的功能。我知道我想要的模块包括有节制的评论;网络表单到电子邮件网关;菜单/选项卡。。。未来,也许是地图或日记或RSS集成等

如果我的要求与CMS不同,我不需要(或希望)通过主网站编辑大多数内容。。。而且,不知何故,我确实希望能够预览更新将如何向公众展示,而不是进行实时更改。出于这些目的,与典型CMS理想的情况相比,演示是至关重要的,并且胜过任何立即传播信息的愿望。

我意识到这是一个非常高层次的问题。。。(欢迎添加标签的建议)-我提到PHP只是因为-理想情况下-我正在寻找一个开源解决方案,PHP部署是一个简单的选择。

我有什么选择?

我不需要(或希望)大多数内容都可以通过主网站进行编辑。。。

所以你不需要(或想要)CMS。

你需要自己编写你想要的东西。但是,您可以从现有工具中获得帮助。有很多API,框架,微框架。。。可以帮助你做这样的事情。

首先,您是否接受使用MVC编写代码。如果没有,我唯一知道的工具就是CakePHP。

如果是:我注意到你想要:

我喜欢在CMS中添加模块的方式。。。允许我快速引入新功能,我希望在公共网络内容的系统中有一个类似的功能。

因此,一个具有简单的"即插即用"架构的框架会很有趣。我和赛姆丰的经历让我觉得这对你有好处。对于Symfony,您已经编写了许多捆绑包。看看KNPBundles和FriendOfSymfony Bundles。FOSUserBundle、KnpBlogBundle是众所周知的但我也看到了:

一个框架可能正是我想要的。。。Zend是一种可能性——尽管它的水平比我希望的要低。

所以我可以告诉你Silex,一个基于Symfony核心的微框架(所以它是一个没有贪婪扩展的高级框架)及其bundle架构。

我也听说过hoa_project(因为我在推特上关注它的创建者),但从未使用过它,所以我不能告诉你更多。

您列出的需求实际上是CMS的需求。如果我错了,请纠正我,但你想要:

  • 面向内容的模块(文章、评论、审核、网页表单等)
  • 发布前所见即所得预览
  • 创建(或重复使用)模块的能力
  • 对表示层的高度控制

你不想要的是:

  • "在页面中"编辑内容

有许多PHP内容管理系统可以满足这些要求;我个人很熟悉CMS Made Simple,它几乎包含了以上所有内容。Drupal是一个功能更全面(也更复杂)的选项,它也提供了这一功能。Wordpress是那些需要匆忙建立好看网站的人的最爱。

所有这些CMS解决方案都专注于创建面向公众的网站,而不是内联网知识共享应用程序(它们在这方面非常无用)。Drupal提供了允许您管理内容发布工作流的工作流。他们提供的关键是提供内容的"所见即所得"预览,这对于从头开始构建来说是非常重要的。

在我看来,这些选项的主要缺点是,它们非常适合内容驱动的网站,但如果你想将功能集成到应用程序中,或者修改布局,你必须通过CMS层来控制用户界面;这可能会让人有点厌烦。

这个问题可能引发宗教战争。既然你不是在问一个编码或编程问题,就不能用事实来回答,只能用观点来回答。

根据我的经验,Symfony作为一个框架一直做得很好,遵循MVC架构。与任何框架一样,使用Symfony开发网站需要比CMS更大的投入和更多的编程。

我看你想要一个预览选项。虽然你可以用Symfony自己完成这项工作,但你可能想利用Drupal中的功能,使用它的工作流模块。当然,使用Drupal的角色,您可以使某些页面(或页面类型)不可修改。

有许多方法可以实现您的需求。你做的研究越多,就越不可能回头重写。

更新

学习Symfony的最佳资源可在Symfony.com上找到。请访问文档部分。"The Book"是关于All Things Symfony的一般资源,我相信这是你能找到的最权威、最完整的资源。**我觉得它写得很清楚。"The Cookbook"包含特定类型应用程序的示例和策略,一旦您能够轻松使用Symfony,它将更加有用。

**当您从Symfony.com中选择书籍时,在页面右侧,您会看到一个"选择"框,上面写着"2.0版本"。虽然2.0是Symfony的最新"版本",但您可能希望将其更改为"主版本",其中将包括对即将发布的2.1版本中包含的功能的引用。Symfony版本往往与以前的版本有很大的不同,所以在你完成项目时,为即将"发布"的版本进行开发是很好的

每本书都可以以PDF格式下载。Sensio实验室(Symfony的创建者)的所有书籍都在知识共享下获得许可。

至于附加软件,Sensio发布了许多附加软件(在Symfony语中称为"捆绑包")。这些都记录在同一个网站上,但第三方捆绑包(有很多)的文档通常由作者提供。您可以在http://knpbundles.com/.

至于Drupal,我必须承认,现在我在Drupal中实现的东西通常比Symfony多。使用drush进行命令行管理,可以非常容易地保持最新状态,Drupal软件和模块维护人员非常友好,很容易在IRC(FreeNode)中找到。Drupal拥有大量的在线文档。事实上,这可能有点令人生畏,但事情往往组织得很好。Drupal上已经出版了许多书籍,可能会在http://drupal.org/books。。。但我还没有准备好,所以我不能提出具体的建议。

在不了解更多关于您的需求的情况下,我只能推荐Drupal和Symfony。:)

您几乎在描述CodeIgniter。看看这个视频演示,并决定这是否是你需要的。CodeIgniter不是一个CMS,而是一个框架,您可以在其中轻松构建适合您确切需求的CMS。

我想添加Yii(http://www.yiiframework.com/)。一个伟大的框架,具有各种轻松的编程功能。预览功能不在板上,但不难添加(http://www.yiiframework.com/doc/blog/1.0/en/post.create#implementing-预览功能)。