Drupal 是一个非常“无所不能”的 CMS。有些模块允许您添加几乎任何功能,这很棒。但是,感觉很多功能(v5 和 v6)似乎分散在各处,对用户来说不直观。作为一名开发人员,我留下的感觉是使用泡泡糖和细绳将网站拼凑在一起。
例如,要将文本添加到默认搜索框(单击时消失),您必须添加一些 jQuery 代码或覆盖主题。我还发现菜单系统比应有的复杂。
只有我有这种观点吗?你会对 Drupal 的核心做出哪些改变(如果有的话)?
Drupal 是一个非常“无所不能”的 CMS。有些模块允许您添加几乎任何功能,这很棒。但是,感觉很多功能(v5 和 v6)似乎分散在各处,对用户来说不直观。作为一名开发人员,我留下的感觉是使用泡泡糖和细绳将网站拼凑在一起。
例如,要将文本添加到默认搜索框(单击时消失),您必须添加一些 jQuery 代码或覆盖主题。我还发现菜单系统比应有的复杂。
只有我有这种观点吗?你会对 Drupal 的核心做出哪些改变(如果有的话)?
对我来说,Drupal 最大的缺点是大部分实时 Drupal 站点都存储在数据库中。由于没有自动方式在系统之间迁移内容或配置,因此必须手动完成对实时站点的更改,或者通过过于复杂的代码来处理。
Drupal 最大的缺点之一是它在面向非程序员站点构建者的交钥匙工具和面向开发人员构建复杂 web 应用程序的框架之间摇摆不定。它为两个群体提供了一些很酷的东西,但是对一个群体的让步总是倾向于绊倒另一个群体。
Drupal 社区的增长趋势是显式构建开发人员 API,然后在 API 之上分层管理 UI 和最终用户 UI。这是一件好事,但仍然有很多遗留架构。该项目本周已经 8 岁了,每个站点都需要混合以不同速度发展的模块。
如果有人还没有构建一个模块来做你想做的事,那么在不修改核心代码的情况下有效地利用系统需要了解许多不同的内部 API、许多独特的 drupal 数据结构,并研究一些偶尔的时髦工作流程。随着人们需要做棘手的事情并且没有专业知识(或时间)来研究“正确”的做事方式,许多非常糟糕且无法维护的网站正在四处流传。
(免责声明:我刚刚为一本关于 Drupal 的书合着了几章,而且我全职从事 Drupal 工作,所以我离“公正”还差得远。但我确实喜欢这样认为我保持观点。我也喜欢 Django。)
Drupal 将让您完成 80% 的开箱即用,但最后的 20% 将需要数月时间。
缺乏真正的面向对象设计意味着您经常不得不依靠其他开发人员的远见来留下“挂钩”功能来让您改变某种行为。
使用 Drupal 5 我也遇到过这样的情况,完成相对简单的设计更改的唯一方法是修补 Drupal 本身(然后确保在每个新的正式 Drupal 版本中重新应用补丁)。但是,公平地说,您应该已经看到 Drupal 4 中的情况有多糟糕。
我也很恼火,当我花时间识别当前 Drupal 生产版本中的错误或怪癖时,我提交了一个补丁,但补丁从未提交,因为基本上只有安全错误在当前稳定版本中得到修复。
Drupal 是一个令人印象深刻的系统。它的所有功能都非常小,而且它的模块系统非常强大。但正如 Eli 所说,您的许多任务将依赖于其他开发人员以特定方式做某事。
Drupal 社区内部对其设计存在争议。Drupal 在 PHP 的 OOP 功能强大之前就已经存在,但现在它们已经存在,经常讨论改变系统以使用面向对象的数据结构。根据您的口味,这可能对您作为开发人员不利。我自己对此有两种看法。
该系统对新手来说似乎也非常“神奇”,因为它以某种方式完成了所有这些疯狂的事情,几乎没有解释。“我只是定义了一个函数,Drupal 怎么知道怎么调用它?!”
但是,我必须说,总的来说,我是 Drupal 的忠实粉丝。这是一个很好的系统,每个主要版本都能更好地加载。我一个人都等不及7了。
Drupal 很适合入门,但您花费更多时间“撤消”而不是实际完成工作。这一直在改变,尤其是随着 Drupal 6 的发布,公平地说,它在贡献的模块中更加明显。
正如 Sean 所说,管理迁移也是一个问题。我仍然不知道将更改从开发站点移动到实时站点的好方法。
我不确定在当前的核心中我会改变什么,并且大多数缺陷正在解决中。图像管理需要工作,默认的管理界面有点混乱,在不涉及视图/面板等的情况下制作更复杂的布局可能需要一些工作。
我发现它非常复杂。作为一名 php 开发人员,我每天都因与 php 无关但与 drupal 本身有关的问题而烦恼。如何/为什么/什么时候做X?它是一只需要驯服的大野兽。文档仅限于一些非常好的指南,一大堆糟糕的指南,甚至更多似乎总是在谷歌中弹出的无用论坛主题。
后端的可用性是废话。自定义主题还会改变包的“管理”部分的布局,这可能会非常令人沮丧,并导致布局不够漂亮。
如果您正在使用 html 切片器,则不可能使用尚未专门为 drupal 创建的 html。它几乎迫使你使用 drupal-html,有很多 div,每个 div 有 5 个详细的类等。本质上,html/css 的人不能指望在这个级别上了解 drupal。
我不喜欢它依赖文件名(10 个字长,它们之间有非常细微的差异)来构建主题的方式。
话虽如此,它可以做的一些事情非常酷,可以为您节省几天和几天的自定义 php 开发
Drupal 为非程序员提供了强大的工具,他们可以用更少的时间轻松建立一个功能齐全的网站。但问题是 Drupal 的学习曲线太高了。
如果一个人是 drupal 的新手并且想要定制一些东西,那么如果他想以正确的方式来做这将需要很多时间。在drupal中有很多方法可以做一件事情,找出他最适合或最适合新人的方法是头疼的。
我认为它的高学习曲线是唯一的缺点,因为大多数公司都在努力寻找优秀的 Drupal 人才。http://drupalize.me/和http://buildamodule.com/在减少这种高学习曲线方面做得很好。
我发现与 modx 或 joomla/mambo 等其他 cms 相比,默认管理界面不是很直观
它是用 PHP4 编写的。这将从版本 7 开始更改。您当然可以在 php5 中编写自己的模块。作为一名经验丰富的 Drupal 开发人员,我发现我的简历由于我对 php5 的有限接触而受到影响。
它不是运行 SOAP 等服务的最佳选择。调用整个 Drupal 堆栈来提供 Web 服务对性能的影响太大了。服务模块仍在开发中。
没有数据库事务支持。当您将其扩展到极端负载时,这将成为一个问题。
从命令行运行测试会很好。这在 simpletest 1.x 中是可能的,但当前版本不能很好地支持它。Simpletest还不够成熟。干净的 Drupal 安装可能会导致测试失败。一些默认包含的测试会强制您使用您可能不需要的内容类型和模块,并且您无法在不破解 simpletest 模块的情况下禁用它们。
它有一个看似糟糕的安全记录:http ://secunia.com/advisories/search/?search=Drupal