从零开始使用Drupal的详情教程

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
fishfree's picture
Start: 
2014-04-18 15:30 - 16:30 Asia/Shanghai
Organizers: 
Event type: 
Training (free or commercial)

从零开始用Drupal。这篇文章着重讲基础概念和解答问题,同时完成一个两栏新闻展示的页面。

涉及到的概念有:

  • 安装,文件夹权限设置
  • 模块的安装、启用
  • 界面语言的添加、汉化
  • 常用管理辅助模块administration menu和module filter
  • node & content type
  • field & widget & formatter
  • text format & filter & 所见即所得富文本编辑器
  • views及其format、display、show
  • devel模块及生成测试性内容
  • path & menu & 首页设定
  • block & region & theme
  • Panels & content region

参会方式:使用QQ群视频或者BigBlueButton进行在线视频会议(视音频&PPT&桌面操作演示)。

录屏

文字版教程

  1. 在这儿下载Drupal最新稳定版,解压,cd sites/default/; cp default.settings.php settings.php, 然后将drupal整个目录权限改为Web服务器所有和可写(Linux下是chown chmod命令,Windows Server中的IIS应该是network service账户,windows中的apache或者xampp等直接改成对everyone开放权限)。创建mysql数据库、设置Web服务器虚拟主机。然后打开网址,开始安装。若在windows下使用我在学习路径中推荐的bitnami一键安装包,则应该自动安装好,直接打开http://localhost/drupal即能访问。如果使用Acquia Dev Desktop开发环境,请忽略此步骤。
  2. 到/admin/modules/install路径下(请将此路径直接复制到您Drupal安装根路径网址后,如:http://drupal.dd/node,就将/node后面的用/admin/modules/install替换掉,http://drupal.dd保留,下同),安装管理辅助模块Administration menuModule Filter,直接复制粘贴其稳定版的网址即可安装。若安装过程中出现FTP权限错误提示,则表明第一步中的文件系统权限未设置正确。并启用这两个模块。同时建议禁用系统核心自带的toolbar和overlay模块。马上到/admin/config/administration/admin_menu直接保存后,网页顶部的administration menu右侧即出现搜索框,非常方便找到设置页。
  3. 界面汉化。访问/admin/modules启用locale模块,然后安装Localization update模块并启用。访问/admin/config/regional/language/add添加汉语,再到/admin/config/regional/language将汉语设成网站default语言,再到/admin/config/regional/translate/update自动在线导入其他国人贡献的汉化语言包,导入过程可能会出现AJAX错误,多试几次即可(同时建议增大php.ini中的max_execution_time、memory_limit、upload_max_filesize、post_max_size值)。但建议管理员最好是到/user/1/edit改成英语界面,出了问题方便搜索,一开始适应英语,后面就舒服了。同时需要到/admin/config/regional/language/configure启用user的语言偏好优先级高于网站默认语言。
  4. node是Drupal历史上的内容组织单位,到了7中,变成了entity的下属概念,但仍是最重要的内容管理实施方式。具体表现为content type,在/admin/structure/types上可看到系统内建了Article和Basic Page两个内容类型,到/admin/structure/types/manage/article在左下方的vertical tabs里可看到内容类型的多种设置,在/admin/structure/types/manage/article/fields可增删改某种content type的字段,极为灵活。
  5. 在/admin/structure/types/manage/article/fields可看到系统内建的多种字段,到/admin/structure/types/manage/article/fields/field_tags可看到某个字段的多种设置。其中最基本的关于字段的概念是widget(用于内容编辑时使用)和formatter(用于内容查看时使用),这些widget和formatter和field本身是解耦,更加灵活,且提高了用户友好性。如:到/admin/structure/types/manage/article/fields/field_tags/widget-type可将tags字段的widget有系统默认的自动完成widget改成单选框复选框或下拉列表,到/admin/structure/types/manage/article/display可将tags字段的formatter改成带链接和纯文字。
  6. text format & filter & 所见即所得富文本编辑器。到/admin/config/content/formats可管理text format,系统内置了3种,可配置给不同角色用户使用,用于控制用户输入内容时可使用的HTML相关格式。filters是用来过滤文本内容的,如:去除js防止跨站脚本攻击、BBCode、将某个标记替换成视音频等(有点类似于Joomla下的trigger)。text format由多个filters构成和处理,在刚才那个页面上点击任一text format的configure链接,看到该种text format的Enabled filters,若某个filter有具体的设置项,则在页面底部的vertical tabs里设置。所见即所得文本编辑器是为了方便用户可视化编辑格式,下载启用ckeditor模块,同时需要在ckeditor官网下载js包,将其解压在Drupal安装文件夹sites/all/libraries(没有这个文件夹的话就自己创建一个),解压后的ckeditor目录名可能要重命名为ckeditor。不要下载for Drupal版本。进入/admin/config/content/ckeditor仔细查看每一个配置项。
  7. 下载安装Views,欲启用时发现无法启用, 原因是未安装启用其依赖的ctools模块。Drupal里,除了核心自带的模块外,很多第三方contributed的模块之间也是相互依赖的。于是下载安装启用ctools。再启用views、views ui模块(该模块是views的子模块,一个模块项目中可含有多个模块,views将其前段管理界面views ui模块与其核心views解耦分开,足见其作者的功力!还有其他诸多好处,以后再说)。可将views理解为数据库查询视图+Web展现模板。views是个博大精深的模块,也是Drupal的基石之一,设置项极为繁多,且和Panels等许多模块有大量的配合使用,需要大量时间学习。views模块启用后,自带了几个未启用的views实例/admin/structure/views,可打开观摩学习,如果都弄懂了,views就学会了60%。简单说来,它有display、format、filter、sort criteria、contextual filter、relationship几大插件体系。初学者主要是了解format。demo视频中展示了表格布局和unformatted list布局。
  8. 在做自己的views之前,先进入/node/add/article手动创建一两篇articles,然后就可以下载安装并启用devel、devel_generate两个模块,再进入/admin/config/development,生成随机内容做测试使用。先Generate users,再Generate terms,再Generate content(选择Article内容类型)。从这一点也能看得出Drupal远胜于Joomla,Joomla只是一开始可以安装死的示例数据而已。
  9. 创建讲座报告view:/admin/structure/views/add,输入view name, show Content of type Article sorted by Newest first, 输入page title、Path(将是该view可以访问的网址),Display format设成table,点击Continue & edit,最终设定如附件图片。具体操作参见demo视频。类似制作通知公告view。
  10. 主题。主题就是模板,由多个regions组成,用于摆放blocks和main content。进入/admin/structure/block/demo/bartik可查看系统默认主题Bartik的Regions,进入/admin/structure/block可将区块blocks放入哪个region。进入/admin/appearance/settings/bartik可设定主题的一些配置项。
  11. 现在网站首页的content region的内容默认是发布到首页的nodes的teaser view mode的unformatted list加上翻页器。如何改掉?请往下看。
  12. 下载安装panels模块,又一个重量级模块,和views配合可千变万化,也需要花大量时间学习。启用panels、page manager(隶属于ctools的子模块),然后到/admin/structure/pages/add创建Page,输入Administrative title(首页)和Path(和views里的path一个道理,输入home),然后点击Continue按钮,一路默认,到Layout这一步时,选择Columns:2的第一个,然后在Content里点击齿轮按钮将刚才创建的两个views分别加入Left side和Right side,结果没发现有views,原因是未启用Panels和Views的中介——Views content pane模块(而这个模块却是ctools的子模块,是因为这三个模块关系度较高,几个作者互相参与这几个模块的设计开发,这几个模块的作者都是顶级大牛)。启用views content pane后回到Panels的content设置页,添加“讲座报告”和“通知公告”views。
  13. 到/admin/config/system/site-information将Default front page设成刚才创建的Panel Page的路径,即home,回到网站首页,发现内容已替换成我们制作的两栏文章表格式布局的页面了。Panels的主要作用就是将主题的content region再细化使用,更加灵活,无需手动编写模板。
  14. 现在我们在导航菜单上添加一项。可点击“讲座报告”的view中间的menu链接,Type选择Normal menu entry,输入Title,Menu选择Main menu,然后应用保存。即可看到导航菜单上出现新的一项。其实任何一个具有path的都可以设置成一个菜单项,如:创建一个node时可在vertical tabs中设置菜单项。菜单又是一个block,可以放在主题的任意region里。

结束语

写个教程很费时间,希望大家能仔细看,有问题先Google,不要马上QQ群里问,别人的时间也是很宝贵的。所谓ask questions wisely。

PS

Drupal官网未提供所见即所得的内容编辑器,初用者加链接、格式什么的效率较低。但我今天发现它支持markdown filter,于是临阵磨枪,搜了个教程,对照着写成了这篇教程。markdown的特点是格式即内容,花十分钟时间学习后,其输入效率比所见即所得的富文本编辑器的效率其实更高!

更多内容参见高校Drupal协作推广平台

AttachmentSize
views1.jpg62.34 KB

Comments

up

haisu's picture

up up up

看看

cairrfeng's picture

Study,Study,Study,Study

Learning Drupal

lyulixin's picture

I was the primary learner

Learning Drupal

lyulixin's picture

I was the primary learner

文字版教程

fishfree's picture

将内容直接帖子主贴后面了。

谢谢张老师的劳动

haisu's picture

写个教程真心费时间的,向张老师致敬 :)

Markdown还是我们用比较合适

firehare's picture

markdown固然十分高效,不过也只能是针对我们这些搞技术的人,对于一般用户而言,CKEditor还是不可或缺的!

fishfree's picture

我的意思就是让drupal爱好者学会使用Markdown,这样在drupal官网上发格式化的帖子要容易得多。

分辨率太低了!

westbird's picture

今天才加入这里,看了录屏,清晰度太差了,看不清楚。但还是感谢张老师!!

很棒!

westbird's picture

看了文字版,学到不少知识,谢谢张老师!

g-ch's picture

正在找这种教程,赞,谢谢张老师!