drupalviews1.docx
《drupalviews1.docx》由会员分享,可在线阅读,更多相关《drupalviews1.docx(10页珍藏版)》请在冰豆网上搜索。
drupalviews1
Drupal6Views经典手把手案例教程
(1)
这篇文章写的相当的好,很直观来自:
http:
//www.cc.ntu.edu.tw/chinese/epaper/0008/20090320_8009.htm
使用Drupal6ViewsModule系列
(一)
作者:
唐瑶瑶/台湾大学计算机及资讯网路中心程式设计师
Drupal是一套内容管理系统,本系列文章将以View模组实际示范网站建置,除展示其惊人的弹性之外,也希望能稍微降低其学习门槛,引领读者们进入Drupal的世界。
前言
Drupal自2001年问世以来,广泛应用于各式各样的网站建置。
不但用户日益增多,不少志愿开发者也纷纷加入,贡献了数量庞大的功能模组,使得Drupal功能更加强大,又吸引更多人加入,形成一个不断高速正向回馈的系统。
所以在2008年Packet出版社所举办的网路票选中,Drupal被选为年度最佳内容管理系统,一点都不令人意外(PacktPublishingLtd,2008)。
可惜的是,其开发门槛之高也常令人半途而废,甚至望而却步。
有鉴于此,本系列文章将以View模组实际示范网站建置,除展示其惊人的弹性之外,也希望能稍微降低其学习门槛,引领读者们进入Drupal的世界。
什么是Drupal?
Drupal是一个基于GPL授权之OpenSource网站内容管理系统(CMS,ContentManagementSystem)(WikipediaProject,2009)。
Drupal发展至今已有8年历史,目前最成熟且被广泛使用的版本为Drupal5及Drupal6。
使用Drupal6开发可以帮助我们建立小至个人的Weblog,大至企业或社群入口网站,Drupal高度模组化的设计提供极大的弹性,所以甚至被视为一种开发框架(Framework)。
由于笔者是从Drupal6开始接触,以下内容都将以Drupal6说明之。
至于前瞻性部分,除了Drupal内部本身的核心模组开发撰写人员外,还有全球数以千计的程式师为了自身需求替Drupal撰写外挂模组,也因此提供了源源不绝的创意与动能。
根据统计,目前有上万个组织使用Drupal,知名网站像HarvardScience、AOLCorporate、Yahoo!
Research、SonyMusic、WarnerBrothersRecords等等,详细清单请参考DrupalCaseStudies(Drupal),中文网站可参考DrupalTaiwan正体中文支援站所整理的网站秀(DrupalTaiwan,2009)。
令人惊艳的开始!
从Drupal官方网站下载最新的安装包,按照网页指示一步步安装好后,基本核心模组功能就已经在内,只等着被启动与设定。
到这里为止,平台会有一些基本功能:
Blogging(RSS、NewsAggregator)、使用者管理(权限、角色)、内容管理(投票、样板、回应、版本控制)、搜寻、论坛、统计分析(追踪、纪录、报告)以上皆有。
哇,真好!
而且还有许多freedownload的专业级Themes可以供我们使用。
在台湾也有热心网友建置的网站,提供相当多宝贵的中文资料(DrupalTaiwan,2009)。
漫长且不顺的学习过程…
对一般使用者来说,这样就已经架好一个网站了,不需要什么特别的技术。
但对程式师来说,困难及挑战现在才开始。
假设我们现在想做出一个功能:
让使用者建立歌词及歌手资料库,歌手及歌曲间需要建立reference关系(也许不是一对一),建立起来后需要做不同的显示页面。
这时我们就需要Drupal的外挂明星模组CCK及Views来帮助我们啰。
前面简介曾经提过Drupal弹性极大,一再让人赞叹不已,但是这整个学习过程可真的不是短短2、3个月可以通透理解的,所以我们绝不会说它是一个易上手的CMS。
尤其要达成某些自定的输入输出功能时,都必须透过外挂模组来完成,这也就是我们的写作目的--希望能藉由这一系列的文章中让大家的学习过程可以不用那么坎坷;-)
简单来说,CCK(ContentConstructionKit)提供的服务就是让我们可以建立自订表单,并且可以在表单视需要添加各种资料输入栏位,包括一些基本的资料型态(ex:
integer、text、date等)、以及一些常见的表单元素(ex:
textfield、checkbox、radio等)。
最棒的是还可以建立资料参照(reference)。
以前述例子来说,我们可以分别建立歌手与歌曲资料输入表单(两种内容类型),然后将歌手的作品栏位定义成参照到歌曲这个内容类型即可。
CCK的工作到此完成。
当资料库中渐渐累积了一些资料之后,我们会对系统预设的显示方式渐渐感到有所不足,这时就换到Views模组上场了。
Views模组目前最新的版本是搭配Drupal6的Views2。
什么是Views?
原文官方文件对于Views说明经翻译如下:
「Administrators可以经由Views模组建立、管理及显示列举的内容。
一个view代表一份列举的内容,而view的输出叫做Display。
Display可以显示在页面、区块、Feed、Attachment或者任何外挂模组提供之Display(ex:
Date行事历),且一个view可以有多个displays。
…」嗯…程式师写的说明文件果然是有看没有懂。
这也就是笔者想要将自身学习的结果整理后用中文写下来的原因,希望这一系列的文章能给Drupal的中文使用者一些帮助。
开始使用Views
用实际范例学习是快速入门的不二法宝,所以不啰唆,我们先建立两个内容类型分别如后,song及artist。
第一个song的title栏位的label是「歌名」,body栏位的label是「歌词」,CCK栏位field_song_type之label为「类型」,datatype为Text。
栏位定义如下图:
图表1栏位定义
第2个内容类型artist的title栏位label是「歌手」,body栏位的label是「歌手简介」;CCK栏位field_created_song之label为「创作」,datatype为Nodereference,并与song这个内容类型产生关联。
栏位定义如下图:
图表2建立关联(NodeReference)
内容类型定义完成后,先建立几篇关于song的文章,然后再建立几个歌手的资料,歌手的创作栏位中可以单选或复选(也就是一个歌手可以有多个创作)。
你可以到最新文章中检视刚才所发表的几篇文章。
现在请选择「管理→网站建置→Views」,按下AddTab来建立一个新的View叫做music,因为我们要产生显示的是内容相关的节点,故ViewType请选择内容节点。
图表3建立musicView
按下Next后,即进入configure阶段。
由于可设定的项目太多且复杂,我先将画面分成三大部分:
AddDisplay、对应之DisplaySettings、预览。
Views2的设定画面如下:
图表4configureView
在中箭头标示目前指在Defaultsdisplay,表示我们可以先在做一些基本且共通的设定,比如标题或是欲显示的栏位(Fields),后续当然可以针对不同的display做修改。
我们在Basicsettings中设定标题为「我的音乐宝库」,并将Style设为表格,按下储存,此时会有warning说明尚未设定显示之栏位,所以请于Fields区块按下就可以新增栏位,画面显示如下:
图表5加入栏位(Addfileds)
在社群(group)的下拉式选单中,请选择内容节点,并勾选标题及类型,按下Add,记得有变更任何设定时都要储存。
一般来说,我们使用viewsmodule都倾向建立页面(page)或是区块(block)等基本的display。
现在我们要制作一个名称为Allmusicpostspage的display,先在中下拉式选单选择页面,然后按下Adddisplay新增。
前面提过每一个display可以有个别的设定,但预设会从defaultsdisplay先取出基本设定,然后,我们再依需求按下overridebutton来新增或修改目前这个display设定。
所以现在请按照下列顺序操作:
1.Basicsettings→修改名称。
2.Pagesettings→设定路径。
这是最重要的步骤,若无path,此display无法建立。
在同一个view中的不同displays可以设定相同的path,因此若再搭配Basicsettings中Access设定限制,我们可以让不同权限的使用者经由相同的path看到不同程度的内容。
图表6Pagesetting
3.Pagesettings→建立选单(若希望让user可以从网站导览中快速存取此display时)。
图表7PageSetting/建立选单
4.若设定为menutab类型,经由设定可以做出tabs的效果如下图(我们先将基本操作完成,下次再介绍此类进阶功能):
5.在按下Fields→按下override→更新。
此时针对Fields的所有增删及修改都不会动到defaultdisplay的设定,且会出现(新增栏位)及↑↓(栏位排序用),所以按下标题作修改(勾选Linkthisfieldtoitsnode):
图表8Linkthisfieldtoitsnode
新增内容节点的postdate栏位并设定如后,Dateformat下拉式选单请选自订,Customdateformat文字输入格式请写Y/m/d(输出格式会是2009/02/05),按下更新后储存。
图表9Customdateformat
最后Fields设定会成为如右图示:
图表10Fields
6.在按下过滤器(filter)→按下override→更新→按下过滤器上的+新增一个内容节点:
类型,选择只显示Artist及Song这2个内容类型的文章。
设定方式如下:
图表11内容型态过滤
7.Expose也是一个进阶的功能,提供user自行在网页上筛选欲显示的内容类型文章。
8.再回到Basicsettings→设定style→按下override→更新。
现在我们要针对表格做设定,所以请按下「Style:
表格」右侧的Changesettingsforthisstylebutton。
图表12Basicsettings/Style
9.在Style:
表格设定画面中,请于Sortablecolumn勾选「名称」及「张贴日期」,并设定DefaultSort栏位是「名称」。
Groupingfield设定是将某个field设为groupby的依据,这个field会以tableheader方式显示,相关的资料会显示于header下。
在此我们不设任何Groupingfield,而是以一个完整table显示。
做完设定请按下更新。
图表13Styleoptions
10.Basicsettings→Usepager设为是→Itemsperpage设为10。
这个设定会形成分页的效果,亦即每一页只显示10笔资料,最后请按下储存,这个display的设定才算完成。
11.在Basicsettings中,我们再做些说明:
11.1Access:
authenticateduser是指所有认证过的user经由URLpath或者导览选单皆可看到目前这个display。
因此若要限制部分使用者浏览,可以经由此设定所允许的角色(Role)或权限。
图表14存取设定
11.2页首、页尾及Emptytext则是做文字说明,比如筛选出来无任何资料显示时,让user看到些说明,而不是只有空白的网页。
11.3Theme:
Information会显示此view所使用的templates档案,所以我们可以针对需求修改这些档案,档案内容是CSS及PHP程式码,当然这也是属于进阶的功能。
12.终于要说到画面Livepreview,请在Display下拉式选单中选取Allmusicpostspage,并按下预览:
画面的上半部是预览结果,下半部则是SQLQuery语法及执行的时间。
这部份的资讯可以提供程式师判断目前设定是否会耗去太多系统资源,可以再做修正。
13.现在来看执行结果:
请登入drupal,在画面左边的导览会出现「音乐宝库」的menulink,按下后画面中间即为Allmusicpostspage的display。
使用者可以click「名称」或「张贴日期」来重新排列资料序,下端则有分页的连结。
若想要看详细文章内容,只需点选歌曲或歌手名称即进入该篇文章。
另外,使用者也可以直接于网址列type路径
Whatelsecanwedonext?
先回到musicview编辑画面,在区域的下拉式选单中至少还有Feed、区块(Block)及附加档案(Attachment)还没加入;而在区域中的Arguments,Relationships及SortCriteria也都是Nonedefined。
由此看来我们的Views还有将近三分之二的功能没开发,我们将在本系列
(二)中为大家介绍这些强大的功能及使用方式,敬请期待。
最后设定页面之画面如下: