为了纪念搬往深圳,将价值20元的Drupal菜鸟20问的参考答案免费.
Drupal菜鸟20问是Drupal初学者最常见的20个问题,这20个问题是根据我的经验选出来的,将来可能还会有所改动.
而对应的参考答案,也是我自己写出来的,限于Drupal机能有限,难免有所不足,希望大家共同完善.
9号,10号,11号每天放出来6个问题.
3,发送电子邮件,在你的站点上添加一个用户,改用的电子邮件地址为:g089h515r806 at gmail.com.在添加改用的时候,向这个用户的电子邮件地址发送一封邮件,表示为它创建了一个账户。
答:warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in F:\xampp\htdocs\lru\includes\mail.inc on line 193.
Unable to send e-mail. Please contact the site admin, if the problem persists.
解决办法:
Drupal中使用gmail配置SMTP: http://www.thinkindrupal.com/node/420
SMTP模块的安装,我以前讲过,现在讲讲gmail的配置。首先参看它的readme文件。很多人使用smtp模块后,下载了该模块,启用,出错了。
1,那是忘记了下载PHPMailer,PHPMailer的下载地址为:
http://sourceforge.net/project/showfiles.php?group_id=26031
http://sourceforge.net/projects/phpmailer/
http://phpmailer.codeworxtech.com/
2,另外一点就是,admin/settings/site-information中的电子邮件地址要和admin/settings/smtp中的邮箱地址保持一致。很多刚接触的人,也会犯这个错误。
3,使用gmail还需要注意一点,那就是配置ssl,这个要到php.ini中配置,前篇文章好像刚讲过,就是启用openssl扩展。
4,这些都搞定了以后,那就是admin/settings/smtp页面的配置了,
gmail的SMTP服务器为:smtp.gmail.com,
端口为: 465,这个该页面有提示。
Use encrypted protocol(是否使用加密协议):这个选用ssl
使用者名稱: 这个为你gmail的用户名,注意这里不要加上@gmail.com,前面的就可以了。
密码: 就是你gmail帐号的密码
发件地址: 这个参看2中说明的。
名称: 这个随意
测试邮箱地址,这个另选一个有效的就可以了。
上面的配置完成以后,点击保存设置,就可以,会出现一个发送成功的消息。
openssl的配置:
那就是我没有配置openssl,这就好办了,很快到网上找到了答案,在php.ini文件中,找到extension=php_openssl.dll,把前面的“;”去掉,重启apache。
注意这里的php.ini文件位于F:\xampp\apache\bin中,而不是位于F:\xampp\php中的那个。
原文:http://www.thinkindrupal.com/node/417
安装一个邮件服务器,
Windows:
在2003中如何配置发送邮件? http://drupalchina.org/node/4172
Linux:
一般在linux下,无需进行设置,因为它自带了邮件服务器。
相关链接:http://www.drupalchina.org/node/5277
4,分别创建一个Page节点,和一个Story节点,并比较它们之间的区别.
答案:
Page和Story节点类型,是Drupal自带的两种节点类型,在Drupal7中,story被更名为了Article。Page主要应用于静态的页面,而Story则应用于动态性的文章,比如部门的新闻,对于个人博客网站,如果是单人博客的话,一般用Story作为博客。Page没有节点的发布信息,而Story有。Page默认是不会被推到首页的,而Story默认被推到首页。Page默认是禁止评论的,而Story则允许评论。从这几点可以看出,Story更具有交互性。
第5问,为URL http://example.com/node/1 创建一个别名,别名为http://example.com/firstnode
答案:Drupal中,默认的节点路径都是node/nid的形式,这种形式对于搜索引擎,对于用户都不是很友好,Drupal自带了一个Path模块,允许对URL进行重命名,也就是为Drupal内部路径指定别名。导航到admin/build/modules,启用Path模块。访问节点node/1,点击编辑链接,你会看到一个“URL 路径设置”,在这个文本域中输入别名firstnode,这样就可以使用http://example.com/firstnode访问第一个节点了。
另外,Path模块需要手工的添加URL别名,使用第3方模块Pathauto,则可以创建一系列的规则,根据规则自动的为你生成别名。
下载FCKeditor以后,把它放到sites\all\modules\contrib下面,启用这个模块。
导航到“管理>>站点配置>>FCKeditor”,你会看到第一个错误:
The FCKeditor component is not installed correctly. Please go to the FCKeditor homepage to download the latest version. After that you must extract the files to /drupal/sites/all/modules/contrib/fckeditor/fckeditor/ and make sure that the directory /drupal/sites/all/modules/contrib/fckeditor/fckeditor/editor and the file /drupal/sites/all/modules/contrib/fckeditor/fckeditor/fckeditor.js exist. Refer to the readme.txt for more information.
FCKeditor的安装,与别的模块不同,它需要下载一些其它程序。让我们看看readme.txt文件,看看安装的具体步骤。我们需要从http://www.fckeditor.net/download下载最新的
FCKeditor。解压后将fckeditor下的所有文件拷贝到sites/all/fckeditor/fckeditor目录下。
当你创建一个节点时,点击插入/编辑图片,之后点击”浏览服务器”时,又会提示一个错误:
This connector is disabled. Please check the "editor/filemanager/connectors/php/config.php"file.
然后就搜索到了两个文章,找到了答案, http://drupal.org/node/224246,里面提示需要设置: sites/all/modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php
(FCKeditor 2.5+)
在里面$Config['UserFilesAbsolutePath'] = '' ;下面添加require_once "../../../../../filemanager.config.php";
我按照说明,设置了这个配置,但是还是出错,仔细看看,有人提示需要设置settings文件中的$cookie_domain ,由于我在本地,使用的是http://localhost/drupal访问,所以没有子域名。设置为了localhost/drupal也不起作用。
我记得在Drupal5中,我在fckeditor/editor/filemanager/connectors/php/config.php中作了硬编码,看模块作者的回复,说那样不安全,所以只好另想办法了。
由于是在本地,想不到解决的办法,看到有人在drupal.org上说,他使用了ICME负责上传图片,我就安装了ICME模块,然后在FCKeditor的profile的编辑页面的File browser settings中将File browser type设置为了IMCE。这样再上传图片,就很好用了。
但是我记得很清楚,以前给客户使用IMCE实现了图片上传以后,客户说这种图片上传方式很不友好,要用FCKeditor自带的。客户永远就是上帝,我又花了时间,调了FCKeditor的自带的图片上传。那时是用硬编码的方式搞定的,和前文中所说的一样,我在drupal.org上也找到了类似的解决办法。现在如果再有客户要求这样的话,只需要调整sites/default/settings.php文件就可以了,应该是这样,不过是在本地,就不多说了。
FCKeditor的安装,是费了好大的劲的,所以当我给大家留作业的时候,就想到了这个模块,IMCE对我们来说是很友好,但是如果有一天,你也使用了FCKeditor自带的图片上传的时候,你会发现,自带的更容易让普通的用户接受,因为他们习惯于这种操作。
当你安装了Fckeditor以后,实现了图片上传以后,安装Drupal模块所涉及到的各个方面,差不多你都学会了。
FCKeditor编辑器,与其它的编辑器模块相比,可能更笨重一点,还有它自带的图片上传,配置起来对于初学的人,也很麻烦,但是对于普通用户来说,他足够傻瓜。越傻瓜的东西,越好用。我记得我曾经讲过,FCKeditor就是王道。在Drupal中,给他们搭好架子,装好FCKeditor,把网站拿给客户,客户就会交口称赞了。所以在项目中,我配置好了一个FCKeditor,尽管是硬编码,但是在新站点中,我知道怎么改的。所以我一直在用FCKeditor。后来搭建zhupou.cn,想看看别的编辑器,发现TinyMCE也很好用。
关于Fckeditor的详细教程,网上很多,
比如Drupal花园上的:http://drupalgarden.cn/node/35
Fckeditor对于许多公司的Drupal网站,是最常用的所见即所得的编辑器了,当然还有其它的所见即所得编辑器,许多都很好用,在Drupal社区中,一直呼吁自带一个所见即所得的编辑器,但是一直争论不下,因为有人觉得这个好用,有人觉得那个好用,Drupal7中在这方面做了改进。
第7问,下载Acquia Slate主题,安装和对这个主题进行配置。网站的前台使用Acquia Slate主题,管理界面(也就是后台)使用garland主题。
Acquia Slate主题,是Acquia drupal自带的一个主题,下载地址为:http://drupal.org/project/acquia_slate,这个主题的文档有http://drupal.org/node/418326。
它自带了14个区域,可以支持1列、2列、3列布局,另外自带了page-front.tpl.php模板,对浏览器的支持更好,跨浏览器,还有就是可配置的选项增多了,许多都可以通过配置实现。
1,导航到admin/build/themes,启用Acquia Slate主题,并将其设为默认主题。
2,drupal后台管理界面的主题的设置,导航到admin/settings/admin,你会看到“管理页面专用主题”,在这里选择Garland
首页
菜单项A
子菜单项A1
子菜单项A2
菜单项B
子菜单项B1
子菜单项B2
关于我们
当访问首页时,要求这样显示一级链接:
首页 菜单项A 菜单项B 关于我们
当访问菜单项A时,这样显示一级链接:
首页 菜单项A 菜单项B 关于我们
子菜单项A1 子菜单项A2
当访问菜单项B时,这样显示一级链接:
首页 菜单项A 菜单项B 关于我们
子菜单项B1 子菜单项B2
答案:
按照上述步骤创建主菜单链接,导航到admin/build/menu,点击设置,即导航到admin/build/menu/settings,将内容的默认菜单、主导航菜单来源,次导航菜单来源都设置为“Primary links”.
在Drupal6中,当我安装了一个新的主题后,这种效果就出现了一点异常,到现在也没有弄明白.而在Drupal5中,这样用是可以的,没有遇到过问题.这可能和Drupal6中菜单的缓存机制有关.
另外,就是使用第3方的菜单增强模块,比如nice menus模块,Dhtml menu模块,都可以实现动态的才菜单.不过需要自己调整相应的CSS,这里就不多讲这些模块了.
另外就是自己编写代码,控制菜单的显示,把菜单项从数据库中显示出来,一个一个的迭代,这样也可以完全的控制菜单的显示\外观,当你编写代码时,看看nice menus模块中的代码,对你应该是有好处的.
第9问,自定义站点的logo,favicon。Logo就是站点左上角的那个水滴图片,favicon就是浏览器地址栏中的水滴图标。将这两个地方替换为你自己的。
答案:
导航到admin/build/themes,对你的默认主题进行配置(这里假定默认主题为garland),这样就导航到了admin/build/themes/settings/garland,这里有一个” 标志图像设置”,就是用来设置logo的.你可以使用主题默认的logo,也可以自己上传一个logo.
而下面的” 快捷图标设置”则是设置favicon的,也就是浏览器地址栏中的水滴图标,你可以使用主题默认的favicon,也可以上传自己的favicon.
注意,logo和favicon的大小, favicon一般为16x16,而logo稍微大一点,但是也不能太大。
另外在这个页面,你也可以配置其它的选项。这些都自己联系吧。
第10问,将Story节点中的日期格式,改为“星期一, 2009-04-20 22:11”这种形式。
答案:
在Story节点下,有一个发布日期,还有作者信息,有时候你想调整日期的格式,默认的日期格式为西方的,比如“星期一, 04/20/2009 - 13:54”,我们把它改为符合中国习惯的。
导航到admin/settings/date-time,自定义日期格式,短格式的设为“Y-m-d - H:i”,中格式的为“Y-m-d - H:i, D”,长格式的为“Y-m-d - H:i, D”。一周的第一天设置为“星期一”。
日期格式之需要设置一下就可以了。包括views中的日期格式,都允许自定义日期格式,PHP中日期格式的自定义,可参看PHP的相关技术文档。http://cn2.php.net/manual/en/function.date.php
第11问,创建一个节点,假定为Node/1,安装Poormanscron模块,将Cron runs interval设置为6,将Retry interval设置为1。使用超级用户(用户1 这里假定为admin),创建一个测试用户test。导航到“管理>>站点配置>>性能”,也就是admin/settings/performance,启用缓存模式的普通模式,将最小缓存时间周期设置为“5分钟”。使用超级用户admin,修改node中的内容。之后,使用用户test登录站点,访问node/1;退出,使用匿名身份访问node/1页面。观察不同用户看到的内容之间的异同。10分钟以后,再使用用户test访问node/1,之后退出,使用匿名身份访问node/1,比较不同用户之间看到内容的异同,比较同一用户在不同时间看到的内容异同。
答案:
这是一个关于Drupal缓存的实验,通过这个实验,可以非常直接的认识Drupal的缓存机制,关于缓存的入门介绍,可参看http://www.thinkindrupal.com/node/315系列文章,这里讲解了页面缓存,区块缓存,CSS,JS的压缩。
理解Drupal的缓存,能够帮助你解决不少的问题,许多问题都是由于缓存引起的,比如你做了某些修改,但是却没有看到效果,你不知道哪里出了问题,此时,想一想,你是不是忘记了清空缓存。
清空缓存有多种方式,最简单的就是导航到admin/settings/performance,点击“清除缓存数据”按钮。
关于缓存的更高级的知识,可参看Drupal6专业开发指南的缓存一章。
另外,在这里你也学到了Drupal中的定时任务(cron),许多模块都需要定时的执行一些任务,操作系统中,有相应的设置,但是初学者许多都不会配置,而poormanscron模块,则是傻瓜式的,很好用。
第12问,创建一个区块,输入以下内容:
<a href='http://drupal.org'>Drupal官方</a>
<a href='http://www.thinkindrupal.com'>老葛的Drupal培训班 </a>
要求,区块显示在左边栏,区块只显示在node/1页面,区块的标题为空。
答案:
导航到”管理>>站点构建>>区块”,即admin/build/block,点击“添加区块”,
在区块说明中,输入“菜鸟作业”,
在区块标题中,输入“<none>”,
在区块内容中输入“
<a href='http://drupal.org'>Drupal官方</a>
<a href='http://zhupou.cn'>老葛的Drupal培训班 </a>
”
输入格式选择Full HTML。
页面可见性设置,选择“只在下列页面中显示”,并在下面的文本域中输入“node/1”,
点击保存。
在区块列表页面admin/build/block,将新建的菜鸟作业区块指定到左边栏,并保存。
访问Node/1页面,你就可以看到这个区块了,访问别的页面,你就看不到这个区块。
有意思的是,当你编辑节点1的时候,区块也消失了,如果你想在节点编辑页面也显示区块,那么该怎么办呢?这个自己想想吧。
第13问,添加一个词汇表“Drupal”,将内容类型设置为Story,并将其设置为必须的。为这个该词汇表下面,添加两个术语“主题制作”、“模块开发”。创建多个Story节点。观察节点下面的链接“主题制作”或者“模块开发”,点击这两个链接。
答案:
导航到“管理>>内容管理>>分类”,即admin/content/taxonomy,点击“添加词汇表”链接,即admin/content/taxonomy/add/vocabulary。
在术语表名称(词汇表名称)中输入“Drupal”,
描述、帮助文本中可以不输入,不过建议你输入一些文本,比如“Drupal描述”、“Drupal帮助文本”。
内容类型中,选择“新闻(story)”。
在设置中选择“必须”,其它选项不选。
然后为词汇表“Drupal”,分别添加术语“主题制作”、“模块开发”。
当你创建Story节点时,就会看到一个名为“Drupal”的下拉选择框,其中的选项有“主题制作”、“模块开发”。你必须从中选择一个。
而在Story类型的节点中,分类默认是显示在右下脚的。
第14问,对Page类型的节点,为其默认启用评论功能。对于Story节点,为其默认关闭评论功能。为Page类型的节点,显示发布信息。对于Story类型的节点,则不为其显示发布信息。这里的发布信息,就是“2009-04-20 - 13:54, 星期一 — admin”。
答案:
1)评论:
导航到“管理>>内容管理>>内容类型”,点击page类型的编辑链接,这样就导航到了admin/content/node-type/page。在“评论设置”中 ,看到第一个“默认评论设置”,在这里选择“读/写”。并保存内容类型。
点击story类型的编辑链接,这样就导航到了admin/content/node-type/story。在“评论设置”中 ,看到第一个“默认评论设置”,在这里选择“禁用”。并保存内容类型。
2)发布信息:
这里假定默认主题为garland,导航到“管理>>站点构建>>主题”,即admin/build/themes,点击这个页面中的“设置”链接,也就是导航到了admin/build/themes/settings页面,在主内容区域的右半部分,你会看到一个“显示文章的发布信息”一栏,在这里面选中“页面”,取消对“新闻(story)”的选中。然后保存。
当你在创建一个page页面,或者story页面时,其默认选项就像前面问题中所述的那样,但是对于已有的page,story类型节点,这些修改则不起作用。
从这个作业我们可以看出,page类型和story类型并没有本质的区别,它们在底层的数据结构是完全一样的,只是为了方便而以。
第15问,设置站点的文件系统路径“sites/default/files”,临时目录“sites/default/files/tmp”。
答案:
这个作业很简单,但是初学Drupal的人常常忘记配置文件系统,特别是迁移你的Drupal站点,常常会在这个地方出错,比如从windows的本地,迁移到linux的服务器上。而文件系统没有正确设置的话,那么会带来这样或者那样的错误的。
导航到“管理>>站点设置>>文件系统”,
在文件系统路径中,输入“sites/default/files”,
在临时目录中输入“sites/default/files/tmp”,并保存。
第16问,导航到“管理>>站点设置>>站点维护”,也就是admin/settings/site-maintenance,将站点状态设置为“离线”,然后点击“登出”,退出站点。问题:想办法重新登录到站点,并让站点能被重新访问。
答案:
这是新手经常遇到的问题,我也遇到过,由于这样或者那样的原因,你进入不了Drupal的后台了,此时你可以使用路径访问,就是直接访问http://example.com/user,在这里输入你的用户名和密码,这样就登录进来了。
另外一个类型的问题,启用了简洁URL站点,被迁移到了未启用简洁URL的服务器上后,许多路径都无法访问,此时在你的路径中,加入“?q=”,导航到“?q=admin/settings/clean-urls”,在这里禁用简洁URL就可以了。
总之,你要熟悉Drupal后台各个页面的内部路径。
第17问,创建一个节点,对于正文(body),先将其输入格式设置为Filtered HTML,保存节点。之后,编辑节点,将其输入格式设置为Full HTML。
答案:
这个问题非常简单,只是一个实验,许多人不知道选择输入格式的,我就犯过这样的错误,把大段的html代码片断放入到了正文中,保存节点,却无法正常显示,特别是当你的html中包含了图片时,本应该看到图片的,但是却没有显示出来,此时第一个想到的就是,你有没有为drupal启用Full HTML输入格式。
第18问,将首页(也就是http://example.com/node页面)的文章数量设置为6,同时将摘要的字符数设置为“200个字符(100个汉字)”。
答案:
导航到“管理>>内容管理>>发布设置”中,也就是admin/content/node-settings页面,在“首页上的文章数量”中选择“6”,在“摘要字符数”中选择“200个字符(100个汉字)”。
保存。
这是控制摘要的一种方式,另外,有时候为了更好的控制摘要,你可以点击“在光标处截断摘要”,这样就出现了一个摘要的输入框,你就可以方便的输入摘要了。还有就是在正文中使用标签<!--break-->.另外就是使用程序进行控制了, 可以使用这个函数drupal_substr($content, 0, 200).
第19问,访问页面http://example.com/rss.xml,观察你站点的生成的RSS。将每个Feed中的文章数设置为5个,并只显示文章的标题。
答案:
导航到“管理>>内容管理>> RSS 发布”中,也就是admin/content/rss-publishing页面,
在“每一个feed中的文章数”中选择“5”,
在“Feed内容”选择“只有标题”。
Drupal的节点,内容自动发布为RSS,系统自带了这样的功能,问题是,许多人不知道RSS所在的路径,这个可以通过点击RSS图标获得。
第20问,了解为什么Drupal有两个稳定版本,两个版本之间的优缺点。
答案:
Drupal与其它的CMS,软件最大的不同之处在于,它不相后兼容。在Drupal5中编写的模块,在Drupal6中用不了;在Drupal6中编写的模块,在Drupal7中用不了。这一点让刚接触Drupal的人感到意外。
这一点恰恰是Drupal的优点,那就是不断地淘汰旧的技术,功能,不断地添加新的技术,功能。这样使得Drupal能够始终保持它在web开发中的技术的领先地位。
这里讲的两个稳定版本,就是两个Drupal主版本,现在是Drupal5、Drupal6。Drupal6是对Drupal5的一个扬弃,功能、性能方面,易用性方面都有了极大的改进。Drupal6和Drupal5同样都是稳定的版本。
在Drupal6 刚刚发布时,基于Drupal6的模块,还很少,还不成熟,如果此时你想建立一个大型Drupal站点的话,那么建议采用Drupal5。但是如果你想搭建一个小的网站,比如个人博客,那么则建议你尝试Drupal6。
但是随着时间的推移,比如经过本年,或者1年,也就是现在,Drupal6的模块已经丰富了,数量不比Drupal5少了,此时你再建站的时候,建议采用Drupal6。
选择主版本时,除了性能,功能,易用性这些方面意外,还需要考虑开发成本,以后的维护成本,选择较低的主版本,可以降低开发成本,但是增加以后的升级成本。
选择最新的主版本时,当主版本下发布了3、4个子版本的时,当主流模块比如CCK,Views这样的模块都有稳定版本发布时,就可以采用最新的稳定版本了。
除了最新的稳定版本以外,还有一个开发中的版本,不要在实际的站点中应用处于开发阶段的版本,也不要应用处于开发阶段的模块,这些都不稳定。对于模块,可以适当的降低标准,但至少也需要是beta版的。
最后,这20个课程作业或者实验,是为初学者准备的,也是drupal基本的设置,答案供大家参考,有不妥的地方还希望大家指正。这里没有设计太多的,需要更高技巧的问题,比如面包屑问题,这里考虑的标准就是需不需要编程,是不是刚开始的时候常遇到的问题,问题很多,肯定有遗漏的地方,希望在今后的日子中能够补充完善。