铸造车间 - COREBlog

作者:Reuven M. Lerner

在过去一年左右的时间里,本专栏探讨了许多可以作为网站内容管理系统 (CMS) 的开源产品。如果您定期发布报纸、杂志或内容会定期更新的网站,那么 CMS 无疑对您的网站大有裨益。毕竟,如果软件可以为您处理链接、标题和其他项目的修改,您为什么还要手动修改它们呢?

传统的 CMS 是一个庞大而复杂的软件,因为它需要考虑到各种不同类型的网站组织。您的员工中是否任何人都可以创建新文章,还是只有记者可以?哪些编辑可以发布内容到网站?您需要哪种类型的页眉和页脚?您需要哪种搜索机制?答案几乎是无穷无尽的,这也解释了为什么 CMS 软件安装和管理起来可能很复杂。

如果您想定期发布文章,但又不想承担与功能齐全的 CMS 相关的管理开销,您可能需要考虑使用网络日志(Weblog)。网络日志,也称为博客(blogs),起源于 20 世纪 90 年代中期,最初是个人日记,在线日记,允许个人快速轻松地撰写和发布文章。尽管博客的风格差异很大,但它们的格式往往相当统一,这降低了软件的复杂性,使其更易于配置和管理。

本月,我们将初步了解开源网络日志软件,以及在博客社区中日益普及的标准。在此过程中,我们将了解 COREBlog,这是一个基于 Zope 的工具,可以相当容易地创建和管理网络日志。

老实说,我对找到一个好的博客软件包有一些个人兴趣。在阅读了过去几年的许多网络日志后,我决定是时候尝试自己写博客了。我的搜索结果应该在您阅读本文时在 blog.lerner.co.il 上提供(图 1)。

At the Forge - COREBlog

图 1. 作者的博客使用了基于 Zope 的 COREBlog 软件包。

什么是网络日志?

网络日志的形状和大小各不相同,反映了作者的兴趣和风格。也就是说,许多特征是大多数网络日志共有的

  • 顺序:帖子以倒序时间顺序显示,最新的文章显示在页面顶部。网络日志的主页通常只显示最近几天的帖子,其余的可以通过存档功能访问。

  • 评论:邀请网络日志的读者提交评论,评论通常紧随相关文章之后发布。通过这种方式,网络日志类似于基于 Web 的论坛,只是只有博主可以发起讨论主题。

  • 一位作者:通常,只有一个人参与网络日志。有些网络日志由多位作者撰写,但这相对罕见。如上所述,网络日志的评论是由主要作者以外的人撰写的。

  • 聚合:网络日志的内容通常使用称为 RSS 的 XML 格式提供,RSS 代表简易信息聚合(Really Simple Syndication)。这使得检索、分析和收集许多不同的网络日志成为可能,从而创建类似于个人报纸的东西。

  • 引用通告(Trackback):由专有软件包 Movable Type 引入,引用通告使网络日志可以跟踪指向彼此的链接。

  • 基于 Web 的编辑:由于网络日志仅存在于 Web 上,因此它们的界面期望您希望使用 Web 浏览器编写和编辑帖子。以这种方式管理网络日志非常有意义,但在 Web 浏览器中编写和编辑可能是一种不愉快的体验。许多网络日志软件包都提供桌面应用程序,以减轻这种痛苦,允许用户使用文字处理器或简单的文本编辑器编写,并在完成后上传最终产品。开源系统可以实现这种离线编辑,但它们需要进行一些配置。因此,您可能需要习惯在文本区域小部件中编写,或者学习如何自定义 Mozilla,以便可以使用更友好的编辑器。您还可以研究开源的 Epoz 项目,epoz.sf.net,该项目提供了一个跨浏览器、基于 JavaScript 的编辑系统。

以上列表并非详尽无遗。许多网络日志缺少评论、聚合或引用通告。但正如英文报纸演变成对标题、图片说明和故事排名有一套通用的风格规则一样,网络日志也演变成了有一套通用的期望。而且,对于功能的竞争非常激烈:当一个网络日志软件包添加一个有用的新功能时,其他软件包通常会在短时间内实现它。

对于经验丰富的 Web/数据库程序员来说,使用高级语言(如 Perl 或 Python)实现上述功能将是容易且直接的。如果您使用关系数据库(例如 PostgreSQL)来存储文章,您就不再需要担心排序或文件存储,因此您可以专注于输出。事实上,一些著名的博主,例如 Tim Bray,优秀的 Ongoing Weblog 的作者,网址为 www.tbray.org/ongoing,已经创建了自己的网络日志软件。

尽管我很喜欢编写新程序,但我讨厌重复发明轮子。鉴于已经存在大量用于创建网络日志的良好解决方案,包括一些允许我编写插件来扩展其功能的解决方案,我决定使用已经存在的东西,并在必要时使用已建立的 API 对其进行扩展和修改。

此外,一些较好的网络日志功能,例如评论和引用通告,可能很难实现。它们本身不一定难以使用,但鉴于似乎已经有 100,000 种不同的网络日志帖子评论机制,我想避免创建第 100,001 种。

我应该注意到,如果您有兴趣创建自己的网络日志,还有一种替代方案可以让您避免编写或配置任何软件——即使用互联网上许多免费的网络日志托管站点之一。对于大多数人来说,这些可能是一个完全足够的解决方案,但我仍然希望对我使用的软件有一定的控制权。此外,我想将我的网络日志集成到我网站和域名的其余部分,这意味着我需要在自己的系统上安装它。

COREBlog

如果您正在寻找安装最简单的开源网络日志软件包,并且您已经熟悉 Zope 应用程序服务器,您可能需要考虑 COREBlog。COREBlog 由 Atsushi Shibata 编写,是一个积极开发的 Zope 产品或插件模块。

正如我在本专栏之前的文章中提到的,Zope 是 Zope Corporation 编写和分发的开源应用程序服务器。Zope 主要用 Python 编写,并且是面向对象的,使用对象数据库 (ZODB) 来存储其大部分核心信息。Zope 开发与其他语言和应用程序服务器有很大不同,适应其思维模式可能需要一些时间和精力。但它也非常灵活,使开发人员可以轻松地向系统添加自己的模块(产品)。

COREBlog 以标准 tarball 形式提供,必须在 Zope 根目录下的 lib/python/Products 目录中打开。截至撰写本文时,COREBlog 的最新版本为 0.53b,当您从 www.coreblog.org 下载时,它以名为 COREBlog053b.tgz 系统的文件形式到达您的系统。以下说明假定环境变量 ZOPE 设置为 Zope 的根安装目录(在我系统上为 /usr/local/zope),并且 COREBlog 的 tar 文件位于 /tmp 中

# cd $ZOPE/lib/python/Products
# tar zxvf /tmp/COREBlog053b.tgz
# chown -R zope.zope # Or appropriate owner/group

手动或从其控制面板的 Web 界面重启 Zope,COREBlog 会自动作为可用产品添加。

要使用 COREBlog,您需要从屏幕右上角的“添加”菜单中创建产品实例。将您的 Web 浏览器指向您网站上的 /manage URL(例如,www.example.com/manage),然后选择 COREBlog。系统会要求您提供 ID(URL 中显示的唯一名称),以及标题(显示为网络日志的名称)和字符编码(默认为 ASCII,我通常将其更改为 UTF-8,以获得完整的 Unicode 支持)。

此时,网络日志几乎可以向世界展示了。我们可以使用以我们分配给它的 ID 结尾的 URL(例如,/atf)查看网络日志,或者我们可以通过将 /manage 路径附加到该名称(在我们的例子中为 /atf/manage)来管理它。

由于 COREBlog 中的每个帖子都必须与至少一个类别关联,因此我们必须在开始发布之前创建至少一个类别。事实上,红色警告告诉我们必须先添加类别才能继续。博客管理屏幕上有一个“类别”选项卡;单击它,系统会邀请您添加新类别。我们还可以重命名类别,并查看每个类别关联了多少个帖子。

创建类别后,我们可以单击“条目”选项卡并开始输入新帖子。每个条目至少包含标题、正文和类别。其他项目是可选的或默认为合理值,例如当前日期和时间。当您完成向博客发布项目后,您可以使用“预览”按钮预览它(我强烈建议这样做),或者使用“添加”按钮立即发布它。一旦您发布了故事,它就对全世界可见了。任何阅读您网络日志的人都可以在页面顶部看到新帖子。

但是,有人不必查看页面顶部才能注意到新帖子。侧边栏的“最新条目”区域包含指向每个最新帖子的链接。日历有一个指向特定日期所有帖子的超链接。单击主题会显示该主题的所有条目。但这仅适用于主题,而不适用于子主题。

自定义

自定义 COREBlog 最简单的方法是使用基于 Web 的属性编辑工具,标记为“设置”。“设置”选项卡允许您编写和编辑网站上各种页面的内容和行为。例如,您可以写一些关于您自己或您的网络日志的信息,或者指示默认情况下评论应受到审核。如果您有兴趣更改博客显示的字体和颜色,请单击“外观”选项卡以访问此类信息。

您可以通过修改用于显示输出的 DTML 页面来进一步自定义 COREBlog。特别是,您可以通过修改 COREBlog/dtml/modules(在 $ZOPE/lib/python/Products 下)中的文件来更改侧边栏(沿页面右侧)。这些页面是用 DTML 编写的,DTML 是 Zope 最初的服务器端模板语言。文件 index_html.dtml 除了调用和使用目录中的其他文件之外,什么也不做

<dtml-var calendar>
<dtml-var about>
<dtml-var recent_entries>
<dtml-var recent_comments>
<dtml-var recent_trackbacks>
<dtml-var categories>
<dtml-var archives>


为了更改模块的顺序或哪些模块出现,只需修改 index_html.dtml 即可。您还可以创建自己的模块,编写新的 DTML 文件,并使用 COREBlog API 来检索有关博客上已说和已做信息。

当然,由于 COREBlog 是一个开源产品,您可以查看和修改您喜欢的任何部分。说实话,没有太多需要修改的;COREBlog 中的大多数功能可能是您想要包含在网络日志中的功能。鉴于该项目正在积极开发中,应该很快会添加新功能。

聚合

当您成为知名的博客专家时,人们会每天多次访问您的网站,寻找您的最新智慧和指向有趣链接的指针。关注多个博客或希望将网络日志与某些新闻来源集成的人员使用聚合器程序来收集来自各个网站的内容。聚合器不直接查看 HTML;相反,它们检索以 RSS 形式分发的聚合源。

COREBlog 使聚合您的网站变得容易。事实上,您无需执行任何操作即可聚合您网络日志上的帖子。COREBlog 会自动为您处理此问题,同时提供流行的 RDF 和 RSS 格式。无需配置任何内容即可使聚合工作;COREBlog 开箱即用地提供了可工作的聚合。

结论

内容管理系统对于需要它们的组织来说非常棒。但如果您自己运行网站,功能齐全的 CMS 可能就有点过头了。在过去的几年里,许多个人开始发布网络日志,尽管网络日志软件仍处于相对早期的阶段,但这些产品确实使个人可以轻松地开始定期发布文章,以一种易于理解的标准格式。COREBlog 是一个用于创建和管理网络日志的开源应用程序,它似乎在提供基本功能方面做得非常出色。它还提供了一个插件架构,因此可以在不从头开始重启系统的情况下向系统添加新模块。下次,我们将继续我们的开源网络日志软件之旅,将其他一些软件包与 COREBlog 进行比较。

资源

COREBlog 可从 www.coreblog.org 获取。Zope 可从 www.zope.org 获取,Python 可从 www.python.org 获取。

Movable Type 的作者撰写了一篇关于引用通告的优秀介绍;请参阅 www.movabletype.org/trackback/beginnerswww.cruftbox.com/cruft/docs/trackback.html

有关 RSS 和聚合的信息,请查看 www.xml.com/pub/a/2002/12/18/dive-into-xml.htmlwww.webreference.com/authoring/languages/xml/rss/intro/2.html

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

加载 Disqus 评论