Drupal的核心模块指的是Drupal下载安装后自带的模块,有些核心模块也并非必须,管理员可以根据需要开启或关闭。
下面的页面都是关于如何管理核心模块的介绍。这里假设你已经安装并在管理>>模块里开启了这些模块,并且假设你已经在管理>>访问控制里设置了相应的权限。
Drupal还有很多用户开发的扩展模块,在手册的扩展模块介绍部分有相应介绍。
聚合器模块(aggregator)可以为你的站点提供强大的新闻聚合与阅读功能,它能够自动从你指定的任意新闻或其它网站收集相关内容,并聚合显示到你的站点。
用户既可以按时间先后顺序察看聚合内容,也可以按内容来源分类察看。管理员可以添加、编辑种子(feed)来源,并针对不同种子选择更新的时间间隔。管理员还可以对种子添加标签分类,这样可以把不同类别的聚合内容分别显示。管理员还可以使用区块在站点边栏显示最新聚合内容,既可以显示某一种子的最新内容,也可以按类别显示多个种子来源的内容。新闻聚合器需要通过cron来自动收集你所订阅的站点内容。Drupal还提供你所有订阅种子的OPML文件,方便你导出到其它软件或新闻阅读器。
你可以:
很多站长希望用户在点击聚合内容的链接时,不要在当前窗口跳转到别的新闻站点,而是打开一个新的窗口,这样使得用户不会离开你的站点。最好的办法是通过修改theme模版来实现,或者也可以修改theme函数:aggregator_page_item和aggregator_block_item
另外一个办法就需要修改模块本身的输出部分,但是这样在以后升级起来会比较麻烦。一般来说你需要把输出修改成:
$output .= "link\" target=\"_blank\">$feed->link\n";
(译注:原文比较模糊,drupal总站有一些评论可能会有些帮助。如果哪位能花点时间提供一个具体的theme解决方案,再加到这里)
用户新闻聚合器模块(user aggregator),是一个drupal用户自己开发的扩展模块,可以允许一般用户在自己的个人资料栏添加一个自己感兴趣的聚合种子。
主要功能包括:
内容聚合有一套通用标准,采用的是基于XML的RSS(简单新闻聚合)格式。要聚合某站点的内容,只要知道它的RSS页面地址就行了,一般这些页面都以.rss .xml .rdf 都后缀结尾。比如slashdot的聚合页面就是 http://slashdot.org/slashdot.rdf
绝大多数提供内容聚合的站点都会在其首页放置一个明显的链接,一般来说是类似于这样的一个XML图标![]()
也有些站点的RSS地址不太容易一下找到,或者你可能希望针对某个主题搜索多个RSS种子,一个方便的办法就是使用一些流行的RSS种子目录,例如 Syndic8
网上有很多关于RSS的介绍,大家可以自己搜索来看一下。(注:有什么比较好的中文资料?可以把链接加到这里)
在管理>>区块下面开启聚合器区块,会自动为你的站点加上内容聚合图标。
点击管理>>聚合器可以加入其它站点的种子。
进入聚合器管理页面后,选择上方的“添加feed",这时drupal将提示你输入如下信息:
提交之后,检查一下是否都工作正常。可以到管理>>聚合器页面下手动进行更新,如果没有读入任何内容,那多半是RSS地址有问题。
添加了分类后,以后每次添加新的种子时,都可以选择加入到哪个分类。你也可以手动对每一个单独的聚合内容进行分类,下一节将对此进行介绍。
上一节是把来自同一种子的所有内容都分入一类,你也可以手动对每一个单独的聚合内容进行分类:
新闻聚合器可以按多种方式来展示你所订阅的内容:

在自动聚合内容之外,Drupal还自动为每个feed 以及每个聚合内容分类提供相应的区块,用于显示相关的聚合内容列表。在管理>>区块下面可以看到并开启这些区块。
在存档(archive)页面可以查看指定日期发布的内容。同时它也提供了一个按月显示的日历视图,方便用户浏览不同时间的内容。
要查看某一天的内容,只需选择想要查看的日期就行了。管理员可以选择开启archive模块自带的日历(calendar)区块,用户就可以在边栏的日历上方便地浏览特定日期的内容。日历是按月显示的,用户可以点月份旁边的箭头浏览其它月份的内容。日历上的当前日期是用黑体或高亮标出的。
你可以:
1. 按内容类型或按分类查看
这一部分与archive模块无关,只是提示你如何方便地查看过往内容。每一个节点类型基本都有专门的页面来显示所有该节点类型的文章,比如可以到blog下查看所有blog文章。如果你对内容进行了分类(taxonomy)或加注了标签(tag),那么点选该分类或标签就可以查看所有属于此分类或标签的文章。
区块可以把相关的或同类的内容放在一起,显示在你站点的左侧或右侧边栏,在4.7里,如果使用“区域” (region),区块也能放到你站点的任意位置。一般来说,区块都是由模块自动生成的(例如:最近的论坛主题),但管理员也能自定义区块。
要显示边栏的区块,前提是你的主题使用了边栏(有的只使用左边,有的使用右边,有的都使用),并且要在区块管理中去设定。
在区块管理界面中,你可以通过分配权重值,来指定边栏里的各区块的排列顺序。权重值较低的区块将靠近边栏的顶端,权重值较高的区块将靠近边栏的底端。
区块管理界面也提供了选择框和配置链接,对每个区块都自定义是否显示。区块的显示由这些来控制:
模版区块
当模版被启用时,可以使用模版区块。在区块管理中能管理这类区块。
管理员定义的区块
这类区块由管理员来自定义内容,包括区块描述、区块标题、要填写的区块正文,drupal会显示出这些区块。
注意:
每个主题都要配置区块,所以如果你的站点有多个主题,你在每个主题中都要启用和配置区块。
你可以:
通过管理 >> 区块 启用低负荷区块和配置区块,
通过管理 >> 区块 >> 添加区块 增加区块。
blog 模块允许注册用户维护一个在线网络日记 (如我们熟知的 blog、博客、部落格等),经常作为一个在线记事或者日记。 Blog 由独立的文章组成,这些文章有时间印戳因此可以按日期来排列显示, Blog 还经常包含到已经阅读并且/或发表了相同/不同看法的网页用户的连接。
blog 模块会在主导航菜单中添加一个 用户 blog 导航 (但这个链接必须手工启用),通过这个链接可以看到站点上所有用户的最新 blog 文章。 导航菜单有一个 建立内容 链接 (会引导你发表各类文章) 以及一个 我的 blog 链接 (只显示你自己的 blog 文章)。 blog 模块还提供了 最新 blog 文章 区块,你可以选择启用它。
你可以
要在你的 Drupal 站点实现用户 blog,必须开启 blog 模块并设置恰当的权限:
以后,每个有权限的用户登陆后,就可以通过 建立内容 >> blog 文章 发表 blog 文章并且在用户导航区块将看见 我的 blog (只显示自己的 blog 文章)。 在每个独立的 blog 文章上方,blog 文章的作者将发现一个编辑 标签。
为了给用户建立自己的 blog 时以提示,以及设置诸如 发布、 提升到首页 之类的工作流选项:
注意显示 "最新 blog 文章" 的区块不能很容易地进行定制,如显示少于 10 个项目,你必须修改源代码,该数字是一个定数。
待加入连接:如何书写自己的 "最新blog文章" 区块
注:4.7的views模块可以方便的提供类似功能的定制
了解如何让常规的分类系统适应一个多 blog 站点的需求是很有用处的。 如果在我们的站点有众多独立的 blog,但共享相同的词汇(vocabulary),使用文章内的分类链接进行导航可能会遇到一定的困难。
有一个有益的文章,名为 "Blogs categories",非常有用: http://drupal.org/node/20260 。
将来会使用新的术语(term)链接代码,使用两个参数 (用户 id 和术语 id)。
Drupal 的 blog 模块允许所有注册用户维护站点上的一个个人网络日记(weblog)。 Blog 是非常容易且经常更新的网站,通常以非正式和口语化的风格来进行写作。 他们通常按年代的反序进行排序 (这意味着最新的文章在最顶部) 并且对过往文章进行归档,每个独立的文章有一个永久的,也就是说,稳定的 URL 直接链接到该项目。 Blog 通常有评论,这样每个读者都可以参与讨论,而且他们通常也有 RSS feed 提供同步功能,以便各地的人可以通过一个聚合器就可以阅读。 每个文章通常含有一个想法、观点或其他什么并且有链接指向最开始讨论这个项目的地方。 Blog 可以是任何主题的,从每日生活琐事到技术到政治到编织到体育到公司产品……
从一个更实际的角度看,blog 可以看作是 个人知识展示、 一个研究者或爱好者建立和共享自己感兴趣领域的知识的地方,又或者在一个项目导向的站点,blog 可以作为项目成员的工作区,用于发布他们各自的想法,让其他的成员参与讨论。
如果你还希望有更完整的关于 blog 的定义,请参考 George Siemens 的 The Art of Blogging - Part 1 和 The Art of Blogging - Part 2
Drupal 提供了多种方式让用户 blog 文章可被访问到,你可能需要决定哪种方式最适合你,这取决于你的 Drupal 站点是如何配置的:
blog API 模块允许用户通过外部 GUI 应用程序发表 blog 文章。 许多用户更愿意使用外部工具来增强定制阅读和发表的能力, blog api 让用户可以自由使用 blog 工具,并且让他们有选择 blog 服务器的的自由。
当这个模块启用并配置好以后,你就可以使用象 Ecto 这样的工具从你的桌面建立和发表文章。 Blog API 模块支持好几个基于 XML-RPC 的 blogging API,例如 Blogger API、 MetaWeblog API 以及大多数的 Movable Type API。 任何支持这些 API 的桌面 blog 工具或者其他服务 (如 Flickr 的 "发表到 blog") 都可以正常工作。
这个模块同时还允许站点管理员配置何种内容类型可以通过外部应用程序发表文章,因此,用户除了发表 blog 文章外也可以发表论坛帖子。 在启用支持后,外部应用程序将每个内容类型显示为独立的 "blog"。
你可以
如果 BlogAPI 还不能满足你的需求,你或者应该考虑 mailhandler 模块 来提交内容。
book 内容类型适合建立结构化的、多页面的超文本,例如站点资源指南、手册、常见问题 (FAQ) 等, 它允许文档有章、节、小节等。book 可以协作完成,当然不是必须的。 有相应权限的作者可以添加或者编辑一个 book 的页面,也可以排列或者重新排序存在的文档。
Book 在每个页面的底部拥有额外的导航元素,可以通过文本、前一页、 向上 和 下一页 链接进行移动。 前一页 和 下一页 链接显示的是 book 中前后节点的标题。 另外一个导航方式是启用 手册导航 区块。
用户还可以选择 book 页面底部的 打印版本 链接来生成一个包含当前页面及其下属所有页面的对打印机友好的显示。
管理员可以查看 book 的轮廓,在那里它还可以改变节的标题及其 权重 (用于对节重新排序)。 在这个轮廓中,同时还允许编辑和/或删除 book 页面。 包括页面(page)在内的许多内容类型 (如 blog 文章、新闻、投票等) 都可以通过查看该文章时选择 轮廓 标签加入到一个 book 当中。
你可以:
协作手册让你在站点轻易地组织一个常见问题 (FAQ)。最主要的益处是你不需要自己撰写所有的问题/答案 - 让社区帮你完成!
为了设置一个 FAQ,你必须建立一个新的手册,用以组织所有的相关内容,步骤如下:
在你提交这个手册页面后,你已经准备好添加常见问题了。
为你的 FAQ 建立新的页面。 在你的 FAQ 建立新的页面的过程类似上面的步骤,不过在 上层 选项中,要选择刚才建立好的 FAQ 手册页面。
将存在的非手册页面加入 FAQ。 你随时都可以将一个文章加入到你的 FAQ:
注意:
默认情况下,手册的导航菜单区块只出现在手册相关的页面-换句话说是在手册顶层页面 (www.example.com/books/book-name) 及其子页面 (www.example.com/books/book-name/child-page)。 这是因为该区块中的代码不是一个实际的菜单- 它只是模拟一个菜单,因此它绝不会出现在 ..admin/menu 页面。
这意味着你不能让手册导航区块永久出现在首页 (假如你使用 book 模块建立一个静态的层次结构的话) 或者其他任何非手册页面。
这看起来是一个不小的局限,不过幸运的是我们可以使用 代码片断 来建立手册导航菜单,这样就可以让它出现在任何需要的地方,而不仅仅是手册页面。
comment 模块为每个节点建立一个讨论的领空, 用户可以发表评论对论坛话题、blog 文章、新闻、手册页面等进行讨论。评论的能力是社区成员交互参与的重要组成部分。
管理员可以给某个用户组提供评论权限,而且用户可以 (可选) 编辑他们最后的评论(假如这之前没有其他新的评论的话)。
附加到每个评论领空的是一个控制面板,用于定制评论的显示方式。用户可以控制评论的时间次序 (最新的在前或者最旧的在前) 以及每页显示的评论数。
评论行为就象其他的用户发表行为一样,作用于节点的过滤器、表情和 HTML 同样也作用于评论上。当有新的评论时 comment 模块提供特别的特性来提示站点成员。 当用户发表了新的评论时,管理员可以监管这些评论。
你可以
在启用后,Drupal 的评论模块为每个 Drupal 节点建立一个讨论领空,用户可以发表评论对论坛话题、blog 文章、新闻、手册页面等进行讨论。管理员可以给某个用户组提供评论权限,而且用户可以 (可选) 编辑他们最后的评论(假如这之前没有其他新的评论的话)。
评论显示的用户控制
附加到每个评论领空的是一个控制面板,用于定制评论的显示方式。用户可以控制评论的时间次序 (最新的在前或者最旧的在前) 以及每页显示的评论数。 附加的设置包括:
当一个用户选择 保存设置 后,评论将按用户的设置进行显示。 管理员可以通过 管理 >> 评论 >> 配置 设置默认的评论显示方式。 注意: 当评论监管被启用后,用户将拥有另外的控制选项 (见后文)。
附加评论配置
评论行为就象其他的用户发表行为一样,作用于节点的过滤器、表情和 HTML 同样也作用于评论上。管理员可以通过访问权限 管理 >> 访问控制 来控制访问 comment 模块提供的各种功能。 注意在一个全新安装的 Drupal 站点中,所有的评论权限默认是被禁止的,哪个角色 (用户组) 哪种评论权限的选择权留给了管理员。 有下面的权限:
新评论通知
Drupal 提供了特殊的特性来提示站点成员有新评论发表。
Drupal 显示附加到每个节点的评论数,并跟踪每个站点成员对评论的阅读情况。 登陆成员会看见一个通知提示有未阅读的评论,有些管理员可能希望 下载、安装和配置 notify 模块,然后用户可以请求 Drupal 在有新评论时给他们发 e-mail 通知 (notify 模块需要正确配置 cron.php)。
默认禁用的 tracker 模块显示了站点所有的最新文章,导航区块有一个链接指向 最新文章 页面,这个页面对于浏览最新发表或者最近更新的节点和评论是非常有用的,用户尚未阅读的内容会用一个红色的星型符号标识 (这个图形取决于所使用的主题)。 访问任何节点的评论领空,会发现 Drupal 在每个尚未阅读的评论旁边显示一个红色的 "新" 标注。
评论监管
在那些有着活跃用户评论的站点上,管理员可以管理社区的评论监管。
在评论监管下,每个评论被自动指定一个初始评分。 当用户阅读评论时,他们可以投上一票来影响该评论的得分,同时用户在控制面板上还有额外的选项来控制评论显示的阀值,得分低于该阀值的评论不显示。 要启用监管,管理员必须给用户授予 监管评论 权限,然后还必须配置 管理 >> 评论 >> 配置 。
监管投票
第一步是建立监管标注以允许用户为一个评论评分。 转到 管理 >> 评论 >> 配置 >> 监管投票,在 vote 字段,输入文本标注便于用户投票,一些示范:
这样用户就了解他们的评分是如何影响评论的,这些示范的标注包括了每个投票选项对应的分值(虽然这是可选项)。 使用权重选项,你还可以控制评分选项的次序,更重的权(正数) 使得投票标注向底部靠拢,更轻的权 (负数) 使得投票标注向顶部靠拢。 为了鼓励正面的投票,一个有用的次序是将正的投票设置一个负的权重值。
监管投票/分值矩阵
接着转到 管理 >> 评论 >> 评论 >> 监管矩阵。 为投票矩阵内的每个角色的投票标注输入分值,这里输入的分值将用于为每个评论评分。 注意: 评论得分通过对所有用户投票得到的分值取平均获得。
建立评论阀值
在 管理 >> 评论 >> 配置 >> 监管阀值 中,你必须建立一些评论阀值才能让评论投票系统变得有用。 当评论监管被启用并且阀值建立后,用户会发现另外一个评论控制面板选项来选择他们自己的阀值。 他们将使用你输入的阀值来过滤得分低于阀值的评论,因此你可能希望建立若干的阀值来让用户更有弹性的过滤评论。
当建立阀值后,注意问你的 最小得分 是评论要显示出来必须具备的最小投票得分。 要了解一个阀值如何工作的通用示范,你可以访问 Slashdot 然后查看他们的评论榜上的评论控制面板。
初始评论得分
最后,你可能希望输入一些 初始评论得分。 在 管理 >> 评论 >> 配置 >> 监管角色 中你可以按特定权限角色指定所有评论的初始得分,如果你没有指定初始得分, Drupal 以 0 为默认值。
聚合评论
评论的聚合功能已加入到 aggregator2 模块。
contact 模块允许其他用户通过你的个人信息联系表格发 E_Mail 联系你。 在联系表格中,用户可以发送主题和信息, contact 模块对于帮助社区成员之间的联系时相当重要的。
用户可以在他们的账户设置中管理联系设置,注意用户的 e-mail 地址是不公开的,不过象站点管理员这样权限的用户还是可以联系你,即使你没有启用这个特性。 如果用户激活个人联系表格,则他们的用户个人信息中将出现联系标签。
你可以
Drupal模块使你的站点可以通过XML-PRC网络通信协议连接指定的目录服务器。
开启Drupal模块将可以:
(example.com是你的站点地址)
Drupal模块管理页面允许你设置一个你想要连接的XML-RPC目录服务器页面。那么在下一次cron运行后,你的站点就会自动登记并显示在该服务器的目录页面。
你可以:
过滤器(Filter)模块允许管理员设置站点的文本输入格式。例如,管理员也许需要对用户的评论文本进行过滤,去掉其中可能存在的恶意HTML代码;管理员也许还希望直接输入的URL地址自动转换为链接格式。这些都可以通过设置相应的输入过滤器来实现。
用户在发布或编辑内容时,可以在允许的输入格式中进行选择使用哪一种。管理员可以设置哪些输入格式可以被用户使用,同时制定缺省的输入格式。管理员还可以创建新的输入格式。每一种输入格式都可以单独设置,是用一个或多个相应的过滤器。
你可以:
使用forum(论坛)模块可以创建围绕特定主题的讨论话题,其形式类似于常见的BBS讨论版如phpBB等。论坛功能非常有用,因为它允许社区成员讨论感兴趣的话题,并且所有的讨论都将存档供以后查询。
论坛(forums)的组织是通过容器(containters)来实现的。每个容器(也可以叫做版块)下面包含多个子论坛(或版面),而每个子论坛下则是相关按话题排列的讨论内容。容器与论坛都可以再放到其它的容器或论坛下面。精心安排容器与论坛结构将可以帮助用户更容易地找到感兴趣的内容。管理员可以把讨论贴从一个论坛移动到另一个论坛,并选择是否在原论坛留下备份。论坛的讨论贴都有自己的URL路径。
使用论坛模块需要先开启Taxonomy(分类)与Comments(评论)模块。
你可以:
Drupal的论坛就像drupal本身一样,可以根据使用者的需要开启不同的模块,功能可以得到不断的扩展。你可以完全控制需要实现什么样的功能。
用户可以在论坛下发贴,论坛本身又可以是上一层论坛的子论坛,或者放在不同的容器(版块)下,从而形成多层结构。
容器,顾名思义,用于包容题材相近的多个论坛。容器本身并不是一个论坛或版面,用户不能在容器上发布内容,而只能在容器下包含的论坛里发布。
Help(帮助)模块用于显示上下文相关的帮助信息。用户可以通过点击帮助模块提供的连接,更块地熟悉相关的模块功能。
模块直接可以通过这个help模块来互相交换帮助信息。所有的在线用户帮助信息都通过这一模块展示。下面是一些帮助信息的例子:
管理>>帮助页面下的帮助文本通常也就是手册中相应模块的说明,当然手册中会包括更多更详细的内容。
你不能对help模块进行任何设置管理操作。
legacy 模块在从一个旧的安装升级时提供对旧版 URL 的处理,它能自动重定向旧版的页面链接,从而预防了 页面未找到 错误。
legacy 模块处理旧版遗留风格的分类页面、分类 feed 和 blog feed 路径,它也处理从 Drupal 4.1 升级时的 URL 问题,它会重新将旧版风格的 URL 改为新版风格的 URL (简洁 URL)。
一些映射示范:
Legacy 模块没有配置选项,而且对于新安装的 Drupal 站点,根本无须启用。
locale 模块允许你用自己的语言来表现你的 Drupal 站点,而不是默认的英语, 你可以用它来建立一个多语言的站点或者替换 内建 的文本达到定制站点的目的。当 locale 模块遇到需要显示的文本时,会尝试将它翻译为当前选定的语言,如果没有可用的翻译,这个字符串会被记录下来,然后你就可以轻易地检索尚未翻译的字串了。
locale 模块提供两种不同的翻译方式。 第一种集成到了 web 界面中,通过这个界面你可以搜索尚未翻译的字串,然后自行翻译。 当然更简易并且节省时间的方法是通过导入翻译好的语言文件,这些语言文件一般是 GNU gettext Portable Object files (简单说是 .po 文件)。在翻译页面有许多翻译好的语言文件可供下载使用。
如果一个翻译好的语言文件不能适应你的需求,.po 还可以通过特殊的编辑工具方便地再次修改。locale 模块的导入特性允许你从这些文件将字串导入到站点数据库中,而输出功能则允许你通过生成 Portable Object file 的方式与他人分享你的翻译。
你可以
通过 Drupal 界面翻译文本可以说是相当乏味的,这不能说是因为 Drupal,而是每次字符串更新都要重新载入页面。 更好的翻译方法是通过 PO 编辑器编辑 PO 文件,然后导入到 Drupal。
关于 Drupal 核心和模块的翻译,有完整的指南,请参考 此处。
要安装一个本地语言,只要启用 locale 模块,然后到 admin/localization 导入从 http://drupal.org/project/Translations 下载的 .po 文件就可以了。 你应该在弹出的菜单中选择了正确的语言了吧?就这么简单!
现在你可以选择是否让用户自己切换语言了,同时你还会发现本地化模块的 "翻译字符串" 标签。
更多信息请参考 本地化或国际化支持。
现在当你浏览页面,那些 Drupal 硬编码的内容将加入到你的语言集数据库中。
当你访问过你希望修改的内容后:
举个简单的例子,你可能希望将 "Search" 按钮改为 "Find",或者你希望评论显示为 "Posted by" 而不是 "Submitted by"。更进一步,你可能希望将 Drupal 描述为 "forums" 的任何东西替换为 "bulletin boards" 这样的描述,你还可能希望将任何地方出现的单词 "forum" 改为自己喜欢的单词。
locale 模块是一个发展的相当好的系统,可以轻松处理这些情形。尽管我们将它描述为一个翻译系统,它一样能够高效地处理你用自己的术语代替 Drupal 默认术语的问题。 你应该首先阅读 如何建立定制语言集来替代 Drupal 术语,在遵循该文指示建立了你自己的定制语言后,本文试图为 Drupal 新手提供更详细的处理步骤。
再重复一次,在处理前,遵循 如何建立定制语言集来替代 Drupal 术语 的第一部分启用 locale 模块,建立一个定制语言并使之成为默认语言。如果你不是站点的第一个用户,还需要到访问控制页面 管理 >> 访问控制 给你所处的角色赋予 "管理本地化" 的权限。
接下来,你会发现直接在 管理 >> 本地化 中逐个搜索字符串没有通过模板文件导入 "已翻译" 字串来的容易。因此,到 翻译模板 页面下载相应版本 Drupal 的翻译,一些第三方的模块会有一些翻译模板在 "po" 目录下。
在下载得到的模板目录中,你会发现许多扩展名为 ".pot" 的文件,"general.pot" 里面的字串被好几个模块重复利用,用一个文本编辑器打开并浏览下,记得前面我们举的简单的例子吗?我们从文件中找到下面形式的字符串:
#: includes/locale.inc:327;346 modules/search.module:142;996 modules/system.module:1198 modules/user.module:1958
msgid "Search"
msgstr ""编辑这个文件就可以指定替代文本,例如:
#: includes/locale.inc:327;346 modules/search.module:142;996 modules/system.module:1198 modules/user.module:1958
msgid "Search"
msgstr "Find"类似的,我们可以改变这个条目:
#: themes/engines/phptemplate/phptemplate.engine:250;273
msgid "Submitted by %a on %b."
msgstr "Posted by %a on %b."注意 "#:" 后面的文本是一些帮助性质的信息,对翻译结果没有任何影响。
此时你可以将编辑过的文件保存到某处 (你可能希望放在你定制的主题的本地副本边上?)。 现在转到 管理->本地化 并选择 "导入",选择你刚才保存的翻译文件,将它导入到你的定制语言中。瞧! Search 框的名字变成 "Find" 了,以及等等。
要进行更广泛的修改,你还可以打开 "forum-module.pot" 文件,将所有 "forum" 单词改为你自己喜欢的,例如:
#: modules/forum.module:51;110;216
msgid "forum topic"
msgstr "bulletin board subject"更多关于使用 local 模块和生成替代文本的帮助和技巧可以参考 翻译人员指南。
满足你的好奇心
如果你阅读一个模块的 PHP 代码,例如 search.module,你会发现:
<?php
$form['basic']['inline']['submit'] = array('#type' => 'submit', '#value' => t('Search'));
?>这里 'Search' 是一个 t-ified 字串,它意味着你可以使用 locale 模块替换为任何字串。
menu 模块允许定制菜单。 出现在区块的菜单有助于为你的站点提供导航,用于导航的主菜单是主导航菜单。
你可以
站点内所有内容都作为 节点(node) 进行存储和处理,因此节点是任何文章,例如 blog 文章、新闻、投票、论坛帖子等。 node 模块管理这些内容类型,这也是 Drupal 比其他内容管理系统强大的地方。
将所有内容作为节点处理,具有高度的弹性,便于建立新的内容类型,它也允许你轻松地对所有内容应用新特性或改变。评论 (comment) 不作为节点处理,但它总是与某个节点相关。
Node 模块特性
你可以
page 模块允许用户建立静态页面-一种基本的内容类型。 页面可以通过 book 模块被收集到手册中。 如果一个页面的信息是静态的,那么用户应该建立一个页面,例如一个 "关于" 页面。
当一个页面被建立后,用户可以设置作者信息、配置发布选项、读者是否可以参与评论等,他还可以选择页面的内容类型 (如 full HTML, filtered HTML, php)。
作为一个管理员,你可以设置页面的默认发布选项 (通过其工作流): 你可以指定一个页面默认是发布、送到监管队列、提升到首页,还是置顶,你还可以设置是否默认启用修订功能。 你可以为不同的用户角色设置相应的权限,使得他们可以查看、建立和编辑页面。
你可以
许多人问,“页面” 节点类型和 “新闻” 节点类型有什么区别?从基本功能的角度来说,他们之间没有不同点。然而,既然 Drupal 将他们作为两种不同的类型进行处理,那么你就可以分别对他们进行不同的主题化,这样页面节点和新闻节点就分别拥有自己的外观了。
这两中节点类型在节点监管任务中也可以区分开来,例如,站点管理员可以设置权限使得一个站点访问者可以建立新闻节点,但要经过站点成员的评审才能决定是否发布,而页面节点则作为站点管理公告。
推荐新用户在他们站点的首页上发表文章。一个没有更新的首页不利于搜索引擎优化。在首页以外的地方(例如二级页面)进行更新是相当无意义的,同样的更新量下,其内容价值将远不如在首页更新。有些人对此不以为然,然而有人会说,一个商业站点会对此非常感兴趣,因此这些站点首页,不可能是一个长期没有更新的页面,新内容在首页上直观显示,用户无需经过华而不实的界面,点击数次,才能看到站点上的新内容。
参考节点主题化和节点监管。
你可以通过使用 node.php?title=text 的 URL 格式来指定页面。
path 模块允许你指定 Drupal URL 的别名。这些别名为站点用户增强了 URL 的可读性并可能帮助互联网搜索引擎更有效地索引你的内容。 每个页面都可以建立多个别名。
一些 URL 别名的示范:
path 模块在所有的节点输入和编辑界面加入额外的输入别名的区域 (当然要求该用户具有相应的权限),它也提供一个查看和编辑所有 URL 别名的界面。
这个模块同时带来了用户批量定义 URL 别名的可能性,这对于希望统一的 URL 别名而不是默认的地址很有用处。 例如,你可能希望在不同的语言中有自己的 URL 表现形式,在 web 服务器上访问 Drupal 源代码需要设置这些类型的别名。
你可以
Drupal 同时带给用户进行批量指定 URL 别名的可能性。 你可能愿意看到 Drupal 使用完全不一样的 URL,或者是将 URL 翻译为访问者的本地语言,不论是哪种情形,这个特性都是相当棒的。 只有可以访问站点源代码的管理员才能设置这种类型的别名,你可以在代码的某处定义一个函数 (甚至在 settings.php),请看下面的示范:
<?php
// 用于 Drupal 4.6.x 的示范
function conf_url_rewrite($path, $mode = 'incoming') {
if ($mode == 'incoming') { // 来自客户端的 URL
return preg_replace('!^display/(\d+)$!', 'node/\1', $path);
}
elseif ($mode == 'outgoing') { // 输出到客户端的 URL
return preg_replace('!^node/(\d+)$!', 'display/\1', $path);
}
}
?><?php
// 适用于 Drupal 4.7.x 以上的示范
function custom_url_rewrite($type, $path, $original) {
// 如果这个路径已经有别名了,跳过它
if ($path != $original) {
return $path;
}
if ($type == 'source') { // 来自客户端的 URL
return preg_replace('!^display/(\d+)$!', 'node/\1', $path);
}
elseif ($type == 'alias') { // 输出到客户端的 URL
return preg_replace('!^node/(\d+)$!', 'display/\1', $path);
}
}
?>这个函数将每个 node/$node_id 类型的 URL 转为 display/$node_id。 你自己定制的 URL 别名将不受影响,因此,如果你有一个 'contact' 页面别名,那么 display/3 别名将不会生效。
利用这个特性,你不仅仅可以用来缩短你的 URL,或者将他们翻译为你自己的语言,你还可以添加全新的次级 URL 到已经存在的模块的 URL 空间,或者将存在的组合到公共的 URL 空间。举个例子,你可以为“新闻”词汇下的页面别名建立一个 news 部分,这样就可以拥有 news/15 和 news/sections/3 这样的 URL 而不是 node/15 和 taxonomy/term/3。 当然要做如此高级的别名,你需要广泛地了解 Drupal 的内部工作机理和正则表达式。
ping 模块有助于将你的站点的改变通知给关注的站点。 它自动发送通知 (称之为 "pings") 到 pingomatic 服务,告诉它你的站点已经改变,而 pingomatic 将轮流 ping 其他服务,例如 weblogs.com、Technorati、blo.gs、BlogRolling、Feedster.com、 Moreover 等等。
ping 模块需要启用 cron 或者类似的时间作业计划。
你可以:
如果你希望通知的站点没有使用 ping-o-matic,你可以使用下面的更新。
来自: http://drupal.org/node/29704
替换 ping.module:ping_ping 为下面的代码。 兼容 drupal 4.6.3
/**
* 执行 hook_ping().
*
* 通知 pingomatic.com, blo.gs, 和 technorati.com 本站已经改变。
*/
function ping_ping($name = '', $url = '') {
$result = xmlrpc('http://rpc.pingomatic.com', 'weblogUpdates.ping', $name, $url);
if ($result === FALSE) {
watchdog('directory ping', t('Failed to notify pingomatic.com (site).'), WATCHDOG_WARNING);
} else {
watchdog("directory ping", t('successfully notified pingomatic.com (site).'), WATCHDOG_NOTICE);
}
unset($result);
$result = xmlrpc('http://rpc.technorati.com/rpc/ping', 'weblogUpdates.ping', $name, $url);
if ($result === FALSE) {
watchdog('directory ping', t('Failed to notify technorati.com (site).'), WATCHDOG_WARNING);
} else {
watchdog("directory ping",t('successfully notified technorati.com (site).'), WATCHDOG_NOTICE);
}
unset($result);
$result = xmlrpc('http://ping.blo.gs', 'weblogUpdates.ping', $name, $url);
if ($result === FALSE) {
watchdog('directory ping', t('Failed to notify blo.gs (site).'), WATCHDOG_WARNING);
} else {
watchdog("directory ping", t('successfully notified blo.gs (site).'), WATCHDOG_NOTICE);
}
unset($result);
}- David Herron - http://7gen.com/
Poll模块可以用来为站长发起一个简单的投票活动。Poll使用多选问卷的形式来表达网民对调查的回应。放置‘民意调查’在网站上是一个很好且直接的了解网民意见的途径。
站长可以发起一次Poll,标题可以就是问题,然后给出答案和“基础”票数。您还可以选择每轮投票开始的时间周期。
在导航菜单中加入Poll项可以让你在页面中看到当前所有的投票情况,投票(如果你还没有投票)或者查看投票结果。
你可以
Profile模块允许你在用户个人信息中自定义字段,例如国籍、真实姓名、年龄等等。这让站点的用户共享更多他们的信息,也能帮助社区型站点根据这些个人信息来组织用户。
下列类型字段能加到用户个人信息中:
profile 模块让你的用户分享他们自己的有关信息。 你设计一些表格让他们自己填写,用户可以在他们自己的 “我的账户” 页面点 编辑 标签来填写信息。 用户填写的每项信息都可以配置为其余用户可见。
你可以在 modules 页面启用 profile 模块 (administer >> site buiding >> modules)。
当你为用户设计了表格 (administer >> user management >> profiles) 后,你就可以定义一些定制的字段 (如芳名、高寿、所居等),有下面的类型可供利用:
只要你喜欢,你可以有许多字段,可以使用任何类型和任意多次。 为了让每个字段排班就列,会用到它的 "weight(权重)"。
每次你添加一个字段,会询问你它的 "category(类别)",这允许你将每个用户的个人信息分割为多个部分。 举个例子来说,你可能希望将用户个人信息分割为两个部分,一个叫 "Community interests" 一个叫 "Professional skills",这样你定义字段时可以将这些字段分别指定给其中一个类别。 Drupal 会分别显示这两个部分--一个叫 "Community interests" 另一个叫 "Professional skills"--每个都包含各自的信息集。
你可以标记一个字段为必须 ("The user must enter a value"),你还可以将某个字段设置为新用户注册时必须填写。
如果 profile 模块和 menu 模块都启用了,那么在 Menus 页面 (administer >> site buiding >> menus) 可以启用 Navigation Menu 的 User list 项。 这样有权限查看用户个人信息的用户就可以方便地链接到用户列表页面了。
该菜单项目默认是禁止的,不过你可以启用 (你还可以重命名 "User list" 为任何你喜欢的名称),你也可以在站点的 primary 和 secondary 链接或其他任何菜单中放一个用户列表链接 (单击 "add menu item" 然后在 "path" 字段中输入 "profile")。
在 permissions(权限) 页面 (administer >> user management >> access control) 你可以决定什么人可以有权查看用户个人信息(user profiles),它的设置在 "user module" 下,无论如何设置,站点管理员总是能够访问用户个人信息的。
Contributed modules 可以配置用户个人信息字段使得他们能发挥更大作用,例如可以帮助一个基于社区的站点通过他们的个人信息字段识别和组织用户。
你可以
请注意用户图片(或虚拟形象)是theme模块的一部分,不在profile模块里。
要生成用户注册表单的自定义字段,按以下步骤:
现在你自定义的新字段将会出现在注册表单上。
CiviCRM模块功能允许你根据你的联系管理需求,去整合并扩展Drupal用户界面,它也提供工具收集并共享社区用户和访问者的联系信息。
你可以:
更多信息可参见:
搜索模块能够通过关键字来搜索内容。要在一个大站点内找到内容,搜索是最实用的方法。搜索很有用,它能通过搜索关键字来查找用户和文章。
搜索引擎通过维护你站点内容的关键词索引来运行。它能把文章和用户建立索引。你可以调整设置去改变索引行为。请注意,搜索模块需要正确设置cron(不知道怎么翻译,感觉像定时器)。请根据索引百分比的情况,设置每次cron运行时索引项目的最大数量。如果你的cron超时或者php内存溢出,请降低该设置值。
要使用搜索模块,数据库用户需要创建临时表的权限。如果你没有这个权限,请向你的系统管理员申请。
你可以:
要在你定制的模块中加入搜索,你的模块必须支持搜索钩子。
在drupal API中查看hook_search:http://drupaldocs.org/api/head/function/hook_search
4.7版本 http://api.drupal.org/api/4.7/function/hook_search)
统计模块记录着站点使用情况的统计资料,它统计了你文章的访问次数和访问来路。统计模块可以用来知道很多有用的信息——用户和用户之间、用户和站点之间的互动信息。
统计模块特性:
配置统计模块:
你可以:
新闻模块用来建立被称为“新闻”的内容类型。新闻就是有着简单形式的文章:他们有标题,摘要与正文。新闻通常被用来发布新文章或用于群体博客。
新闻管理界面允许进行复杂的配置。它可以设定提交表单,工作流,默认显示权限,默认编辑权限,权限设置和附件。
你可以:
拥堵控制(throttle)模块提供了一个可以自动探测访问流量的波动的平衡机制。如果站点有大流量的访问或者被dos攻击,web服务器可能难以承受。这个机制可以自动的停止其他模块的耗费cpu的功能。比如,在主题方面,在站点很忙的时候可以选择禁止图片(减少带宽),或者模块方面,可以选择禁用一下复杂的逻辑处理模块(减少cpu占用)
当有匿名访问的数量超过指定门槛时,拥堵控制就可以自动的启用。当注册用户访问的数量超过指定门槛时,拥堵控制平衡也可以自动的启用。
你可以:
对于资源被限制而且平时也不是很忙的站点来说拥堵控制模块是很有用的。而对于持续高流量的站点确实不怎么有用,这些网站基本上都有解决高流量的基本框架。
拥堵控制模块在有cpu和带宽限制的共享主机下的站点可以很好的工作,特别是对于站点一会只有一小撮访问,一会又突然暴增的情况。当然,只有在启用并正确配置该模块的情况下才有帮助。
跟踪(tracker)模块在网站上允许用户看到最近添加或者更新过的内容,跟踪模块为那些喜欢跟随特定的作者的用户提供给用户级的跟踪。
“最新文章”的链接在导航栏里可以看到,是一个新的和最近更新过的内容按时间反序组成的列表。显示了内容类型、标题、作者名、有多少条评论,以及最后更新的时间。原作者或其他人对文章内容的任何改变,还有添加新评论都属于更新。要使用跟踪模块查看一个用户更新过的内容,只需要在用户描述中点击跟踪标签就可以了。
你不能管理这个模块,没有配置选项。
你可以
如果你只希望跟踪新创建的内容节点,而不是同时也显示那些最近更新过的节点:
在tracker.module中,(或者tracking.module),只要把模块里面有“changed”的代码行修改成“created”就可以了。
另外的一个跟踪模块:tracking (注意是tracking,drupal自带的核心模块叫tracker)
这一模块能够过滤在近期文章列出的节点类型,尤其是在论坛中的最近论坛话题的过滤,(在缺省情况下是靠tracker.module来完成的)
在下面的链接中下载tracking.module
http://www.settingtheworldtorights.com/node/417
在设置页面可以指定何种类型的内容tracking.module可以进行收集,而且还有下面的选择:
上传(upload)模块允许用户上传文件到站点。上传文件到网站的功能对于希望分享工作的社区成员来说来说是很重要的。对于那些希望把上传文件关联到节点或页面的管理员来说也很有用。
有上传权限的用户可以上传附件。你可以在内容类型设置页面中选择上传附件的post类型。针对上传文件的大小,或者图像文件的尺寸可以定制到每个用户角色。注意:在你定制这些设置之前,必须首先给予一个用户角色上传的权限。
你可以:
最大上传的大小由你的php环境决定.标准php缺省值是2M,如果你需要改变它,参看手册中的 如何在php.ini中增加上传大小
用户(user)模块允许用户注册,登录以及退出。用户的信任来自能登录,因为他关联他们用他们的账号创建的内容,并允许对他们的角色设置不同的权限。用户模块支持用户角色,可以设置正确的权限,使得每个角色只能做管理员允许的事情。每个用户可以被指定一个或多个角色。缺省情况一般有两个角色,匿名用户-没有登录,和授权用户-登录并被授权
在他们个人的我的帐户页面中,用户可以使用他们的名称,也能自由调整某些个人配置。
注册用户需要一个本地用户名和口令来得到授权,或者远程的用户名和口令(比如delpiforms id,或者另外的基于drupal的站点的用户名和口令),访问者访问你的站点注册了一个通用ID,被称为session ID,保存在cookie中。基于安全考虑,cookie不包含个人信息,但是可以作为拿到保存在服务器上的信息的钥匙。
你可以:
分布认证
访问新网站时,填写注册表格是个非常繁闷的时刻。在drupalchina.org,如果你已经是drupal的成员,就不需再填写注册信息。这种功能就是分布式认证,也是基于drupal的网站所独一无二的。
当一个新用户在输入栏终输入用户名和密码,即使是用户从来没有在本地注册过,分布式认证也能进行识别。由于drupal知道如何同外部的注册数据库进行通讯。比如,假设一个用户已经用“joe”注册成为了一个“Delphi forums”的成员,drupal在注册和登录界面告诉joe,他可以用他的delphi id在drupalchina.org上注册。Joe认为这很好,用joe@romote.delphiforums.com 和他的口令来登录。Drupal在后台同 remote.delphiforums.com 的服务器通讯(通常使用xml-rpc, http post 或 soap),询问“用户joe的口令是否正确?”。如果 Delphi回答说是,那么我们就为joe创建一个新的帐户,并使他登录。Joe可以用同样的方法登录进入drupalchina.org,他也可以用同样的帐户登录。
Drupal
Drupal是drupal.org所用的软件的名称。世界各地都有drupal的网站,他们中的许多都在共享他们的注册数据库以便于用户可以使用同一个drupal id自由的登录任何drupal网站。
所以,请随意用你在drupalchina.org帐户登录其他的drupal站点。 Drupal id的格式类似于一个email地址:username@server.
示例 :ifly3years@drupal.org 或ifly3years@drupalchina.org
角色(role),是指定一个群组的权限一种方法。允许你对安全,使用和管理进行微调。被指定属于某种角色(或某个群组)的用户被认为拥有这个角色的权限。通常使用的角色包含:匿名用户,授权用户,mederater 和管理员
缺省情况,drupal在安装后,自动定义了两种角色
匿名用户角色一般有最小的权限。授权用户,由于他们花了时间来注册,应该授予更多大权限,比如创建某些内容的能力。如果新用户需要管理权限,或者他们符合某种标准(比如拥有一个公司的email地址),你可以用上面的方法给他们更多的权限。
第一个drupal帐户在安装后被创建,被认为是“根用户”,拥有完全的权限,包括管理、内容创建、编辑、删除。
通过管理员创建角色可以给更多的信任用户可以被赋予某些特权,这必须要在管理界面中手工添加角色。要创建新角色,你必须:
几乎所有的drupal模块可以用对指定角色允许或禁止来控制访问权限,出于安全考虑,站点安装后的匿名和授权用户只被配置了最小化的权限。你必须考虑哪些权限是可以放开的。
到权限管理页面(管理>>访问控制>>权限 列表)中允许或禁止权限,考虑一下下面关于权限的描述
你还可以按术语分类(taxonomy)来对内容进行访问控制,参见分类访问控制模块(Taxonomy Access Control)的介绍:
基于对术语分类的用户角色访问控制
(如果你想对独立的用户进行分类访问控制,请查看tac_lite模块)
当启用一个模块是,就算是他是关掉后又打开的,针对这个模块的权限将被重新指定到所有的用户角色种。出于安全考虑,管理员需要在启用模块时指定权限给角色。
每个drupal用户都有个人资料(profile)和一系列的偏好设定(perference),可以通过点击“我的帐户”来进行编辑。当然,用户必须登录才能看到这个页面。用户可以改变时区、语言、用户名、email地址、口令、主动、签名、主页和分布授权用户名等。修改将立即生效。另外,管理员可以在 管理>>用户 中修改他们描述和偏好。
模块开发者需要提供几个hook来添加自定义的区域来给用户浏览或编辑。在druapl 手册中提供这些hook的说明。比如,可以在/modules/jabber.module中查看jabber_user()函数。
注册用户需要一个本地用户名和口令来得到授权,或者远程的用户名和口令,比如jabber,delphi ,或者是另外的基于drupal的站点的用户名和口令。参看分布式认证得到更多信息。
本地用户名和密码,用md5哈西算法,保存在数据库中。输入的密码也要经过哈西运算,然后跟保存在数据库中的数据进行比较。如果哈西符合,用户名和密码就是正确的。
一旦一个授权用户的进程启动,用户就不可能被再次授权,直到这个进程结束。要保持跟踪这个独立的进程,drupal使用了php的进程支持。用户访问站点时被指定了一个唯一的ID,这个所谓的ID,被保存在cookie中。出于安全考虑,cookie不包含个人信息,但是将作为取回保存在服务器上信息的钥匙。当有人访问站点时,drupal将检查该指定的进程ID是否已经发送过请求,如果是,上次的环境将会被再次创建。
NTLM is a proprietary (and not so good) protocol for deploying Single Sign On in predominantly Windows oriented networks (our company network also). NTLM sits on top of HTTP, so users who are logged on to the Windows Active Directory network can transparently log-on to web services using their Microsoft Windows credentials (and thereby having Single Sign On). Getting IIS servers working with NTLM is easy (it should be), but traditionaly Apache servers have had problems in doing this.
NTLM是一种在windows导向的网络(也是我们公司的网络)中使用的单一签名独占(不一定很好)的协议。NTLM在HTTP的最顶端,登录到windows活动目录的用户可以传输。。。
这篇文档说明了如何在LINUX+apache 的drupal中通过NTLM认证
有几种方式在Apache中可以通过NTLM认证:
总之,为了帮助在这样不友好的情况下工作的人们,有一个出色的perl 模块可以提供对NTLM的很好的支持。
按照下面的步骤来实现NTLM认证:
tar xvfz Apache*AuthenNTLM*.tgz
cd Apache*AuthenNTLM*
perl Makefile.PL
make
make test
make install
KeepAlive On
重启动apache服务
# Enable the Authentication module
PerlAuthenHandler Apache2::AuthenNTLM
# Do NTLM and basic authentication
AuthType ntlm,basic
# The name that should be displayed in the Auth box, if NTLM fails
AuthName OurCompany
# Ask for a valid user.
require valid-user
# domain pdc bdc
# Domain : Your windows domain
# pdc : Primary Domain Controller
# bdc : Backup Domain controller.
#
# Note : Multiple domains can be specified.
PerlAddVar ntdomain "OURDOMAIN domainpdc domainsdc"
# What should be the default domain
PerlSetVar defaultdomain OURDOMAIN
# The user names are in the form "OURDOMAIN\user_name". Let us split it.
PerlSetVar splitdomainprefix 1
# Set the debug variables
PerlSetVar ntlmdebug 0
PerlSetVar ntlmauthoritative off
可以在tarballlink中的readme文件中看到更多的文档信息。
一旦这些做完了,域用户将作为在apache服务器中设置为REMOTE_USER变量,可以被用来进行验证
下载,安装,启用和配置webserver auth 模块。你就可以把drupal嵌入一个基于windows的活动目录的网络中了。
在用户设置里你还可以对用户注册的email地址进行过滤,比如只允许drupalchina.org地址的用户注册,而拒绝使用公用邮箱(比如yahoo.com或者gmail.com)的用户注册。
可以在管理>>访问控制>>访问规则 下面添加下面的访问规则:
Deny "%@%" (这一条先拒绝所有用户注册)
Allow "%@drupalchina.org" (这一条将允许drupalchina.org的用户注册)
看门狗(watchdog)模块可以记录你的站点,捕捉系统事件,记入日志文件,供以后授权使用者查看。这对于需要快速查看站点活动的管理员非常有用。这些日志也记录了事件的相关问题,所以也有助于检查站点的错误。
看门狗的日志是个简单的列表,记录的事件,包含惯用的数据、性能数据,错误,警告和操作信息。
管理员应该有规律的检查看门狗的报告,确保他们的站点工作正常。使用“按信息类型过滤”来显示不同类型的系统信息。
你可以: