在 Forge - XOOPS

作者:Reuven M. Lerner

在过去的几个月中,我们一直在研究内容管理软件 (CMS),它可以轻松创建 Weblog,即个人日志,其受欢迎程度和影响力持续增长。关于什么是 Weblog(或博客)没有硬性规定,但大多数人可能会同意,其内容通常是短篇文章,最新的文章显示在最前面。

但是,还有一类更大、略有不同的 Weblog,可以称之为 Slashdot 风格,暂且这么称呼。这些 Weblog 由一小群人编辑,但有大量的贡献者。在许多方面,这些更接近于在线论坛或公告板,而不是 Weblog。但是,此类软件也为其个人成员提供 Weblog 功能。也就是说,网站访问者可以阅读主要讨论,创建自己的 Weblog,并阅读其他用户的 Weblog。

虽然一些软件包(最著名的是 Slash,它为 Slashdot、use.perl.org 和其他一些知名网站提供支持)是围绕公共和私人 Weblog 的概念设计的,但其他软件包也逐渐融入了这个概念。其中一个软件包是 XOOPS,据说是 Extended Object Oriented Portal System 的缩写。XOOPS 是 PHPNuke 和 PostNuke 系列门户服务器的衍生产品。

本月,我们将关注 XOOPS,特别关注 WeBLog(发音为 Wee-Bee-Log),这是一个旨在促进公共和私人 Weblog 的创建和管理的模块。我对 XOOPS 有所保留,但对于某些类型的受众来说,它可能是一个出色的工具。特别是,它可以轻松安装和管理,并且可以轻松地为每个用户授予其自己的 Weblog,这真是无与伦比。

历史

XOOPS 证明了 GNU 通用公共许可证、开源社区的力量,以及开源项目中的并非所有分支或拆分都是坏事。XOOPS 的故事始于 PHPNuke,这是一套用 PHP 编写并使用 MySQL 作为数据库后端的程序套件。PHPNuke 显然是建立在 ThatWare 之上的,ThatWare 是一个现已废弃的用 PHP 编写的 Slash 克隆。

接下来发生的事情至少可以说是有争议的,并且展示了当一个开源项目变得丑陋时会发生什么:大量的 PHPNuke 贡献者决定分叉该项目,并将他们的版本命名为 PostNuke。今天,PHPNuke 和 PostNuke 都存在,用户和开发社区之间几乎没有爱意。据我所知,并且没有深入检查代码,PHPNuke 主要继续由 Francisco Burzi 开发,主要的批评与他的管理风格、PHPNuke 模块的业余爱好者导向以及与安全相关的问题有关。虽然 PostNuke 非常受欢迎,并且似乎在安全性、管理、商业导向模块和数据库独立性方面具有优势,但维护者被指责过于频繁地更改 API,并将 PostNuke 设计得过于占用资源。与此同时,一些 PostNuke 的核心开发人员离开了该项目,将其分叉为最初被称为 LostNuke 的软件,现在更名为 Xaraya。

最后,XOOPS 似乎(据我所知)是 PHPNuke 的面向对象重写。XOOPS 维护者认为,通过重写系统以使用对象,它将更安全,更易于开发和维护。

好消息是,所有这些系统都在 GNU 通用公共许可证下可用。话虽如此,分支通常被视为开源社区中的最后手段——而如此多的分支发生在这个软件上,可能证明了这些项目缺乏强有力的管理和领导。回顾这些项目的历史,让我重新钦佩像 Linus Torvalds、Larry Wall 和 Guido von Rossum 这样的人,他们都设法将他们的社区团结在一起,尽管核心开发人员之间存在意见分歧。

XOOPS 似乎比 PHPNuke 或 PostNuke 拥有更小的社区。但是,内置模块和第三方模块的数量非常庞大,其面向对象的工具意味着构建自己的模块相当容易。事实上,尽管模块的数量仍然相当适中,但我对它的安装有多么容易印象深刻。这是否意味着您应该使用 XOOPS 而不是其他 Nuke 同类产品?这似乎很大程度上取决于政治和您的计划用途,而不是技术本身,尽管 XOOPS 使用对象这一事实确实使其具有优势,至少从理论上讲,从我的经验来看是这样。

下载和安装

现在我们已经回顾了 XOOPS 和相关软件的历史演变,让我们设置我们自己的 XOOPS 服务器。为了运行 XOOPS,您需要一个 MySQL 服务器——我在我的工作站上运行的是公认的旧版本 3.23.58——以及安装了 PHP 的 Apache(版本 1 或 2)副本。

安装 XOOPS 是我在很长一段时间内做过的最令人印象深刻且轻松的软件安装之一。我从 XOOPS 网站(参见在线资源部分)下载了代码,并在一个临时目录中打开了 .tar.gz 文件。然后,我将整个 HTML 子目录复制到我的 Apache 内容根目录中,作为 /usr/local/apache/html/xoops。完成此操作后,我就可以通过系统上的 URL /xoops 访问 XOOPS 安装程序。

安装程序是完全基于 Web 的,并且缓慢但肯定地引导您完成整个过程。最令人困惑的部分可能是您需要输入 MySQL 用户的用户名和密码的页面,该用户被授权创建新的数据库和表。鉴于许多安装 XOOPS 的人不太可能是经验丰富的 Web/数据库程序员,因此安装程序在此初始阶段的错误消息也可能更详细一些。

话虽如此,安装相当简单和轻松。我返回到系统上的 /xoops URL,并看到一个简单的介绍性屏幕,邀请我登录。我以站点管理员身份登录,虽然主屏幕相对空白,但我能够快速移动到屏幕左侧的“管理”菜单(图 1)。

At the Forge - XOOPS

图 1. XOOPS 站点管理页面是您选择要显示在站点上的模块的位置。

管理 XOOPS 非常简单,一旦您了解 XOOPS 中的一切都是模块。然后,大多数 XOOPS 管理员的首要任务是安装其他模块。转到“管理”菜单,然后选择“模块”。屏幕顶部列出了已安装的模块,屏幕底部列出了可用但未安装的模块。

要安装可用的模块,请单击模块名称旁边的相应图标。在您确认您的选择后,您应该看到一个指示,指示正在 MySQL 数据库中创建哪些表,哪些访问权限已添加到系统中,以及模块是否已正确安装。假设它已安装,您可以返回到“模块管理”页面,您应该在屏幕顶部而不是底部看到新安装的模块。

XOOPS 站点的默认布局相当空。要在主页上包含其他项目,您必须转到“块”管理页面,其中列出了每个模块包含的内容功能。“新闻”模块包含三个块——bigstory、topics 和 top。“块管理”主菜单允许站点管理器指示哪些块可见。但真正的强大功能发生在与每个块关联的“编辑”菜单中,允许您指示块应显示在屏幕上的哪个位置——在侧面、在中心还是在其他位置。

At the Forge - XOOPS

图 2. 通过从“块管理”菜单定位块来创建独特的站点布局。

模块

每个 XOOPS 模块都将 HTML、PHP 和 SQL 打包到一个定义的目录列表中,该列表在模块之间保持一致。例如,您始终可以期望在 class 目录中找到类定义,在 SQL 目录中找到数据库定义,在 blocks 目录中找到块,在 images 目录中找到图像。配置和版本信息始终位于模块根目录中的 xoops_version.php 文件中。

安装新模块就像下载它并将其顶级目录放置在模块目录中一样简单。因此,如果您从 Internet 下载了模块 foo,并且您的 XOOPS 目录是 /usr/local/apache/html/xoops,则只需将 foo 目录移动到 /usr/local/apache/html/xoops/modules。下次您访问“模块管理”页面时,该模块就在那里,随时可以安装和配置。

XOOPS 开发人员一直牢记的一个重要问题是数据库升级。很容易想象如何升级 XOOPS 模块的 PHP 和 HTML 部分。升级将 PHP 与 SQL 结合在一起的模块是一个更棘手的问题,但 XOOPS 团队似乎做得非常出色。XOOPS 模块中的 SQL 目录可能不仅包含带有 MySQL 定义的 mysql.sql 文件,还包含带有 ALTER TABLE 命令的更新文件,这些命令将表定义从一个版本更改为下一个版本。由于每个模块的表都与系统的其余部分隔离,因此您应该能够独立于彼此并以几乎任何顺序升级 XOOPS 模块。

WeBLog

现在我们已经了解了如何使用 XOOPS 模块,我们将安装由 Hiroyuki Sakai 编写的 WeBLog 模块。这不仅让我们有机会下载和安装第三方 XOOPS 模块,而且还提供了我们最初正在寻找的功能,即一个适合用户社区的 Weblog 系统。

要安装 WeBLog,请从主站点下载文件(参见“资源”)。与大多数 XOOPS 模块一样,您应该使用以下命令解压缩它tar zxf,然后将顶级 weblog 目录复制或移动到您的 XOOPS 模块目录中。在我的系统上,WeBLog 安装为 /usr/local/apache/html/xoops/modules/weblog。

要安装模块,只需转到“模块管理”页面,然后单击“安装”。现在,您可以创建和管理各种 Weblog。“模块管理”页面在左侧显示一个新的 WeBLog 图标,允许您设置权限(允许哪些用户创建 Weblog 并向其发布内容)、类别,甚至执行一些基本的数据库维护。

现在您已经可以创建 Weblog,请返回到您网站的主页。您应该在屏幕左侧看到一个 WeBLog 菜单选项,其中包含来自系统上所有 Weblog 的最新项目集合。如果您是第一次运行该模块,则此页面大部分为空。您可以通过单击“我的 WeBLog”来创建或修改您自己的 Weblog。在 HTML 表单的相应部分输入您的帖子,至少插入 75 个字符,除非您已在“首选项管理”页面中更改了此选项。发布新的 Weblog 条目后,您可以通过返回到 WeBLog 菜单项来查看它。该全局查看屏幕收集了所有个人 Weblog,但也允许您单击用户的姓名并仅查看他或她的 Weblog。

WeBLog 提供了许多其他有用的功能,从 RSS 联合供稿到可搜索和可浏览的存档,再到评论帖子的能力。您还可以要求在添加新帖子时收到通知。此类通知放置在 XOOPS 消息系统中,并在您进入网站时在主菜单上标记出来。

At the Forge - XOOPS

图 3. 成功!站点配置完成后,观看用户博客条目和评论涌入。

您应该使用 XOOPS 吗?

如果您想创建一个拥有 Weblog 的在线社区,那么 XOOPS 可能是一个不错的选择。它得到了活跃的开发社区的支持,并且 WeBLog 模块似乎稳定且维护良好。此外,该技术足够简单和直接,以至于具有 Web/数据库经验的人应该能够自行修改和维护系统。

但是,当我探索 XOOPS 时,我不禁将其与 OpenACS 进行比较,OpenACS 是另一个面向社区的 Web 系统,它具有 Weblog 模块。是否有任何理由让人宁愿使用 XOOPS 而不是 OpenACS,后者可以说在技术上更胜一筹?

尽管我非常喜欢 OpenACS,但答案是肯定的。当周围有硬核 Web/数据库黑客,当您可以 root 访问自己的服务器,并且可以将 OpenACS 工具包变成适合您需求的可行定制解决方案时,OpenACS 是一个很棒的系统。但是,许多人和项目没有资源或预算来获得如此强大的专业知识;他们希望在提供对 PHP 和 MySQL 访问权限的共享服务器上快速轻松地完成工作。对于这些人来说,XOOPS 可能正是他们想要的。它缺少许多我希望看到的功能,但它可以安装在任何地方,由庞大的 PHP/MySQL 程序员社区维护,并由受过最少培训的非程序员管理。它没有许多我在更复杂的系统中期望的功能,例如 Unicode 支持、单个软件包的多个实例、内容版本控制和分层组。但它确实很好地完成了它 intended 的工作,并且 XOOPS 用户社区似乎随时准备帮助任何有疑问和问题的人。

我发现很难将 XOOPS 归类为传统意义上的内容管理系统,尽管软件包维护者声称如此。是的,它允许您发布新闻文章,并让站点管理员批准后才能上线。但我认为 XOOPS 最好被认为是一个易于使用的社区系统,它可以简单地创建 Weblog 和其他标准化内容。对于许多人来说,这已经足够了,而且他们可以轻松创建相对复杂的站点,这超过了其他考虑因素。

结论

XOOPS 绝对不适合所有人——政治、面向对象的代码以及我认为至关重要的某些功能的缺乏让我对推荐它犹豫不决。但我也看到了掌握 Zope 和 OpenACS 等技术所花费的时间和精力,而这种权衡并不总是值得的。如果您是 PHP 和 MySQL 方面的专家,并且您希望创建一个具有良好 Weblog 功能的社区站点,那么您不妨考虑一下 XOOPS。

本文的资源: /article/7500

Reuven M. Lerner,一位长期的 Web/数据库编程顾问,现在是伊利诺伊州埃文斯顿西北大学学习科学的研究生。您可以通过 reuven@lerner.co.il 与他联系。

加载 Disqus 评论