基本站点设置
Drupal的功能非常灵活,用户可以通过多种设置选择来改变站点外观,与用户互动的方式以及显示哪类信息。虽然设置选项很多,但安装后你只需进行极少的设定就可以让你的站点跑起来。随着你的站点的成长,你可能会有更多的需求,而Drupal能够使你很容易的添加新的功能,或者对你的站点来个大变脸。更棒的是,Drupal是通过GNU开源发布的,是你可以自由的几乎无限制的来改造定制成自己需要的样子。
点击导航区块中的administer » settings,就可以开始Drupal的基本设置了。你必须先登录并且拥有设置权限才能访问设置页面。在改变某个设定后,别忘了点击相应页面下的“保存”按钮。
你输入的设置选项,将被保存在数据库中用来帮助Drupal决定如何准备与展示相应的页面。请记住设置页面只包括了站点基本的设置选项,许多模块还有自己的设置页面,具体如何设置可以在模块自己的帮助页面或者在手册的模块介绍中找到。另外一些高级设置参阅定制与外观手册
在基本站点设置里,基本上所有的选项下面都有简短的说明,并且都是很容易理解的。唯一需要注意的是,站点的口号(slogan)、目标(mission)、脚标(footnote)等在某些外观主题里是显示不出来的。如果你是第一次使用Drupal,建议先把所有的信息都填上,这样你就可以直观的了解各个设置是干什么用以及如何显示的。如果你不需要或者不喜欢某些设置,再可以回过头去把它们去掉。
设置
下面这些链接提供了设置页面的详细帮助。如果你只是想先把你的Drupal站点跑起来,完全可以先略过这些介绍,以后回过头来再慢慢试验。唯一的例外是文件系统设置,你可能需要一开始就把它设置好,这样也可以避免新安装Drupal后在设置页面可能出现的一些错误信息。
基本站点设置在administer » settings
通用设置
在通用设置中您可以配置站点的一些基本信息。
提醒,任务和底部信息可以使用HTML语言格式。
默认首页
通过对默认首页的设置,您可以控制用户访问站点首页时(即访问Drupal的所在目录),首页将显示什么样的内容。例如,您可能创建了一个大的目录列表以链接站点的各项内容板块,并且希望当用户访问站点时首先看到这个目录列表(即将它作为首页主体显示)。
这个设置告诉Drupal将用户访问重定向到哪个链将用户访问重定向到哪个链接地址(URL)。需要注意的是,这个链接地址是相对于Drupal所在的目录的。例如,用于代替
"http://www.example.com/node/83" 或 "http://www.example.com/drupal_installation_directory/node/83",
您只需输入"node/83"。就算您的站点没有使用简洁链接,您也无需在输入的链接前加上"?q="。
在缺省状态下,“默认首页”被设置为“node”,这使得首页主体仅简单地显示那些已被“推荐到首页”的文章或内容。注意,当您将“默认首页”改为其它设置时,那些已被“推荐到首页”的文章或内容将不再缺省地显示在首页上;不过,你还是可以通过相对链接“node”访问它们。
如果您设置了任何非法或无效的Drupal路径,当用户访问首页时将看到“页面无法显示”之类的错误。此外,您无法将用户转向到任何不是由您的Drupal站点创建的网页(例如其它的静态HTML页面)。
实例
问题1:您想让用户访问www.example.com时某个特定的节点(node)成为首页(假设Drupal安装在此网站的根文件夹)。
解答:确定这个节点的id号。这里提供查看id号的一个方法,访问想要的那个节点(通常是文章标题链接等),此时浏览器地址栏中最后的一组数字就是id号。现在将“默认首页”设置为“node/id#”。例如,您选定的节点的id号为129,则输入“node/129”。
问题2:您想让博客成为首页。
解答:将“默认首页”设置为“blog”。
问题3:您想将某一分类的内容显示在首页。
解答:确定这个分类的id号。您可以这样确定分类的id号:在“管理”>>“分类”,点击进入这个分类所在的术语表,将鼠标放在这个分类的链接上,此时显示在浏览器状态栏(通常位于浏览器窗口的最下方)中链接地址的最后一组数字就是分类的id号。现在将“默认首页”设置为“taxonomy/term/id#”。例如,您选定的分类的id号为5,则输入“taxonomy/term/5”。
其实正常情况下,简洁链接是不需要单独设置apache和.htaccess,本页面是遇到问题时来查询使用的。
缺省情况下,Drupal 用内部的路径参数生成URL,这样的结果就是URL看起来象是:"http://www.example.com/?q=node/83."。这使得很多搜索引擎,比如google,在索引这些页面时被挡在门外。你可以告诉Drupal使用“简洁链接”,以去掉内部链接中的“?q=”。注意,这只能在加载了重写模块(rewrite_module)并且在配置中启用重写模式(mod_rewrite)的apache服务器上能正常工作。
有两种方法可以在Apache中启用URL的重写。如果你有Apache服务器的全部权限的话,可以在httpd.conf文件中启用简洁链接。或者参看更有效率和安全(的apache)
警告:如果你的服务器配置不正确时启用了“简洁链接”可能会导致你回不到管理页面来修复你错误的改动。如果你已经在这种状况,你可以直接键入“非简洁链接” http://www.example.com/?q=admin/settings 来回到管理页面。
启用简洁链接需要下面三步:
LoadModule rewrite_module modules/mod_rewrite.so AddModule mod_rewrite.c
注意,并不是所有的*nix系统都是这样设置。请查询你的分发版文档中关于apache的部分。我们也建议要禁止Apache 的multiviews功能,因为将会与简洁链接发生冲突。
RewriteBase /如果你不使用Drupal自带的 .htaccess文件,你就要添加重写规则到你的Apache目录定向(directory directive)中。样例请参考 .htaccess file in Drupal.
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
你也要设置Allow Override 以使.htaccess的命令能够在你的站点上运行,如果你改变了drupal自带的 .htaccess,你应该把它设置为
AllowOverride All
以保证重写可以启用。参阅"Behind the scenes with Apache's .htacces" 以总观了解 。.htaccess。 这里有个示例。
注意:在标准的Drupal安装中, .htaccess文件已经支持简洁链接了。不过很容易在拷贝时漏掉它,因为前面有个“点”
注意 关于MultiViews: Apache web服务器支持的MultiViews,是一种允许你访问页面时不需要文件的扩展名。比如,你有一个叫"evaluation.txt"的文件,在启用MultiViews的站点,你可以用"example.com/evaluation"来访问到这个文件。就已经知道的情况来说,MultiViews这种方便的功能,会在Drupal启用简洁链接时产生问题。除非你确实知道你在做什么,否则你应该在你计划启用简洁链接的drupal站点上禁止MultiViews。幸运的时,MultiViews在Apache的缺省安装时已经被禁止了。查阅Apache文档进一步了解MultiViews的信息。
待补充页面
* Apache 2 configuration of clean URLs on Debian
* Clean URL Support in Abyss
* Clean URL support in XAMPP
* Clean URLs with different webservers
* Example Clean URL configuration of httpd.conf for performance
* Existing URLs for server overwrite Drupal paths
* IIS CleanURLs using some of the available ISAPI filters.
* Using Clean URLs with IIS
设置403和404错误页面
Drupal的页面错误信息是简明扼要的。您可能希望这些信息对于用户显得更友好些,通过一下步骤,您可以自定义它们:
配置站点的错误报告
错误报告,记录Drupal、PHP和SQL错误记录的地方。在一个正式服务器上,建议只将错误写入日志;而在一个正在测试的服务器上,建议选择将错误同时输出到屏幕(当然错误仍将写入日志),这对于您及时发现错误、调试错误会很有帮助。
您可以设定日志的保持时间,当超过这个时间后Drupal会自动将旧日志删除。注意,这需要已被正确设置的crontab(yoursite.com/cron.php)。
缓存支持
繁忙的Drupal站点可能需要缓存站点的页面,这样可以减轻服务器的压力同时提高页面载入速度。
通常,每次用户访问一个页面,Drupal会向数据库发送一系列查询请求,获得数据用来产生HTML页面,并最终呈现在用户的浏览器中。对于一个安装运行了大量模块的网站或存在大量内容的页面,每个页面的数据库查询请求可能有上百个。一般情况下,您不会注意到这些,这是因为现在的计算机系统运行速度很快还有Drupal十分拥有很高的效率。但如果是一个每分钟页面访问量达到成百上千的非常忙碌的站点,大量的数据库查询请求可能使得服务器的速度大大降低。
而通过开启Drupal的缓存功能,繁忙的站点可以大幅度减少这些数据库查询请求数量。
缓存功能开启时,Drupal会将匿名用户访问的任何页面的所有HTML代码直接存入数据库中。当同样的页面被再次请求,Drupal会直接从数据库中读取之前产生的HTML代码,而不是重新生成这些HTML代码。结果,近百条的数据库请求被一条请求代替,从而大大减轻了服务器的负荷。
主链接和二级链接
一般信息
在4.6及之前版本中,主链接和二级链接是在外观主题中进行管理的。
而4.7版本,主链接和二级链接被整合到菜单系统中。通过创建菜单项,您的主题将在相应位置显示设定好的主链接或二级链接。全新安装的Drupal4.7将默认创建一个名为“主链接(Primary Links)”的菜单,用于显示主链接或二级链接。
设置您的主链接和二级链接
这里有两个相关的设置区:
自定义显示您的主链接和二级链接
通过一下两种方式在页面上显示主链接和二级链接:
<?php if (isset($primary_links)) { ?><div id="primary"><?php print theme('links', $primary_links) ?></div><?php } ?>
<?php if (isset($secondary_links)) { ?><div id="secondary"><?php print theme('links', $secondary_links) ?></div><?php } ?>之后您可以使用CSS定义菜单的显示。
设置主页上的文章数目和摘要长度
在“管理”>>“设置”>>“文章”中,您可以设置在类似主页的总览页面上显示的文章数目和文章摘要的长度。您也可以设定是否强制用户发表前进行预览。
注意:摘要长度设置只影响新建立的或更新的内容。
文件系统设置
通过设置文件系统,您可以控制用户和管理员是否可以上传下载文件及怎样上传下载。
没有设置或设置不当,在“设置”页面上可能将显示一条或更多的错误信息,以提示“文件系统路径”或“临时目录”不存在或权限设置有问题。
其实,您只需简单的创建这些目录并赋予它们正确的权限(通常是完全的权限),这样Drupal就可以读写这些目录了。
如果您不确定在什么地方或怎样创建这些目录,或怎样改变目录的权限,请联系您的网站空间服务商以获得进一步的协助。
文件系统设置_下载模式
这里有两种下载模式可供选择:“公开”或“私有”。
注意:在这些设置的下方您可以看到“你可以在任何时候更改设置,但这可能会导致所有URL改变和未知错误,所以不被推荐”的提示。为了避免将来出现这样的问题,我们推荐您将“下载模式”设置为“私有”,这仍然允许您让任意用户下载已上传的文件,直到您做出限制某用户的具体设置。
文件系统设置_目录路径设置
文件系统路径:
默认情况下,这里被设置为“files”。我们建议您不要修改它。
临时目录:
默认情况下,这里被设置为“/tmp”,也就是绝大多数Linux操作系统通常的临时目录。
如果您的服务器使用的是Windows或其它的操作系统,我们建议将其设置为“tmp”(没有斜杠)。Drupal将自动在“文件系统路径”下创建这个子目录作为临时目录。
如果目录没有正确的权限或存在其它的设置问题,您可以手动创建和设置这些目录。
日期时间设置
Drupal允许您设置日期和时间的格式及如何显示。当您设置日期和时间的格式时,应考虑到网站受众和用户的文化习惯。
以下是对于如何设定“默认时区”及“配置时区”可选项的一些建议。
当发布一个新的drupal站点时,你可以从以下一些方面来对你的站点设计与结构进行个性化的定制。
每个已安装的主题都有自己独立的设置页面(列在全局设置页面的上面)。Drupal 4.6及以前版本中,如果使用PHPTemplate主题引擎,你不得不到每个主题的设置页面里去单独设置导航条。
从4.7开始,PHPTemplate被集成到Drupal内核,主链接及二级链接现在变成了菜单系统的一部分。更多4.6及4.7的不同可以在这里找到。
在Drupal缺省设置下,用户未登陆时总是显示登陆区块的。但有时候你可能需要隐藏登陆区块。比如一个站点只有极少数用户被允许登陆后发布或编辑文章,而绝大多数用户只是浏览者(比如一个个人blog就是典型的例子),这时候你可能会希望隐藏登陆区块,因为占用了很大一部分页面但是对大多数用户并没什么用,反而会引起用户的困惑。
要关闭/隐藏登陆区块,你需要:
登陆区块隐藏后,需要编辑的用户以及管理员可以通过下面的链接进入登陆页面:
http://www.example.com/?q=user
(将上面的example.com替换为你的drupal站点地址)
你还可以更进一步定制自己的登陆区块。
你可以在 “管理-〉访问控制->账户规则” 里定义自己的用户名称与email规则。如果一个用户帐号或email地址符合你所定义的拒绝规则,同时并不符合任何允许规则时,那么这个新账户将是非法的,用户将不能注册此账户。常见的用途是,你不希望用户名中有任何不恰当的字眼,比如“管理员”或者“xxxx"之类的。
Drupal的输入格式过滤是一项重要的功能,但是很多新手往往对此不太了解。输入格式控制可以让管理员更好的控制站点上内容的发布格式,例如是通过HTML还是bbcode的格式发布等等。Drupal社区有很多扩展模块提供了各种各样的输入格式过滤功能。
在“管理->输入格式”下面可以进行相关的设置。
管理员可以对用户注册进行控制,共有三种选择:
* 只有管理员可以创建新的用户帐号。
* 访客可以申请创建帐号,需要管理员批准后生效。
* 访客可以自行创建帐号,无需管理员的批准。
如果你允许用户注册,用户注册后将通过email收到自动发出的欢迎信,所以最好花一点时间来写好你的站点的欢迎词。
在这里你还可以设置是否支持用户头像。
如果你使用4.6,这些设置在 “管理 >> 用户 >> 设置” 下。如果你使用4.7,这些设置在 “管理 >> 设置 >> 用户” 下。
如果你需要创建用户名规则来限制特定用户名的使用,或者禁止特定的email地址用户注册,那么可以到 “管理 >> 访问控制” (?q=admin/acess/rules)下建立相应的账户访问规则。
访问规则可以用来限制特定用户名或注册email的使用。如果一个用户名或email地址符合任意一条拒绝规则,同时并不符合任意一条允许规则,那么这个这个新账户的注册将被拒绝。
在创建规则时可以使用通配符:
% 百分号,匹配任意长(包括0个)字符。
_ 下划线,匹配恰好1个字符。
例如:
%- 将包括任何以 '-' 结尾的用户名
w_r 将包括第一个字母为w,第三个字母为r的所有用户名(如wor, war等)
在账户规则设置页面同时提供了一个检查工具,来帮助你检查你要创立的规则是否正确工作。
Drupal自带的菜单模块允许你建立无限嵌套的菜单结构。在 “管理 >> 模块” 下启动菜单模块后,就可以进入 “管理 >> 菜单” 进行菜单设置了。
Lullabot提供有一份配有英文解说的视频,演示如何建造基本的站点导航菜单系统。
创建菜单
你还可以为同一个节点生成多个菜单项,但是最好只有在必须的时候再这样做,因为用户将可以通过不同的菜单访问到同一个节点内容,有可能会引起用户的困惑。
简化流程
在Drupal 4.6 版本中,新建页面后你还必须要进入到菜单管理页面,才能把这个页面加入到菜单中。Drupal 4.7 大大简化了这一流程,在发布内容时,用户将可以直接通过发布页面下的“菜单设置”来将此页面加入到指定菜单中。当然,管理员可以规定哪些用户才有权限来使用这一功能。
Drupal本身就是相当搜索引擎友好(Search engine friendly)的,例如常常会有基于Drupal的站点的Google ranking在5甚至更高(小于10),而放置同样内容的其它CMS则要低的多。
不过,你还可以通过更改一些默认参数让Drupal更加搜索引擎友好。有很多Drupal的设置你都可以调节来使Drupal更加搜索引擎友好。
默认情况下,Drupal没有使用robots.txt文件,几乎所有搜索引擎都使用这个文件,作为允许管理员控制被索引内容的机制。
通过添加这个文件到你的站点服务器(虚拟目录)根目录,你可以引导搜索引擎的“机器人(Robots)”遍历你的站点或者禁止索引站点的某些部分。一个例子,你可以访问 http://drupal.org/robots.txt 来查看drupal.org的robots.txt文件。
如果你想要使用robots.txt文件,请按照下面的指导,更多详细信息可以访问 http://www.robotstxt.org
用下面的内容创建一个新文件,取名为“robots.txt”
# 小型 robots.txt # 关于此文件的更多信息可以在 http://www.robotstxt.org/wc/robots.html 找到 # 以井号(“#”)标记开始的行表示注释并可以被删除。 # 如果你的drupal站点在文档根目录下的某个子目录(如 /drupal) # 请在下面的路径前面添加子目录路径 # 要阻止某个特定机器人索引目录exampledir # 只要加入下面两行(删除#号) # user-agent: 特定机器人 # Disallow: /exampledir/ # 已知机器人列表可以在 http://www.robotstxt.org/wc/active/html/index.html 找到 # 可以访问 http://www.sxw.org.uk/computing/robots/check.html 进行语法检查 User-agent: * Crawl-Delay: 10 Disallow: /aggregator Disallow: /tracker Disallow: /comment/reply Disallow: /node/add Disallow: /user Disallow: /files Disallow: /search Disallow: /book/print
这个文件告诉索引机器人应该避免索引包含用户个人内容的页面,例如搜索页面,或者节点的“添加评论”表单。
很多机器人遵从“Crawl-Delay:”参数。如果Drupal站点在搜索引擎上很受欢迎,有更多的甚至超过访问者数量的机器人抓取你的站点而变得有攻击性,这种情况下最好减慢机器人的速度,在robots.txt添加如下的行:
User-Agent: *
Crawl-Delay: 10不管是“Slurp”(yahoo和altaVista的索引机器人)还是MSN使用的微软机器人都遵从这个参数,Googlebot还没有使用“crawl-delay”参数,但是可能会在下个版本中实现。
按需要修改好这个文件并保存,然后上传到你的网站服务器,并确保文件在你的网站(虚拟目录)的根目录下。如果你已经把Drupal安装到了子目录中(比如/drupal),那么修改robots.txt中的URL地址并替换服务器根目录的robots.txt文件——而不是放到drupal安装根目录。
现在注意访问你站点的机器人,过一段时间后,查看你的日志文件(logs)("来源日志(referrer log)")可以看到有多少来自搜索引擎的访问者。
这是一份我的robots.txt文件:
# AllTheWeb
User-agent: fast-webcrawler
Crawl-Delay: 10
Disallow: /aggregator
Disallow: /tracker
Disallow: /comment/reply
Disallow: /node/add
Disallow: /user
Disallow: /files
Disallow: /search
Disallow: /book/print
Disallow: /admin
Disallow: /cron.php
Disallow: /xmlrpc.php
Disallow: /database/
Disallow: /images/
Disallow: /includes/
Disallow: /modules/
Disallow: /scripts/
Disallow: /themes/
Disallow: /email_disclaimer
Disallow: /privacy_policy
Disallow: */add/
# AltaVista
User-agent: scooter
Crawl-Delay: 10
Disallow: /aggregator
Disallow: /tracker
Disallow: /comment/reply
Disallow: /node/add
Disallow: /user
Disallow: /files
Disallow: /search
Disallow: /book/print
Disallow: /admin
Disallow: /cron.php
Disallow: /xmlrpc.php
Disallow: /database/
Disallow: /images/
Disallow: /includes/
Disallow: /modules/
Disallow: /scripts/
Disallow: /themes/
Disallow: /email_disclaimer
Disallow: /privacy_policy
Disallow: */add/
# Googlebot
User-agent: googlebot
Crawl-Delay: 10
Disallow: /aggregator
Disallow: /tracker
Disallow: /comment/reply
Disallow: /node/add
Disallow: /user
Disallow: /files
Disallow: /search
Disallow: /book/print
Disallow: /admin
Disallow: /cron.php
Disallow: /xmlrpc.php
Disallow: /database/
Disallow: /images/
Disallow: /includes/
Disallow: /modules/
Disallow: /scripts/
Disallow: /themes/
Disallow: /email_disclaimer
Disallow: /privacy_policy
Disallow: */add/
# Looksmart
User-agent: wisenutbot
Crawl-Delay: 10
Disallow: /aggregator
Disallow: /tracker
Disallow: /comment/reply
Disallow: /node/add
Disallow: /user
Disallow: /files
Disallow: /search
Disallow: /book/print
Disallow: /admin
Disallow: /cron.php
Disallow: /xmlrpc.php
Disallow: /database/
Disallow: /images/
Disallow: /includes/
Disallow: /modules/
Disallow: /scripts/
Disallow: /themes/
Disallow: /email_disclaimer
Disallow: /privacy_policy
Disallow: */add/
User-agent: zyborg
Crawl-Delay: 10
Disallow: /aggregator
Disallow: /tracker
Disallow: /comment/reply
Disallow: /node/add
Disallow: /user
Disallow: /files
Disallow: /search
Disallow: /book/print
Disallow: /admin
Disallow: /cron.php
Disallow: /xmlrpc.php
Disallow: /database/
Disallow: /images/
Disallow: /includes/
Disallow: /modules/
Disallow: /scripts/
Disallow: /themes/
Disallow: /email_disclaimer
Disallow: /privacy_policy
Disallow: */add/
# MSN
User-agent: msnbot
Crawl-Delay: 10
Disallow: /aggregator
Disallow: /tracker
Disallow: /comment/reply
Disallow: /node/add
Disallow: /user
Disallow: /files
Disallow: /search
Disallow: /book/print
Disallow: /admin
Disallow: /cron.php
Disallow: /xmlrpc.php
Disallow: /database/
Disallow: /images/
Disallow: /includes/
Disallow: /modules/
Disallow: /scripts/
Disallow: /themes/
Disallow: /email_disclaimer
Disallow: /privacy_policy
Disallow: */add/
# Yahoo Vertical Crawler
User-agent: yahoo-verticalcrawler
Crawl-Delay: 10
Disallow: /aggregator
Disallow: /tracker
Disallow: /comment/reply
Disallow: /node/add
Disallow: /user
Disallow: /files
Disallow: /search
Disallow: /book/print
Disallow: /admin
Disallow: /cron.php
Disallow: /xmlrpc.php
Disallow: /database/
Disallow: /images/
Disallow: /includes/
Disallow: /modules/
Disallow: /scripts/
Disallow: /themes/
Disallow: /email_disclaimer
Disallow: /privacy_policy
Disallow: */add/
# Exclude every other bot (hopefully)
User-agent: *
Disallow: /这是更合理的解决方案,我觉得。
不过,虽然有些离题,但是不要忘了禁止PHP会话的use_trans_sid来获得更干净的搜索引擎列表。
虽然Drupal核心的运行只需要你的服务器分配8MB的内存,但是根据你站点上使用的模块数量,你可能需要增加些内存分配。当你访问?q=admin/moudles时会加载你站点上的所有模块,不管你是否启用。如果你出现了白屏,你只有两个选择:增加分配给PHP的内存,或者删除不使用的模块。
根据你的主机的不同,有几个地方都可以完成这个配置,一般是php.ini,或者htaccess,具体要看你的主机状态。
比如:
memory_limit = 12M(推荐使用,如果你拥有这个权限的话)ini_set('memory_limit','12M');php_value memory_limit 12M你需要做点试验来确定最适合你的值。
配置默认的内容工作流(workflow)以适合你的站点。默认的情况下,Drupal模块被设置为提升到首页(Promote to the front page),一些时候这个功能很有用,不过你不会总是想要这样。
4.7中管理菜单发生了变化,因此这个配置页面也移动到了其它位置。
在4.6或更早版本中:
访问管理 >> 内容
选择配置(Config)标签,然后选择内容类型(Content types)子标签。
在4.7中:
访问管理 > 设置 > 内容类型
点击有需要的节点类型的配置(Config)链接,根据你的站点的需要更改默认的工作流选项。
如果你增加或者启用了包含额外内容类型的模块,你需要重新访问这些设置。
4.7及以前版本
你可以通过下面的链接为你的站点设置适当的帖子显示信息。
?q=admin/themes/settings
在管理 >> 主题菜单下,选择配置(Configure)标签之中的全局设定(Global settings),然后在显示文章信息(Display post information)面板中为你的站点选择适当的选项。可用的选项是根据你安装的模块自动检测的,其它选项可以在单个主题配置页面设置。
5.0
在管理 >> 站点建设 >> 外观主题(admin >> site building >> themes)下面选择设置(configure)标签之中的全局设定(Global settings)。然后选择适当的文章显示选项就可以了
区块是显示在Drupal站点的边栏或特定区域上的框状结构。你可以看到大多数的区块(比如,最新论坛主题)都是各个Drupal模块动态生成的,当然你也可以创建你自己的区块。
区块在在页面上显示的位置和在哪些页面显示,既取决于使用的主题,也和区块的设置有关。区块设置由区块管理页控制,你可以通过点击管理 » 区块来访问。在这个页面你可以控制每个区块的启用、在页面上的显示位置、以及在哪些页面会显示。
区块是否在某个页面上显示取决于以下几个因素。
当你配置好区块,使其按需要显示在指定页面的正确边栏时,你可能希望调节区块的权重来指定区块在边栏中的垂直位置。区块的权重通过区块管理页面的下拉选择框来选择,更重的区块(具有更大的正值权重)会“下沉”到边栏的底部,同时更轻的区块将向顶部“上浮”。
更多信息可以在手册的模块部分有关区块介绍里找到。
在区块配置的“页面定义可见性设置”选项组下面有一个大文本框,其中每一行你可以输入路径指定区块在哪些页面将会显示或者不显示,这取决于你上面选择的选项。
下面是一些有注释的例子,它们都假定你选择了第二个选项(只在指定页面显示),如果你选择了第一个选项(在除了下列页面外的所有页面上显示),区块将会在除了你下面列出的页面之外的所有页面显示。你可以在列表中加入任意多个页面,每个占一行。(注意你不能同时指定会显示区块的页面和不会显示区块的页面,两者只能选一)
<front> 指定区块将在首页上显示
node/42 指定区块会在节点ID为42的文章里显示
aggregator 指定区块仅在聚合页面显示。
blog/* 指定区块区块会在所有地址(URLs)以blog/打头的页面上显示。注意,如果你希望在blog主页面上也能显示区块,则只要再加入一个路径blog(不需要后面的反斜线)就可以了。
另一个例子,如果你有在管理界面不需要显示的HTML,Javascript或PHP区块,你可以选择“在除了下列页面外的所有页面上显示”选择,然后使用下面的通配路径:
admin/*
除此以外,你还可以选择第三个选项(看下列的 PHP 代码是否返回 TRUE)来进一步定制区块的显示,这时需要在下面的文本框中输入PHP代码,并使用<?php ?>标记,PHP代码的返回值决定了区块的可见性。
自定义区块包含的内容由你来提供(与模块生成的区块相反),自定义的内容可以是静态的(如HTML)或者动态的(PHP生成内容)。事实上Drupal提供的所有功能都可以在PHP内容区块中访问到,这种区块的弹性提供了极其强大的途径来定制你的Drupal网站。
你可以通过区块管理页(点击管理 » 菜单),选择添加区块标签,并完成表单来创建自定义区块。
每个自定义区块由标题、描述和正文组成,正文中的内容可以为任意长度。
注意:在Drupal4.6中,区块的标题被用来作为数据库的标识符,因此你只能定义一个没有标题的区块(这个问题已经为更新的Drupal版本作了修正)
这个问题的一个解决办法是把标题改为:<!--title of custom block-->,这样既能满足Drupal对区块标题的要求,同时注释标记(<!--...-->)也防止了标题在区块中的显示。
有些网络主机限制了客户只能拥有一个数据库,因此需要不能重复的表名。即使在这种情况下,管理员仍可以使用Drupal,甚至可以安多个Drupal,因为Drupal提供了表名前缀(table prefix)功能。
为了使用这项功能,你必须首先编辑脚本database/database.x,以创建带有你的前缀字串的数据库表。如果你要安装附加模块,你也需要修改数据库脚本里的INSERT和REPLACE语句来加上前缀(译注:Drupal 4.7模块自带的Install文件无需修改)。例如,改变以下格式的所有语句从:
CREATE TABLE access
INSERT INTO system VALUES
('modules/filter.module','filter','module','',1,0,0);变成
CREATE TABLE dr1_access
INSERT INTO dr1_system VALUES
('modules/filter.module','filter','module','',1,0,0);
然后使用dr1_(举例)作为$db_prefix的值,写入到
sites/example.com/settings.php文件中。
你也可以使用脚本来自动完成这项工作,你可以同时更新多个站点,使用(bash shell)的命令行:
for F in '' prefix1 prefix2; do \
for S in 'find ./modules --name \*mysql'; do \
scripts/dbprefix.sh $F < $S | grep -v DROP |\
mysql -h DBHOST -u DBUSER -pPASSWD DATABASE; \
done;
done这里还有一个PHP脚本,用于为/drupal/sites/*下的所有站点创建所有数据库表,可以在DRUPAL-4-6下工作,访问数据库表创建脚本问题以获取更多信息。
如果你想在多个站点间共享用户,你需要按照下面的格式设置$db_prefix变量:
<?php
$db_prefix
= array(
'default' => 'thissite_',
'authmap' => 'shared_',
'profile_fields' => 'shared_',
'profile_values' => 'shared_',
'role' => 'shared_',
'sequences' => 'shared_',
'sessions' => 'shared_',
'users' => 'shared_',
'users_roles' => 'shared_',
'users_uid_seq' => 'shared_', // 用于pgsql
);
?>多个数据库间共享公共表
[仅在mysql上测试过]把多个Drupal安装在不同的数据库中,但是仍然共享共用的表,这是可以做到的,只需要指定数据库名作为前缀的一部分,例如
$db_prefix = array(
"default" => "slave1.", // slave1安装的默认数据库
"users" => "master.",
"sessions" => "master.",
"authmap" => "master.",
"sequences" => "master."
"profile_fields" => "master.",
"profile_values" => "master.",
);表名前缀可以选择性的只应用到某些表上,这样多个Drupal安装就可以共享共用的表。一个有趣的应用是共享分类表(vocabularies, term_date),另一个有趣的用法是在多个Drupal安装间共享users表。
为了使用这项功能,先安装两个Drupal到同一数据库中,并使用不同的数据库前缀。在这个例子中,一个前缀为“master_”,另一个为"slave1_"。然后编辑"slave1_"安装的conf.php文件,让一些表指向"master_",实现用户共享,如下:
$db_prefix = array(
"default" => "slave1_", // slave1_安装的默认表前缀
"users" => "master_",
"sessions" => "master_",
"authmap" => "master_",
"sequences" => "master_"
"profile_fields" => "master_",
"profile_values" => "master_",
);本页讨论了使用PostgreSQL的模式(Schema)作为前缀的用法。“普通”前缀可以和MySQL一样的用法,所以这里不再讨论。
PostgreSQL有种叫“模式”的机制(http://www.postgresql.org/docs/current/static/ddl-schemas.html)。有时非常方便,但如果你不知道那是什么,你可能实际上不需要它们并可以不用读下去了。
模式在Drupal中可以被用作前缀,也就是说,在多站点安装中,每个站点可以存在于自己的模式中,并且共享的表可以存在于一个“共享”模式中(或者甚至可以是公共模式)。
这儿有个问题:Drupal的升级会失败。很不幸,但是没办法,因为“普通”前缀和模式前缀是不兼容的。如果你对详细情况感兴趣,请访问http://drupal.org/node/40034。
不过也不用担心,可以通过小小的修改更新脚本(update.php和updates.inc)来简单的修正这个问题。问题来自CREATE [UNIQUE] INDEX和ALTER TABLE .... DROP/ADD CONSTRAINT语句,当使用模式作前缀时,会执行下面的查询:
CREATE INDEX prefix.search_total_word_idx ON prefix.search_total(word)
ALTER TABLE prefix.boxes DROP CONSTRAINT prefix.boxes_title_key
ALTER TABLE test.contact ADD CONSTRAINT test.contact_category_key UNIQUE (category)必须从索引名和约束名前面移除前缀,也就是它们必须改为:
CREATE INDEX search_total_word_idx ON prefix.search_total(word)
ALTER TABLE prefix.boxes DROP CONSTRAINT boxes_title_key
ALTER TABLE test.contact ADD CONSTRAINT contact_category_key UNIQUE (category)你只需要搜索CREATE INDEX,CREATE UNIQUE INDEX和ADD/DROP CONSTRAINT语句并移除索引/约束名外面的{}就可以了。
最好的方式是运行升级测试,你可以看到错误查询的列表,然后你就可以很简单的修改它们了。
其它注释:你不能使用prefix.sh来为表加上前缀,这会产生错误的CREATE [UNIQUE] INDEX 查询。这点同样可以简单的被修正,只需要修改:
s/^CREATE INDEX \(.*\) ON /CREATE INDEX $PREFIX\\1 ON $PREFIX/;
s/^CREATE UNIQUE INDEX \(.*\) ON /CREATE UNIQUE INDEX $PREFIX\\1 ON
$PREFIX/;s/^CREATE INDEX \(.*\) ON /CREATE INDEX \\1 ON $PREFIX/;
s/^CREATE UNIQUE INDEX \(.*\) ON /CREATE UNIQUE INDEX \\1 ON $PREFIX/;一种可选方法
如果你打算用这种方法来解决,下面是你需要做的:
1.添加下面的语句到database.pgsql文件的顶部:
CREATE SCHEMA schemaname;
SET search_path TO schemaname;<?php
function db_connect($url) {
$url = parse_url($url);
$db_and_schema = explode(".",substr($url['path'], 1));
$conn_string = ' user='. $url['user'] .' dbname='.
$db_and_schema['0'] .' password='. $url['pass'] . ' host=' .
strtr($url['host'],'+','/');
$conn_string .= isset($url['port']) ? ' port=' . $url['port'] : '';
$connection = pg_connect($conn_string) or die(pg_last_error());
if(!empty($db_and_schema['1'])) pg_query('SET search_path TO
'
.$db_and_schema['1']);
return $connection;
}
?>$db_url = 'pgsql://user:password@+tmp/dbname.schemaname';
。[=red]
[/]
暂缺
原文:http://drupal.org/node/70472