Drupal 系统的模块使用方法和技巧
不不,不是 Cialis (西力士:伟哥2代),看清楚是 Calais。它是一种免费的(就成本而言)对自然语言的处理程序,一种富语义的元数据(rich semantic metadata),一种网络服务,等等诸如此类的东西(thingy: 东西)。切入正题(cut to the chase),它主要从您的网站读取文字信息,基于同样使用这项服务的人从其它多得数不清(bazillions)的网站读到的文字,它能为您通过计算自动得出(figure out)一些敏感的标签(sensible tags),这样您的编辑人员就可以省去这项工作。
但是,Calais 不是仅仅生成一组简单的没有层次的自由标签组,它会按小组生成标签到 Drupal 中意思相近(analogous)的分类词库(taxonomy vocabularies),而这些分类词库和“实体”(人、公司、城市等)、“事实”(某人的职位或者实体之间的关系)和“事件”(体育赛事)有关。而传回的格式是一种开发的、有语义的、并且与互联网相兼容的格式(Resource Description Framework or RDF),这种格式可以帮助您基于某个主题在文章与文章之间生成一个智能的联系。这个技术可以用来辅助 SEO ,获得更好的搜索结果,或者创建一个区块功能类似于“相关文章”,从同样使用 RDF 的资源中获得外部数据,又或者是一切您能想象地到的使用这些信息的应用。
要了解一下它是如何工作的,可以在 http://viewer.opencalais.com 复制些文字。本例使用的文章来自于 Wikinews teaser about President Obama:
它能正确地分辨出文章的主题“Politics(政治)”、文章涉及的城市“Washington,United States(华盛顿,美国)”,人名“Barack Obama”和“George W. Bush”,甚至还有 George W. Bush 的原画。非常棒(Pretty nifty)!
So, 想要把这个功能和 Drupal 连起来?让我们一探究竟!
您还可以设置 Relevancy Threshold(关联度的阈值——界限)。通过设置这个选项来规定(dictate)关联度多少的属于会被加入这个节点(node),范围从0% (给任何 Calais 提出的(comes up with)术语加标签)到100% (只标记高度关联的术语为标签)。

您能选择或者取消这些选项;例如, 如果您的网站有许多和Windows相关的内容,您可能会取消“MedicalCondition”(医疗条件)和“MedicalTreatment”(药物治疗),这样“virus”和“inoculate”就不会发生歧义(misinterpreted)。(Cityreader注:virus 在windows 操作系统中是程序病毒,如果没有取消“MedicalCondition”和“MedicalTreatment”词库,那么可能会被划入生物含义上的病毒)。
Calais 所有词库连同一些例子,请点击 Calais documentation 访问。



这些术语会基于它和文章谈及的话题的关联度来设置权重。像“Technology”和“Nintendo”这样的单词权重最高,而像“Canada”和“Australia”这样的其他术语权重相对较低。您可以通过点击蓝色的术语来移除这个术语,你也可以添加您自己的标签来修正信息,这样可以帮助 Calais 变得更只职能。例如,我可以关闭所有与国家有关的词库,再添加一个产品词库对应术语“Nintendo DS”。

注意您可能也想安装类似 Pathauto 的模块来为您的分类术语生成更加直观的 URLs (例如: products/nintendo-ds 而不是 taxonomy/term/1234)。并且如果您例行公事时对一些术语感到困惑,您可以使用 Calais Tag Modifier 模块(Calais 安装包中的一个子模块)来设置术语的黑名单(例如,忽略“Other”这个术语)和术语替换(Color => Colour)。
很好!下面是本文中用到的资源。尽情享受吧(Go nuts)!
顾名思义, Custom Breadcrumbs 让您基于 node 的类型创建和修改您自己的 breadcrumbs (面包屑导航条)。
在开启这个模块后,打开 Administer › User management › Permissions 页面,并把 "administer custom breadcrumbs" 的权限授予适合的用户角色。
接着打开 Administer › Site building › Custom breadcrumbs 页面,这里您将会看到添加的自定义 breadcrumbs 的链接(见图 1)。点击打开进入 Custom Breadcrumbs 的设置页面。

点击选项添加一个自定义 breadcrumb
首先选择您添加的 breadcrumbs 所对应的 node 类型。接下来是设置两个文本框 “Titles”和“Paths”。当您新建一个 breadcrumb,实际上就是在添加一种链接。在这个自定义 breadcrumb 的页面,“Titles”对应的是 breadcrumb 所显示的文字,而“Paths”所对应的是 breadcrumb 的链接地址。所以“Titles”文本框中的一行内容就对应着“Path”文本框中对应的一行内容,他们必须一一对应。
现在举一个很简单的例子来说名如何使用这个模块。假设我在我的网站上有一个叫做“Deep Thoughts”的博客。如果要为这个博客新建一个自定义的 breadcrumb,首先使用 Views 模块创建一个博客页面,这个页面呈现了所以 node 类型为 blog 的 node。当一个访问者访问一片博客文章,我希望 breadcrumb 显示的是: 首页 > Deep Thoughts 来取代 Drupal 系统默认的 breadcrumb: 首页。那么 breadcrumb 的第一个链接文字应该是“Deep Thoughts”而与之相应的链接是 Drupal 路径“blog”(这个页面假设是由 Views 模块生成的所有博客文章)。
如果同时使用 Token 模块,Custom Breadcrumbs 模块就会变得异常灵活:breadcrumbs 变成了动态。于是我可以创建这样的 breadcrumbs: 首页 > Deep Thoughts > [Month of Blog Post] [Year of Blog Post] 。其中 “Deeo Thoughts”链接到博客页面,而 [Month of Blog Post] [Year of Blog Post] 结合 View 按月和年显示博客文章(例如 September 2009)。因此这个 如图 2所示进行设置:

其中 blog/[mm]_[yyyy] 是按年和月查看博客文章的 Drupal 路径。所以如果我今天写了一篇文章(September 19, 2009),那么我设置的博客 breadcrumb 就会显示为 首页 > Deep Thoughts > September 2009 而它的 Drupal 路径为 blog/09_2009,这个页面由 Views 生成并列出2009年9月的所有博客文章。
注意:Custom Breadcrumbs 模块实际上不会检查其中每个链接是否真正存在,所以您一定要检查链接是否正确以免出现 404 错误(页面无法找到)。
在 Drupal 6 的核心模块中不包含 WYSIWYG (所见即所得)的文本编辑器,这样就给文本编辑工作带来了诸多不便。但是不是用担心,Drupal 的第三方模块提供了多个解决方案,其中也包括 FCKeditor 模块。顾名思义,FCKeditor 模块集成了 FCKeditor 文本编辑器。FCKeditor 是一个免费开源项目,加上强大的文本编辑功能、跨平台和高扩展性,所以一直受到开发者的青睐和追捧。现在 FCKeditor 已经改名为 CKeditor,写作本文时发布的最新版本为 3.0,但是最新版本的 FCKeditor 模块暂时只能支持到 2.6.4.1 版本,所以本文还是称其为 FCKeditor。虽然 FCKeditor 功能强大,但是作为代价 FCKeditor 终端用户打开相关网页加载编辑器时也学要花费相对多的时间来加载图片和 javascript 文件,如果需要简单的文本编辑功能,选择其他轻量级的WYSIWYG 编辑器也是不错的选择。
进入 Home › Administer › User management 设置 fckeditor module 用户权限,本例中设置了注册用户 (authenticated user)具有使用 fckeditor 模块的权限。

进入 Home › Administer › Site configuration › FCKeditor settings ,点击 edit 进入设置页面。

在基础设置中选择可以使用的用户角色,在本例中选择注册用户。

第一次设置,这里可以略过。这里可以设置简单的正则代码来控制 FCKeditor 编辑器的显示页面。mypetal.com 网站只需要 FCKeditor 编辑器显示在 node 编辑页面(如:node/1/edit),所以做了如下设置。

选择 FCKeditor 的皮肤,可以选择 sliver 和 office2003 这两个皮肤都蛮漂亮的,但是如果使用势必要下载额外的图片,自己权衡利弊吧。Toolbar 可以设置工具栏中的功能,有 FCKeditor 自带的两种和 Drupal 准备的三种。依不同角色需要不同功能而定。

最后准好了这一切,不要忘了更新缓存,快点享受 FCKeditor 的强大功能吧:)
FCKeditor 应用及扩展说明: http://docs.fckeditor.net
FCKeditor 模块进阶设置
在 Drupal 的核心模块中,已经包含了统计模块 —— Statistics,这个模块开启后可以满足基本的页面流量统计需求。但是如果需要进一步的数据了解浏览网站的用户行为,Statistics 模块就有点爱莫能助了,这时我们可以选择 Drupal 的第三方模块 —— Google Analytics。 Google Analytics 模块为我们提供了一个很好的解决方案,因为它集成了 Google 的免费服务 —— Google Analytics,只要安装此模块,我们就可以立即使用 Google Analytics 强大而便利的功能:不但可以获得页面流量的统计信息、设定活动目标计算用户转换率,甚至对网站的特定用户群的访问行为进行跟踪和分析,最后轻松一点生成报表。
点击这里登录 Google Analytics,如果没有 Google 帐号点击这里注册。进入 Google Analytics 后,添加目标网站的信息(见图1),填写网站信息(见图2)提交确认。


添加好网站帐号后就可以在后台首页看到如图3的内容,点击进入。

在图4所在位置找到 Google Analytics account number,这个编号将要在记录到drupal中,从而 Google Analytics 模块会依次自动生产并添加 javascript 统计代码到每个页面。现在图4右下角所示应该是个橘红色惊叹符号图标,因为在设置 Drupal 的 Google Analytics 模块之前,页面还没被加入统计跟踪。

进入 Home › Administer › Site configuration 填写上面在图4位置所示的对应Google Analytics account number 然后点击保存并刷新js缓存。过一会刷新图4所在页面,图4右下角所示图标就会变为绿色勾形图标。
提高 Drupal 性能和扩展性有很多方法。下面的表中选取了部分常用的性能和扩展性有关的模块,进行比较。
| 模块 (按下载量排序) |
发布版本 | 缓存类型 | 获得性能* | 匿名用户 / 注册用户** | 共享主机 / VPS / 独立主机 / 多台服务器*** | 更新状态 | 说明文档 |
|---|---|---|---|---|---|---|---|
| 1. System | 包含在核心模块 | 数据库 | 中等 | 大部分匿名用户和全部注册用户 | 全部 | Yes | 用户手册 |
| 2. Javascript Aggregator | 5.x, 6.x | 文件 | 中等 | 全部 | 全部 | Yes | ? |
| 3. Boost | 5.x, 6.x | 对匿名用户直接调用文件缓存(使用.htaccess来避开php和db) | 非常高 | 匿名用户 | 全部 | 6.x yes 5.x no |
用户手册 |
| 4. Cache Router | 5.x-beta, 6.x-rc, 7.x-beta | 数据库、文件、PHP opcode和内存 | 根据设置从中等到非常高 | 根据设置 | 全部,根据设置 | Yes | 模块下载页面 |
| 5. CacheExclude | 5.x, 6.x | 数据库 | 中等 | 匿名用户 | 全部 | Yes | ? |
| 6. CSS Gzip | 6.x | 文件 | 中等 | 全部 | 全部 | Yes | ? |
| 7. Memcache API and Integration | 5.x, 6.x | 内存 | 高 | 大部分匿名用户 | VPS、独立主机或多台服务器 | Yes | 模块下载页面 |
| 8. Block Cache | 5.x-dev | 数据库 | 中等 | 全部 | 全部 | Yes | ? |
| 9. Block Cache Alter | 6.x | 数据库 | 中等 | 全部 | 全部 | Yes | ? |
| 10. Term Lower Name | 6.x | 数据库 | 中等 | 全部 | 全部 | 更新较少 | ? |
| 11. Path Cache | 6.x | 根据设置 | 中等 | 全部 | 全部 | 更新较少 | README.txt |
| 12. Advanced Cache | 5.x, 6.x-dev | 数据库 | 中等 | 大部分注册用户 | 全部 | Yes | 模块下载页面 |
| 13. Authcache | 6.x-rc | 数据库、文件、PHP opcode和内存 | 根据设置从中等到非常高 | 全部匿名用户,大多数注册用户 | 全部,更加设置 | Yes | 模块下载页面 |
| 14. Previous/Next API | 6.x-dev | 数据库 | 中等 | 全部 | 全部 | 较少更新 | 模块下载页面, 文章 |
| 15. fastpath_fscache | 4.7.x-dev, 5.x-rc, 6.x-dev | 对匿名用户调用文件缓存(避开db) | High | 匿名用户 | 全部 | Yes | Drupal的讨论 |
| 16. Varnish | 6.x-dev, 7.x-dev | Reverse proxy(虚拟内存) | 非常高 | 全部注册用户,大部分匿名用户 | VPS、独立主机或多台服务器 | 测试阶段 | Varnish和Project Mercury的讨论 |
| 模块 (按下载量排序) |
发布版本 | 缓存类型 | 获得性能* | 匿名用户 / 注册用户** | 共享主机 / VPS / 独立主机 / 多台服务器*** | 更新状态 | 说明文档 |
List of requirements of each package: memory, etc... Degree of difficulty Maturity DoD
生产静态 HTML 文件 - 仅对匿名用户有效:
缓存技术:
数据库缓存:Drupal 的核心模块
GMap 和 Location 无疑是最佳组合。虽然也有其他模块可选来保存地点信息,但是 Location 模块是一个非常直截了当方法(straightforward option),而且还可以很好的和 GMap 模块整合在一起。
打开 Administer › User Management › Permissions 页面,为用户角色设置用户权限。
本文假设您已经全新安装了一个Drupal 6 系统,并使用默认 Garland 主题。我们强烈推荐您在没有完全设置好相关模块前不用使用自定义主题,因为某些第三方主题或自定义主题可能没有添加相应的 javascript 导致和 GMap 模块不兼容。
打开 Administer › Site configuration › GMap 页面,填写 Google Maps API Key (点击这里获取 API Key)。
打开页面 Administer › Site configuration › Location › Geocoding options (开启您希望您网站需要用到(cover with)的国家)。而通过图中圈出的 Configure parameters 链接打开的页面中 Google Map API Key 会自动从上面的 GMap 处获得。

设置用户地址:打开 Administer › User Management › User Settings 页面开启您希望用户填写的地址字段。这部分选项一定要正确设置,否则如果 country 字段被强制为默认或这某个字段被禁用了,那么进行地理位置编码时(geocoding)(获取经度和纬度)时就会引发问题(issue)。

在节点中添加地点:打开 Administer › Content Management › Content Types 页面,选择您需要输入地点信息的内容类型,然后进入开启地址字段。这部分选项一定要正确设置,否则如果 country 字段被强制为默认或这某个字段被禁用了,那么进行地理位置编码时(geocoding)(获取经度和纬度)时就会引发问题(issue)。现在只用选择相应的内容类型,用户就可以输入一个地址或者经纬度座标。

用户或者节点的地点显示效果如下:

打开 Administer › Site configuration › GMap 页面,填写 Google Maps API Key (点击这里获取 API Key)和它关于地图的相关选项。
打开 Administer › Site configuration › GMap Location 页面,来设置节点地图和用户地图。这些页面各自都需要设置一个“宏”来显示所有节点的地图和所有用户的地图。 您可以使用默认宏,当然也可以打开导航菜单上的 Build a GMap macro(Drupal 路径 map/macro) 来创建一个新宏。宏的格式如下: [gmap zoom=3 |center=37.3002752813443,-82.08984375 |width=100% |height=300px |control=Small |type=Physical]

打开 Administer › Site configuration › Location 页面,勾选 Use a Google Map to set latitude and longitude(使用 Google Map 设置经度纬度) 选项,这样用户可以在 Google Map 中设置标记,这样来替代地址输入。

现在您的网站中已经有了两张默认的地图:一张是所有节点的地图,而另一张是所有用户的地图。这些地图上的标记(pin)可以基于用户的角色、内容类型(content type)或是分类术语(taxonomy term)设置成不同的颜色。在 Administer › Site building › Blocks 页面开启 “Location map” 区块,可以把它显示到侧栏(sidebar)或是内容页脚处(content footer)。Voila(快看),包含地点(location)信息的节点的内容旁边是不是显示出了一张小地图:)
新建一个视图(View),视图类型(View type)为 node,样式(Style)为 gmap。

现在您已经可以使用 Views 和 CCK 的全部功能来选择哪些字段显示在地图是信息窗口(info window),可以结合 imagecache 模块控制图片字段的大小,为这个视图制定主题等等。您可以通过试图为特定的内容类型创建地图,或者只显示某一特定地点附近的所有节点。 您可以让用户对数据进行筛选(查看 great brewers 网站地图示例,需注册)。
包含不同术语的内容可以设置成不同样式的标记(markers)(查看 Toilet Radar 网站示例)。 新建一个词库,设置为 single select(单选)、required(必填),然后开启 gmap markers。
如果您安装了 Advanced Help 模块,就可以阅读 GMap 模块的扩展说明文档,然后打开 help/gmap/extending 页面。下面这段代码从那个页面复制过来。您可以把自定义的标记图标放在 Drupal 路径 sites/all/modules/gmap/markers 的文件夹下,然后创建一个 ini 文件。如果想把自定义的图标和内建的图标分开放置,您也可以新建一个文件夹。下面的代码是一个 ini 文件示例:
; Defaults
[defaults] ; The defaults section holds the settings that will be used if they are not specified on the marker. ;
shadow = "" ; The filename of the image to use for the "shadow" of the marker.
anchorX = 10 ; anchorX and anchorY are the pixel coordinates relative to the top left corner of the image
anchorY = 29 ; to define where the "pushpin" of the marker is.
infoX = 17 ; infoX and infoY are the pixel coordinates relative to the top left corner of the image
infoY = 6 ; to define where the "tail" of a popped-up info window points to.
; Marker sets
[mycustom] ; This is the "internal" name of the new marker type. It's used
; in macros and when placing markers using PHP code.
name = "My custom" ; This is the name that appears in the marker chooser dropdown.
sequence = "my1.png,my2.png" ; The list of image files to use. Specifying multiple filenames
; will let you have changing images when placing a series
; of markers. The "Numbers" marker is a good example.
; Files
在建立好您的 ini 文件后,还需要到 GMap 设置页面并点击 Regenerate (重建)按钮.
如果您安装了 Advanced Help 模块,就可以阅读 GMap 文档的其他一些功能。 您可以在 node.tpl.php 等模板内添加许多自定义的地图。里面包括如何为您的地图建立钥匙,如何在 javascript 中访问 map 对象等一系列文章。GMap module 模块中的 README.txt 和 THEMING.txt 同样也是很多好的说明文档。