【问题标题】:Should I implement my own CMS?我应该实施自己的 CMS 吗?
【发布时间】:2010-08-10 13:07:54
【问题描述】:

我需要创建一个基于 CMS 的自定义系统。在其中,我还需要执行以下操作:

  • 每个人都有自己的用户名和密码,登录后会看到自己的个人页面。
  • 在这里,每个用户将显示八张图片,由管理员选择
  • 数据很敏感,因此安全性是一个大问题。
  • 它也会有一个新闻源,它将从管理门户检索新闻

现在,我从未编写过 CMS 系统。我也有时间限制。语言选择是 PHP,实现它的最佳方式是什么?

【问题讨论】:

  • 为了获得经验,您应该编辑此问题,使其看起来正确。请编辑并阅读页面右侧的格式规则。正确格式化后,您就会对 CMS 有所了解。
  • 是的,您应该实现自己的 CMS。迄今为止,编写 CMS 的 5000 万程序员中没有一个能做到这一点。
  • 如何开始实施自己的 CMS?
  • 这对我来说似乎不是关于管理内容的。

标签: php content-management-system


【解决方案1】:

“在我所见过的几乎每一种情况下,一家公司试图推出自己的解决方案,“简单”的解决方案都会被特殊要求和边缘情况慢慢吞噬,直到它与那些矫枉过正的解决方案一样复杂——但建立在从未为复杂性而设计的基础。”

QFT

我们过去常常维护自己的 CMS,它一开始简单而出色,然后收到来自客户的请求,几乎不可能在不同的人在项目中实现代码保持统一。缺乏代码版本控制是罪魁祸首,但客户也希望改变每一个小东西,直到每个站点的包都是唯一的。跟上进度变得不可能且代价高昂。

我们切换到 Drupal,生活变得轻松多了。

【讨论】:

  • 我同意你的报价,但我不会推荐 Drupal。诸如 i18n 之类的东西是作为事后的想法添加到 Drupal 中的,它显示(在 D5 和 D6 中)。虽然它确实有它的优点,但对我个人来说缺点大于优点(主要升级仍然有问题)。
  • 是的,我们在过去经历了艰难的学习,并适应了 Drupal 的最佳实践。我们较大的网站可能需要一两天的时间来升级,但其中一半是测试自定义添加/集成以确保它们仍然有效。
【解决方案2】:

问:我应该重新发明自己的轮子吗?

答:仅用于学习目的。

【讨论】:

  • 或者,当你有一个非常酷的想法想要全职工作时。
【解决方案3】:

CMS 系统以及错误跟踪器可能应该被视为为什么 Not Invented Here 综合症可能是一个巨大的陷阱的典型示例。

它们都有一个共同的属性,即从一开始就可以实现非常简单的系统,而对于您显然需要的“简单”CMS,第 3 方选项似乎过于复杂和矫枉过正。

在我所见过的几乎每一种情况下,公司都试图推出自己的解决方案,“简单”的解决方案被特殊要求和边缘情况慢慢吞噬,直到它与那些矫枉过正的解决方案一样复杂 - 但建立在基础之上这绝不是为了复杂性而设计的。

只要找到一个好的第三方解决方案。 3年后的你会感谢你的。

【讨论】:

  • 谢谢,您推荐哪种第三方解决方案?我的 CMS 经验很少,所以我需要能够满足我原始帖子中所写要求的东西。我用谷歌查了一下,但是有很多选择。
  • 不幸的是,对我来说,“不是在这里发明的”与“第三方组件最终会总是咬你”冲突。那里可能至少有一个可靠的 CMS,但我不知道如何找到它。
【解决方案4】:

有趣的是,我们在这种情况下使用“不要重新发明轮子”的表达方式。从大约公元前 2000 年到公元前 1500 年的世界历史由战车主主导,他们确实重新发明了轮子。在此之前,马车车轮是实心木板,这使得马车的速度不够快,无法超过你试图射箭的愤怒的武装人员。 (轻得多)辐条轮的发明使他们能够整天开车向人射箭。

我遇到的大多数 CMS 系统都相当于大型实心轮子(我会说 square 轮子被白蚁吃掉了一半,但这并不在所有情况下都是公平的)。也许这个人有能力发明一个更好的轮子。

【讨论】:

    【解决方案5】:

    定义“最佳”。

    如果“最佳”意味着“以最快的速度启动并运行”,我会说您唯一的选择是购买一个或找到一个好的开源 CMS。在阅读了您承认的“小经验”之后,这是双重事实。

    我建议您在 Google 上搜索开源 CMS 并制作前三个选项的原型。

    自己编写应该是您最后的选择。为什么要延迟发布并永远承担维护负担?

    【讨论】:

      【解决方案6】:

      问:我应该重新发明自己的轮子吗?

      答:没有

      【讨论】:

      • 问:我应该发明一个更好的轮子吗?答:,在适当的时候。
      • +1 让我发笑。虽然我认为,但它有点忽略了这一点。
      • 是的,最初的轮子肯定不如现代轮子。
      • quantum,我想说,只有当您的公司从事车轮制造业务,或者车轮是您成功的重要组成部分时,这才是正确的。
      • @quantumSoup:请定义“更好”。没有“更好”的定义,再发明就是再发明。
      【解决方案7】:

      对于我的客户,我几乎总是创建自己的 CMS。几个原因:

      • 它们更快,因为我只实现我需要的类。
      • 它们更容易编码,因为我的课程与客户公司的方式相同。例如,Musical 类有一个数组,其中 Castmembers 作为属性“cast”的值。
      • 您对 CMS 了如指掌,因此当出现错误时,您知道如何修复它。

      是的,这需要更多时间,但它会为您提供更多机会和灵活性。

      【讨论】:

      • 这也意味着你的客户被你作为顾问困住了——这真的很糟糕,而且不可维护。
      • 嗯,为什么?如果您编写了一些好的文档,任何其他顾问也可以使用您的代码。
      • @Adam:我宁愿继承一个简单的、有据可查的自定义系统,也不愿从原作者几乎不理解的现成 CMS 中破解出来的东西。
      【解决方案8】:

      查看CMS Matrix 以比较各种 CMS。

      【讨论】:

        【解决方案9】:

        这是有史以来最无聊的答案:“视情况而定”

        它取决于什么?嗯,最重要的是:

        1. 您所需要的与其他人已经可以做到的差别有多大?如果一个开源解决方案具有您 98% 的功能,您为什么要从头开始重做所有这些,而不是仅仅熟悉它并添加您需要的一些东西。
        2. 您希望花多少时间进行维护?如果您选择自己滚动,则只有您自己负责所有维护。如果您使用开源 CMS,并且也分发您的修改,那么其他人就有可能修复现有的错误,即使他们是您的。否则,测试、修复、扩展和优化 CMS 是您的责任,您只能靠自己。如果您的计划是实际创建自己的 CMS,并且您想在多个场合使用它,那么可以。如果您的任务只是满足一位客户的需求,请忘记创建自己的 CMS。

        问候
        back2dos

        【讨论】:

          【解决方案10】:

          时间限制意味着您可能没有时间做正确的事情,最好从其他人那里获取 CMS。只需配置它以满足您的需求。

          当您需要为非常挑剔的客户提供非常具体的定制解决方案时,您可以自己编写解决方案。否则,使用另一个 CMS 将为您节省数千个编程工时。

          【讨论】:

          • 你会推荐哪一个?
          • 在我看来最好的一个是 CodeIgniter。 codeigniter.com 用无聊的东西为你节省时间,你可以定制你需要定制的东西。
          【解决方案11】:

          你一定要自己写吗?有几个很棒的(免费的)PHP CMS 开源解决方案可用。为什么这些不适合您的需求?

          您是否考虑过为文字新闻博客蒙皮?

          您的具体问题是什么使开源可用的解决方案不适合您?

          【讨论】:

          • 我对使用开源解决方案持开放态度,但我很困惑哪一个是最好的和最简单的。另外,我不希望我的代码在我写完之后就开源,因为我打算分发它用于商业用途。
          • 您需要研究一下哪一种最适合您的特定需求。是时候破解谷歌了!
          • 如果您打算分发它并且不允许查看源代码,那么您不能使用开源CMS。
          • 关于开源的病毒性质以及使用开源 CMS 解决方案是否会“感染”您的其他源代码 - 答案几乎肯定是“否”。将 CMS 解决方案与您自己的代码一起托管在同一网站(但在不同的应用程序中)不被视为修改,另外使用开源代码托管网站不被视为分发。
          • @Ryan Brunner:这取决于所使用的许可证,因为有时甚至托管更改也被视为修改(请参阅GNU Affero license)。
          猜你喜欢
          • 2010-10-24
          • 1970-01-01
          • 1970-01-01
          • 2011-07-04
          • 2023-04-08
          • 1970-01-01
          • 2011-06-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多