欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

drupal views 学习

shiping1 的头像

 

  你可能说,怎么还是这么丑,将3个div排成什么样的样式,是美工的活,CSS的东西我不大懂,在这里就不多讲了。讲的就是这个流程,如何把CCK的字段提取出来,如何将CCK创建的节点设为首页。有点累了,歇会先。

××××××××END×××××××××××××××××

ZEN theme主题修改成果小结

1)首先,你可以找一个drupal主题做为你的原始主题,原始主题越简单越好修改。你也可以自己创建一个,当然,逻辑还得按drupal来,这么一想就没有必要了,何况简单的比方说:css的三栏自适应分布都是些固定的技术,你的新发明了也许并不一定比这些固定套路管用。所以,第一步,找个主题来修改吧,我用的zen.觉得不错。

2)你得规划好你网站主要栏目的架构,打个比方说,一个blogs的主页,你打算用什么样的布局呢,顶上有推荐,中间有图文,下面有内容的话,你可以试着用 33/34/33,40/40/20的上层加上zen自带的20/60/20的底层,这样,你可能就需要三个区间。所以,先规划一下。我的网站我规划了4个主要的分栏 。33/34/33,40/40/20,20/60/20,25/50/25,通过这三栏的组合,你可以得到4*3共12个分栏的样式。我想已经够用了吧。当然,考虑子菜单,我又加了一个submenu的100%的分栏。这样,完全足够了。

3) 修改INFO文件,将你要加的这几个分栏加入内容REGIN,可以自己考虑加些中文名比如“三列左”之类的助记。加入REGIN模块后,要记得修改template中相应的css。

4) 修改 css文件。主要是layouts.css,copy关于 20/60/20分栏的内容,优化,改名,分配,这样,5个分栏的css就完全了。当然,如果栏不存在什么的你需要考虑不要出现丑陋的空白,所以你的layouts文件对margin,padinng的考量一定要具体,或者你可以加上内容后再进行测试。

5)修改 page.tpl.php文件,将你的分栏加入你想要的页面。并不是每个页面都需要所有的分栏。所以,你自由组合吧,以blogs为例,你可以就需要4个分栏。把这4个分栏加入后,命名为page-blog.tpl.php,你的任务就完成了。依次,你可以组建一些其它主栏的页面,如果你是以page的方式建立的这些内容,你可能需要命名的方式就是 page-node-111这样的页面了。

6) 实际上,每种类型的节点表现形式可能都不一样,比如图片,一般的就是图在上,内容在下,博客正好相反,所以你得为你的不的节点制造不同的布局,所以你可能又会有一些新的东西,比如 node-forum.tpl.php,node-blog.tpl.php之类的文件。

7)css是算简单的技术,只要你以前背历史的时候下了功夫练记性,不过加上IE6,IE7,firefox,maxon这些自成标准的怪物,css就什么都不是了。弄得hack css也成为了一门学问,我就上周加这两天,解决了css的一大堆问题,比如IE6中的border经常消失,firefor中的margin与IE中的不一样等等。反正怎么说呢,可能css专家的意思就是说他失败的次数足够多了。

—————————————————— END _____________________________

小技巧--使用firebug幫忙定制theme

 

比如说我要在 "Read more" "Add new comment" 之前加个可爱的icon

 

但因为"Read more" 和 "Add new comment" 畏使用不同的icon (当然吧)

所以要看看从css 上它们的class 或 id 值有否特定

才可以用css 定制不同的icon

如不, 可能要hack 核心或使用js 来忙了

先打开firebug (热键F12)

按一下inspect

指到 "Add new comment" 來查看它的html

你可以看到firebug 立即跳到 "Add new comment" 的html
可以看到:

<li class="first comment_add">
  <a class="comment_add" title="Add a new comment to this page." ..............
</li>

指到 "Read more" 可以看到:

<li class="last node_read_more">
  <a class="node_read_more" title="Read the rest of this posting." ..............
</li>

可以看到它們各有一個自己的class, 可以用css 鎖定tag 了

例:

.node_read_more{
  background-image:url(read_more.gif);
}
.comment_add{
  bac......................
}

+++++++++++++++++++++++END++++++++++++++++++++++++++++++

Drupal实现国内门户网站的风格

国内的门户网站大多有如下特点:

* 首页往往会放上一个图片Slide Show, 1,2,3,4,间隔的变换
* 首页只列出文章的标题,按日期排序,不像Drupal默认的那样显示标题和摘要
* 首页会划分为各个内容区块,热点新闻,行业新闻,专题等等,各管一摊

Drupal默认安装后,和以上描述的门户网站的风格差的有十万八千里,很多人可能就是因此放弃对Drupal的继续研究,认为洋人的东西不符合国人需求,相反, DeDeCMS之类的国产CMS默认安装就大致符合。
实际情况是, Drupal做这样的门户站风格绰绰有余,如下逐条说明:

* Drupal有大量 Image Slide Show的模块,随便找一个,图片Slide show轻松搞定
* 要实现文章列表显示标题的模式,按如下步骤

1. 下载views模块,启用
2. 进入后台, 进入views, 新建一个views
3. 修改其中的style, 然后可以到fields区块中点”+”, 选中Node title, 更新后,再指定:link to the node, 也就是说该标题指向文章的链接, 你也可以根据需要,加上时间显示,作者显示,然后到Sort区块中指定一下排序方式,一般按发布日期的倒序来排列.

* 最后要实现内容区块,可以下载panels模块,panels可以根据你的需要把首页分割为各种区块模式,三行三列,两行两列,随心所欲.

 

***********************************END********************************

Views2.0 从入门到精通

 

在Drupal6中,使用Views2 模块,还可以通过覆写views样式输出,制作多种多样的列表样式,views模块在多种场合显得非常方便,比如,显示一个分类下的N篇文章,只输出文章标题,时间。或者输出文章中上传的图片作为封面等等。

    本系列的教程,将着重和大家分享在Drupal 6.x中Views 2版本的基本应用,利用基本的views操作,逐渐深入views的使用,满足自己的需求。

 

一、views列表页面

进入views的列表页面,发现views2有一个筛选的功能,这也是为了我们在制作了大量的views列表以后,方便我们快速定位自己要查找的views列表。如下图:(略)
我们分别来看一下,各个选项的意思。
(1) Storage:我们可以理解为存储方式,这是在views2中,新增加的一个概念,默认有三项,all,即所有的方式,default,即默认方式,也就是在安装好views模块的时候,自带的几个views列表,第三项:overridden,这是views子模式的意思,在views中添加一个page以后,还可以使用这个views添加一个page页面,那么就是overridden了原来的page,就是这个views的子模式。
(2)Type:这个比较容易理解,就是制作views的时候,选择的类型(View type),是Node,还是File,Node revision,Term,User.默认就是这5种了。
(3)Tag:这个是在添加views的时候,填写的View tag选项,也是为了方便查找而设置的。
(4)Display:即制作views生成的样式,默认有block,page,feed,   feed样式是Drupal6中新增加的一个方式。
(5)Sort by和Order 是用于排序的,大家都能明白。
在过滤框的下面,是我们所创建的views和安装好views模块后默认的几个views列表样式,可以针对view做一下操作。
点击“edit”:编辑当前的views列表,“Export”将这个views导出,“Clone”,复制这个views,“Delete”,就是将这个views删除掉了。
如果你的views没有被启用,比如一些自带的views,则点击“Enable”启用这个views列表即可,如下:
从下一节开始,我们介绍views的使用和添加,编辑。

二、-添加views

首先,我们添加一个views列表,在views的列表上方,点击“add”,填写views列表的基本信息,如下图(略)
其中,必须要填写有两项;
(1)views name,即该views列表的名称,这里要填写机器可读得名称,只能是数字,字母,下划线命名,由于后期要使用该名称覆写views主题输出,我建议,名字简洁又明了最好。
(2)views type,即该views的类型,是views过滤内容的分类,分为node, file ,node revision和term,user五种。
还有一项是 views description,这是对这个views的描述,会在views列表页面显示,用来提示用户这个views中遍历的是什么内容的。
填写完以后,点击“Next”将进入views的具体配置页面,我们下一节将介绍基本配置。

三、基本设置

1、views2.0的布局:进入views看到的会是如下界面:(图略)
这一个图是从views自带的帮助文档中找到的,它已经对views-ui的各个区域功能作了简单的介绍,我们来看一下;我们可以把这个ui界面分成4个部分。
(1)最上面的一排,是用来对views进行一些导出,复制,查看操作的,
     Export 将views导出
     Clone 复制这个views,如果你想建造基本上类似该views列表的views,可以使用这个功能复制出来一个。
     View "Page" 查看这个views列表在前台的显示效果。
(2)左边的一块区域,用来添加views的显示方式,这个显示方式我们在上一节当中已经提高过,可以利用一个views生成多个views列表,可以是block,page,feed格式的。
(3)右边的最大区域,是用来设置该views,几乎全部的views设置都在这里了。
(4)最下面的一部分,有两个功能,一个是预览当前的views输出,这个只能预览输出的内容,格式排版有可能会和在前台的有些差别[主要是css可能后台没有加载],另一个是显示views查询的性能和sql语句,方便调试程序用的,基本上要是没有编程基础的话,用处不是很大。
2、基本设置部分介绍
基本设置部分包括View settings和Basic settings两个部分,在这个全新的views界面的右侧大区域,用区块隔开了,这样的界面也是非常友好的。我们分别来看一下,这两个部分的内容。
(1)View settings
设置Tag的选项,这里在添加views的时候,你就可以输入,如果要作出改变,就可以通过这个选项,主要是方便在views列表页面进行筛选。默认是 None。
(2)Basic settings
这就是正规的“基本设置”了,主要是下面几项
Name: 默认是Defaults,就是这个views列表的名称;
Title:默认是 None,这个views的标题;
Change settings for this styleStyle: views列表的显示方式,有四种:
     Grid:这样方式,有点类似于Excle表格,可以设置有多少行多少列,做出以下的效果:
     List,就是列表的样式,可以选择是ul还是ol格式
     Table 表格样式
     Unformatted 没有样式,一行一行的显示出来,用div包着。
Change settings for this styleRow style: views列表中每一行的显示方式,有两种方式,
     Fields,默认方式,设置是否在一行显示,或者使用分隔符等。
     Node ,以节点的方式显示,可以选择显示标题,摘要,链接等。
Use AJAX: 是否适用ajax效果,主要是用在分页的时候,默认为No
Use pager: 是否分页显示,分页有 三种Full pager   Mini pager 和No,默认为 No
Items to display: views列表显示的条数,默认为5;同时可以设置步长。
More link: 是否用more链接到页面,估计这个功能还没有完善好,这个功能我到现在也没发现如何使用,默认是No
Distinct: 是否去掉重复的选项,默认为No 

Access: 查看这个views是否需要权限,可以根据用户组设置访问权限,默认是Unrestricted
Exposed form in block: 默认是No,这个选择以后,会在block或者page上方有一个过滤器,提供一些过滤得选项 用来快速定位节点。
Header: 设置views头部信息,默认为None
Footer: 设置views底部信息,默认为None
Empty text:设置如果views查询没有结果会显示的内容,默认为 None
Theme: Information 这个就是大名鼎鼎的主题覆写功能,我们会在后面详细介绍。

四、选择Fields

这一节我们介绍一下Fields选项的作用,Fields用来添加views将输出哪一些内容,一般这是必须选择的,要不然就没有意义了,进入views中,如下图界面;(图略)
点击“+”号,就会出现下方的选择列表,上面有一个过滤器,方便用户分组显示要添加拿一些内容,比较常见的基本上都包含了,比如节点的名称,发布时间,评论次数,文章所在分类等。
比如我们选择了“node:title”项目,会出现下面的样子:
(1)Label,即列表显示的时候,着一个标题前面的标签,如果有文字写上的话,比如上图,则会显示成 Title :XXXX 的样子,我们一般将它清空即可。
(2)Exclude from display :如果选择了该项目,则这个标题则不会显示出来;一般不选择。
(3)Link this field to its node:这一项是选择标题是否关联到文章的内容页面,一般会选择,即点击标题,会显示文章。
在Fields “+”号的右边,有一个调节按钮,点击以后,下面出现如图:
用鼠标拖动即可调节显示的顺序,这也是Drupal6中views2的一个新特性,所有的操作都是Ajax的,用户体验非常好。
如果选择其他的项目,操作基本上是类似的,遇到复杂的操作,我们后面将会继续介绍。

五、views过滤器

说的直白一些,views就是生成sql语句的一个工具,viewsd中,Fields就像是sql语句中select后面的东西,而views的过滤器,就像是sql语句中的where后面东西,也就是说,过滤器的作用就是制定查询的条件。
在views Ui界面中,如下图,就是设置过滤器的地方:
添加的方式,和Fields的添加类似,点击“+”号,会出现选择列表,如图:
这里就是选择sql语句中 where “字段名”= “**” 中的“字段名”,比如,我们选择了
“node:publish”,就是选择过滤是否发布得文章,如下图:
如果勾选了这个选项,即 publish=true,只过滤显示已经发布的文章,
如果选择了term以后,在下放的设置区域右边,有一个Exposed,点击如下图:
这是设置是否有一个提供用户快捷过滤得选择,如果设置了Unlock operator,则会在views列表的上方,会提供给用户一个类似于文章管理界面上方的一个过滤器;右侧和下侧则是对过滤器的一个设置, 比较容易理解,这只是某些选项会有。

六、预览创建的views列表内容

在设置views的页面下方,有一个区域就是专门来显示预览内容的,如图:
Live preview区块中分为两个部分,上面的区域可以用来填写一些参数,比如设置了arguments,则填写相应的参数,而display是选择,预览那一个views列表,因为一个views可以创建多个列表,所以要在这里进行选择。
选择好display和arguments以后,点击右面的“preview”,则下面就会预览出内容了,这个功能还是非常适用的,在这里调整好大体的样式,然后可以通过覆写views模板文件来制作自己要的显示效果,比如,Drupal使用者中文社区[ http://drupaluser.cn ]的views列表就是这样做的。

 

===========END==========


CCK & Views 模块使用小结

 

CCK和Views为什么如此重要呢?因为,CCK和Views在从“内容”和“提取”两个方面给Drupal提供了更高的灵活性与适用性。在谈CCK和Views的具体使用之前,有必要了解其工作原理,这进一步需要我们理解Drupal的部分工作原理。
关于内容组织、提取与呈现的基本思路
组织
Drupal最为特别也最重要的一个特性是,将所有内容(或者具体些叫文章)看作节点(Node),这些节点具有公共的和私有的特性。每个节点都有Title,都有Body,这些是相对显性的,它们就是这些内容我们能看到的部分;每个节点都是有人创建的(Author),创建都是有时间记录(Post date)的,等等,这些是节点的默认相对隐性部分。结合其他的功能模块,每个节点可以控制受这些功能模块影响的程度和方式,比如,是否接受用户评论。
对这些节点的特性进行单独的一个个设置是不合理的,因为可能我们需要面对成千上万的节点(内容)。那么对相似特性的节点进行分组分类,成为一个有效用的方式——这实际上是一个反推——Drupal为我们提供的内容类型(Content types)正是这样一种分组设置Node特性的途径。
提取
作为最基本的使用,印象中我们进行提取的操作几乎没有——因为通过内容类型的设置,如何从内容记录(数据库)中调用数据已经被确定了。比如,在内容类型中我们可以设置Body为空,因而使内容编辑、显示时没有Body正文部分。
但是更进一步的,如果需要一些默认Drupal没有直接提供的内容形式时,就需要用到提取了。在DrupalChina.org中 east 有篇文章《不使用views,如何自定义节点列表显示页面》,详细的介绍了“提取”数据的“手工”方式。
呈现
这个无需多说,主题(Theme)实现了Drupal内容的呈现方式。
CCK功用
准备
前面提到,每个节点都拥有共性。在新安装Drupal后,默认提供了两种类型的内容,Page和Story。可以通过路径admin/content/types/查看他们。Page和Story提供了哪些可编辑内容?标题Title,正文Body。
假如,我想发布一篇关于某本本电脑的文章,希望包含电脑本本图片、本本配置表、本本特性清单,还有本本的价格、订购地址以及反馈邮件,甚至销售本本商家的地址,我该如何处理呢?
最简单的办法,装个FCKeditor一类的可视化编辑器,像在Word中一样,进行上述内容的录入、排版、保存、查看。有没有问题?当然没问题,但是也有很多问题(矛盾啊)。
在我们公司,很难找到一位可以保持前后同类word文档格式一致的同事。Word编辑有太大的随意性,无法控制保证上述各项内容录入的有效性是否完整录入,也无法控制设置格式的一致性——可能本本A的报价单使用表格样式,本本B则使用“价格:¥XXX”的文本形式。使用FCKeditor的问题与此类似,更重要的是,因为FCKeditor编辑的文章内容是一个整体,想要细一些的控制——比如只允许注册用户查看本本商家的地址和反馈邮件——是无法办到的。
CCK提供了另一种“复杂”的办法,你可以在“标题Title”、“正文Body”之外,为各内容类型提供各种字段(Field)级别的新内容条目,结合其他模块,可以进一步对这些字段进行控制,比如显示方式和访问方式(权限)。
扯的有些远,下面说说如何通过CCK设置一个本本类型的内容。开始之前请安装CCK模块以及部分CCK扩展模块,清单如下(其中加粗标注的部分模块是CCK自带的,它们应位于sites\all\modules\cck\modules。关于扩展模块的组织方式请查阅其他文章):

o cck 

o content_copy 

o content_permissions 

o fieldgroup 

o number 

o optionwidgets 

o text 

o userreference 

o imagefield 

o link 

o email 

o blockreference 

o cck_blocks 

o cck_fieldgroup_tabs 

o cck_formatters 

o commentreference 

CCK模块类型
前面罗列了一些常用(实际是在6.X下可用CCK模块还不多)的CCK模块,有必要说一下这些模块的类型。总的来说,CCK模块分为两类:字段类型类(链接、邮件地址等原生字段类型,xxx_reference等引用字段类型)和辅助类(控件类型和显示模式等)。字段类型模块就是用来提供对应类型的字段(汗~~),如果稍有了解数据库的就能明白。
CCK及其扩展模块提供原生字段如number数字、text文本、link链接、email邮件地址、imagefield图像等类型的,这些字段类型都按相应类型的保存实际数据到数据库中;
而引用类型的字段(大都包含reference字样)则可创建其他内容的引用,数据库中只建立一个映射。比如使用userreference,可以创建一个对用户的引用,把它作为购买本本的联系人;
辅助类模块则用来提供更丰富易用的控件类型,比如optionwidgets为文本提供了下拉选择、文本框、自动文本框等等空间模式,用于构建更适合的录入、显示模式;
显示模式的模块,比如cck_fieldgroup_tabs,可以为字段组(后面看图详细介绍)提供标签页的显示外观。cck_formatters,则可为数字指定小数位数的模式,很适合用在金额显示的场合中。cck_blocks可以将CCK字段提供为一个块,可灵活的进行其他应用(区块应用我了解有限,可以查看一下其他文章)。
创建各种类型的CCK字段
新建一个内容类型
前面的废话中,大致说明了CCK存在的价值,也说明了CCK是必须结合内容类型(Content types)来使用的。因为我们要以本本为例,所以新建一个叫做本本的内容类型。这部分比较简单,大致罗列一下步骤即可(暂时使用英文版本):

o 1、进入 admin/content/types 下,点击 » Add a new content type 新增一个内容类型; 

o 2、进入 admin/content/types/add 下,需要输入的信息为: Name: 本本;Type: benben;Title field label: 名称;Body field label:简介 ,其他暂时不管; 

o 3、点击保存内容类型按钮,保存我们创建的本本内容类型; 

保存完毕后我们位于 admin/content/types 下,如图所示:

操作(Operations)下面提供了几个可操作选项,其中增加字段(add field)与管理字段(manage fields)与我们的CCK直接相关,先增加字段。点击进入。
计划一下需要增加的字段及类型
兴冲冲的进来了,却不知道要填写什么...重新计划一下我们要增加的信息(字段)类型:

o 本本型号,文字类型的,比如我的Acer TravelMate 3280,还可以更细; 

o 本本外观,图片类型的,把本本的外观照贴上去; 

o 本本产地,文本类型的,本本可能是台湾产的; 

o 本本单价,数字类型的,比如5000.00元每台(我不能提供这个价格的TM3280...); 

o 本本特性,文本类型的,比如什么蓝牙什么无线一类的,比较长的一些列表; 

o 本本参数,文本类型的,一项一项的参数名称和参数数据; 

o 本本评价,评论引用类型的,用户对某个本本的评价,可以加进来(抱歉,我还没有测试是先加还是后加,或者是自动引用,后面确认...) 

o 生产厂商网址,网址类型的,提供生产厂商的网站地址; 

o 意见反馈邮箱,邮箱类型的,提供一个邮箱地址可以让用户进行反馈方面的邮件沟通。为了避免垃圾邮件的骚扰,我们控制一下这个信息的访问权限——只有注册用户才能看见,当然你可以进行一些其他的权限设置; 

 

当然还可以列更多,因为仅仅是个例子,也因为其他的问题,自己可以先去试试。
添加文本字段
我们已经在 admin/content/node-type/benben/add_field 页面下,如图所示录入下列信息:

字段名称(Field name)是用于机器识读的名称,因为作为字段类型保存,一旦设定后就不能更改,并且只接受小写英文字符、数字和下划线。所有字段名称以field_开头,总的名称字符数不得大于32(含field_部分);
字段标签(Label)是显示在编辑、浏览时用户友好的名称,希望最终的页面中这一项是什么样子,可以在这里指定;
字段类型(Field type)是存储数据到数据库中的数据类型,说起来有些拗口。简单的说,记事本只能打字,小画家只能画图,我们要根据需要显示的内容选择合适的数据类型。前面已经罗列,“型号”适合使用文本方式保存;
点击继续按钮进入下一步,关于字段类型(Field type)的其他选项后面陆续使用介绍。
添加文本字段
在这个页面中,我们需要设置该字段在创建时的控件类型(Widget type),如图所示,在这里还有机会更改字段标签:

安装上列CCK模块,我们使用文本类型时拥有如下类型的控件,我们选择单行文本框(Text Field)控件:

点击继续按钮到下一页 admin/content/node-type/benben/fields/field_benben_model ,我们会在这里完成field_benben_model字段的全部设置。
这是字段“field_benben_model ”的编辑页面,总共包含如下几个部分:

o 字段基本信息组(basic information) :这是我们前一步已经编辑完成的信息,包括 

o 字段标签(Label) 

o 控件类型(Widget type) 

o 更改基本信息按钮(Change basic information):如果需要更改,点击这个按钮即可。 

o 字段设置组(settings) :字段设置组仅影响用于本本这个内容类型的field_benben_model字段,包含如下选项: 

o 文本框大小(Size of textfield) 

o 默认值(Default value) 

o 显示分组(Display in group) 

o 帮助文本(Help text) 

o 全局设置组(Global settings) :全局设置组会影响所有引用field_benben_model字段的内容类型,包含如下选项: 

o 必须(Required)) 

o 值的数量(Number of values) 

o 文本处理方式(Text processing) 

o 最大长度(Maximum length) 

o 允许的值(Allowed values) 

说一下后两组的设置。字段设置组(settings)

文本框大小(Size of textfield):根据我们编辑界面显示的需要,可以为文本框指定宽度(以字符数计算),这个值不会影响最后网页显示的效果;
默认值(Default value):可以为字段指定默认值,我们有两种方式可以选择,直接录入和通过php代码获得,php代码具有更灵活强大的特性。需要注意的是,如果在后面的允许的值(Allowed values)中进行了设置,那么这里的默认值也只能在其中进行选择;
显示分组(Display in group):显示分组为多个字段在编辑、显示时提供了一种整理的手段。实质上是分组为组内的字段提供了一个DIV外框,并为DIV预置了一些显示形式,比如字段集、可折叠字段集、折叠的字段集或者标签页等。当然也可以通过CSS为这些DIV自行定义格式。现在还没有创建字段组,我们后面会进行具体操作;
帮助文本(Help text):需要按照什么要求、什么方式录入字段内容,可以在这里进行指定。帮助文本只出现在创建、编辑时的界面中,不会出现在最终显示的页面内;

全局设置组(Global settings)

必须(Required):前面我们有提到一种假设——我们希望录入时不漏掉某些重要信息——这里就是实现这种假设的途径。通过选中必须选项,操作员若提交时忘记录入该内容,则会收到一个错误提示并要求纠正。对于本本来说,型号是必须的;
值的数量(Number of values):一个具体的本本,应该只有一个型号,因此我们选择1。但如果是本本的靓照,那可能会有很多,比如6个角度的,那可以选择6。再或者,可能不确定已有照片的数量,由操作员自行决定,那么选择无限;
文本处理方式(Text processing):文本类型的字段可以有两种方式来处理,纯文本( Plain text)和可格式化的过滤文本(Filtered text (user selects input format))。对于型号这类信息来说,纯文本更适合。如果要想有段引用用户评价的内容,那么使用Filtered text更为适合;
最大长度(Maximum length):本本型号的字符数可能就18位,我们不能允许24位的型号存在,那么使用最大长度进行限制,设置为18,超过该字符数的内容在提交时会收到错误提示。可惜没有最小长度的选项,因为我们也不希望2位的错误型号存在,暂行的替代方式是,在帮助文本(Help text)中进行提示;
允许的值(Allowed values):如果要对输入内容进行限制,比如只允许输入今年新发布15款本本的型号,那么可以在这个清单中录入。操作员如果录入了去年的型号或者对手的型号,那么将收到错误提示并要求纠正。允许的值同样也提供php代码生成方式。
需要提醒的是,同时提供普通方式和php生成方式取值的输入区域,一旦使用了php代码,那么它将覆盖普通方式的设置。关于这两种方式录入的细节要求,可以阅读录入框下面的提示信息。
在上述步骤中,我们创建了第一个字段field_benben_model。点击了保存按钮我们会回到管理字段(Manage fields)页面下,我们现在可以继续添加其他预计的文本类型字段。

o 本本产地,文本类型的; 

o 本本特性,文本类型的; 

o 本本参数,文本类型的; 

文本类型的产地、特性、参数我们按照与型号基本相同的方式创建。稍有不同的是“特性、参数”,我选择了多行文本框(Text area(multiple rows))的控件形式(参阅第一部分中的截图)和“格式化”的文本处理方式——我想借用可视化编辑工具直接进行格式的设置。现在的管理字段界面看起来是这个样子。

现在我们来创建存储本本外观的字段,如前设定,是采用图片类型的。在CCK扩展模块中,6.x版本下有两个可选途径:imagefield、imceimage。这两个模块各具特点,imagefield具备丰富直观的设置界面,而imceimage结合imce模块,具备更强大的文件管理功能,这个根据需要来选用。
供选择参考的更细节一些的差别是:
imagefield特点是:

· imagefield可以指定上传图片最小分辨率、最大分辨率,可以指定单个上传图片文件最大文件大小、每个文章中总计最大的上传文件大小,还可以预先设置ALT文本和Title文本; 

· 结合token模块在设置字段时可以使用通配标记(token)为路径、ALT文本和Title文本指定预置设置。这些设置对于操作员编辑时是不可更改的,因而可以更好的保证上传的图像文件按照预定的方式存储、标记; 

· 但随之的问题是,每个上传的imagefield都是独立的记录,假如在多个文章中需要用到同一个图片,就需要多次上传,这是一个缺点。 

imceimage特点:

· imceimage特性不多,大部分功能如上传、调整大小、生成缩略图等主要由IMCE来完成,唯一的,对应imagefield的缺点,imceimage可以在配置的文件库中重复使用已有的图片,而不同重新上传。 

对于这两个模块的选择,我的个人建议是,需要固定出现的图片、无需重复利用的图片采用imagefield,比如本本的尺寸标记图;而可能需要重复利用的图片,使用imceimage,比如本本制造商的LOGO。
创建imagefield图像字段
大部分设置方式和文本类型的一致,没有特殊的地方抓图说明就是了,先是创建字段的第一步,如图:

· 

指定控件类型,imagefield只有image控件供选用。

· 

点击继续进入设置界面。图像类型的字段设置同样也是三组:基本信息、当前内容类型设置以及全局设置(关于当前内容类型设置和字段设置后面会有描述)。
当前内容类型设置各选项如下:

· 图像最小分辨率(Minimum resolution for Images) 

· 图像最大分辨率(Maximum resolution for Images) 

· 允许上传文件扩展名(Permitted upload file extensions) 

· 显示分组(Display in group) 

· 文件路径(File path) 

· 每个文件最大上传大小(Maximum upload size per file) 

· 每个节点最大上传大小(Maximum upload size per node) 

· 帮助文本(Help text) 

· 启用自定义ALT文本(Enable custom alternate text) 

· 默认ALT文本(Default ALT text) 

· 启用自定义Title文本(Enable custom title text) 

· 默认Title文本(Default Title text) 

其中显示分组和帮助文本域文本类型的一样,属于通用属性,不再描述。先看看下图中这些部分:

· 

图像最小分辨率、最大分辨率以WIDTHxHEIGHT (例如640x480)指定了允许上传、显示的图像尺寸,当小于指定尺寸时拒绝上传,大于指定尺寸时则自动调整尺寸至允许值。都设置为0则不做限制;
允许上传文件扩展名指定了允许的文件类型,均以空格间隔的扩展名作为标记。

· 

文件路径确定了图片上传后保存于"files" 的相对位置,您可以直接输入路径指定,也可以采用下面提供的标记(Token)自动生成,关于标记(Token)的介绍,可以直接查看其说明信息。我的设置为:benben\[uid]\[site-date],上传的图片将保存在"files" 文件夹下benben\用户ID\当前日期命名的文件夹内。

· 

每个文件最大上传大小和每个节点最大上传大小,可以对上传文件大小进行限制,如果留空最大大小是由php.ini设置最大上传限制确定的。我这里不做设置。

· 

当鼠标在图像上悬停片刻,会出现设置的ALT文本。我们在这里可以用两种方式来控制ALT文本的设置。启用自定义ALT文本,操作员创建图像时可以自定指定,默认ALT文本则使用标记(tokens)进行设置,用法同上。

· 

Ttile文本设置方式与ALT文本类似,不再赘述。

全局设置各选项如下:

· 必须(Required) 

· 值数量(Number of values) 

· 默认列表值(Default list value) 

· 处理列表值的方式(How should the list value be handled) 

· 

必须、值数量,略过不表;
默认列表值,Drupal为上传的图像提供了列表样式,即把图片附在文章末。这里你可以确定在这里是否使用该功能。选择罗列则出现在文末列表中,否则可选择隐藏;
处理列表值的方式,可以让用户为每个文件自行配置(User Configurable),也可以强制按照默认列表值来处理(Enforce Default)。
增加图像类字段的方式说完了,还有四个类型的需要处理,先休息一下。

· 本本单价,数字类型的; 

· 本本评价,评论引用类型的; 

· 生产厂商网址,网址类型的; 

· 意见反馈邮箱,邮箱类型的; 

创建数字、引用、网址、邮箱类型的字段
通过文本、图像类型字段的设置,我们可以看到一些CCK字段类型的共同点:

· 1、每个类型的字段都包含一组基本信息,即机器识读的“字段名称-FieldName”,用户识读的“标签-Label”,存储数据的“字段类型-Field type”以及处理数据录入的“控件类型-Widget type”。除标签、控件类型可以在创建后再次更改外,另外两项一旦设定就不能再变更,因此创建之前必须做好预期的设定。我个人的命名习惯是,通过下划线间隔,依次为内容类型、字段名、字段名分支。这会有一点例外,就是重复应用到多个内容类型的字段,不应采用这种命名方式; 

· 2、在针对具体内容类型私有设置中,则对字段“默认值-Default value”,字段的“显示分组-Display in group”以及“帮助文本-Help text”的信息进行设置,然后就是一些和字段类型相关的参数设置,比如图像(文件类)的存储路径、上传大小限制、命名规则等。对于这些与类型相关的设置选项,个人感觉主要在对这些类型的特点和应用需求的理解,比如,我们需要添加报价,作为应用于价格的数字类型字段,首先我想到的是保证价格的精确性,那就不能用整数类型了,再就是书写习惯,货币通常都是前缀货币符号,数字部分千位逗点分隔并保留两位小数的,这些需求都要在CCK字段的设置过程成给予确定(下一步CCK字段显示会再描述)。直接阅读这些字段各项设置的说明即可弄明白用法和注意事项,因为我们不是做说明书,就不一一列举了。 

· 3、全局设置组内的参数,是应用到所有引用了该字段的内容类型中的设置。如是否是“必要字段-Required”,“字段数据的个数-Number of values”以及“允许的值-Allowed values”等。再就是不同字段类型独有的公用属性。 

每个类型的字段都包含一组针对某个发生引用内容类型的私有设置,以及一组用于所有引用发生引用内容类型的全局设置。这是因为,在CCK2中,可在不同类型的内容中引用同一个字段。通过这种方式可以降低重复维护多个字段的投入,也可以降低数据库表的复杂程度(个人看法)——虽然这个方法貌似存在一些问题(最最最后面,会发一些“牢骚”说说CCK2、Views的长短处)。在本例中,可以假设还存在一个“报价”内容类型,也需要一个本本的图片,我们可以如下图那样,仅需一次点击就添加这个字段:

· 

添加完所有字段之后的管理字段界面如图,下一部分我们开始增加字段组(Add group)和字段显示(Display fields)的设置。

· 

创建、分配字段分组和字段排序
字段分组的作用第一部分已经说过了,创建、分配都比较简单。基于D6的Ajax特性,大多数操作由鼠标拖动即可完成。(相对于5.x手工指定权重的方式,D6拖动模式方便了很多,但是因屏蔽了具体的权重数值,因此可能造成新增模块字段显示顺序失控的问题。如果不明白我说的这点没有关系,我还没有确定造成这种情况的原因)
点击增加分组(Add group)进入分组创建页面,依次指定标签即组名(Label)、编辑时表单样式(Style)、编辑时帮助文本(Help text)以及节点显示时分组描述(Description)即可。
有两点需要提示。第一,建议组名新建时使用英文名称,建成后修改为中文,因为使用中文时创建的机器友好组名会以下划线替代,看上去有些怪异;第二,表单样式默认提供了三种类型即总是展开(always open)、可折叠(collapsible)和已折叠(collapsed),在加载cck_fieldgroup_tabs模块和Tabs模块后,还提供标签页样式。个人喜欢标签页样式,这样可以为节点编辑界面提供一个清爽、直观的环境。
在本例中,我们把之前创建的字段分为商务、技术两个部分,部分截图如下:
编辑字段分组的界面:

· 

完成字段分组和字段顺序的界面:

· 

配置字段显示(Display fields)
字段显示为字段最终的呈现样式提供了预处理功能(因为我们还可以进一步通过模板、CSS进行这些字段外观的设定),在对外观没有特别需要的情况下,默认提供了样式可以满足大部分要求。
CCK2的字段显示设置界面将可设置选项分为常规(General)、高级(Advanced)两类。在常规页面中,我们可以指定字段标签的显示方式为(位于上方、行内、隐藏),我们也可以为摘要和完整节点页面分别指定类型相关的样式——这是非常有用的功能,在摘要模式下,我们完全可以隐藏重要或非重要字段,这可以获得相对简洁的页面效果(但我不能确定,这种隐藏是否可以降低数据库查询量,我没有对这点进行测试),也可以为摘要页面和完整页面赋予不同的CSS样式。
在高级页面中,我们可以为RSS条目、搜索索引以及搜索结果指定不同的字段样式,非常灵活,至于有什么好处或坏处,自己想想或者试试就知道了。
具体的,字段的显示与字段的类型相关,比如图像类型的字段,可以有如下几种显示方式:普通文件、图像、链接到节点的图像、链接到图像文件的图像、图像文件的路径、图像文件的URL地址,或者干脆隐藏。

· 

文本类型、数值类型或者邮箱、评论、网址,都有自己可以设置的格式。我对本本的设置如图,您可以尝试一下其他的显示方式。

· 

基本上CCK的使用就是以上所述——还有最后一项,CCK字段的权限控制。在D5.X版本下,CCK的字段权限控制是一个独立模块,现在已经整合到CCK2,并完全融入系统统一的权限设置界面中(位于admin/user/permissions)。所有的字段都提供了查看(View)和编辑(Edit)两个权限,可以分配给不同的角色(Role)。我想CCK权限与系统权限管理界面合二为一唯一的好处的提供了统一的通道,但是弊病也在于,现在Drupal的权限管理界面有些低能(抱歉,我还没有改善它的能力啊),十几个字段、几个角色最终组合在一起的“点击量”还是非常吓人的。所以有时候我也在幻想CCK拥有一个界面独立的权限设置场所...
扯远了,CCK权限设置与其他模块、内容设置方式一致,就不再操作示范。在准备进入Views模块的使用介绍之前,我们来新建一个本本类型的节点,拿我最眼馋的Macbook pro来YY一下,看看我们的劳动成果。

· 

· 

· 

· 

· 

· 

贴图贴满,差不多就可以新开帖子开始Views了...

Views的口水开场白

开始Views的总结不是很容易,与CCK不同,CCK的应用反复在字段添加、编辑、设置之间,往返于多个页面,但其实过程是比较单一的,因为每个字段的处理都相对独立。Views,特别是Views2,在一个界面中完成了所有的工作,各个参数之间相互关联,在我看来,难度确实要高于CCK很多...

但Views确实是让人惊喜的,特别对于我这样的程序盲。尽管如上所说它拥有太多的关联的参数,但Views2提供了尽量友好的方式,来进行相应功能的设置。

因为Views是一组查询,所以,根据不同的主表(primary table)Views被分为节点Node、评论Comment、节点修订Node revision、文件File、术语Term、用户User几个类型。您希望抽取站内某些注册的用户信息并显示出来,那么选择Views应主要考虑 User类型。 Views2安装后提供了很多预置的Views,可以启用、编辑查看相应的设置。

Views是一整套工具,因此除了上述核心内容之外,还提供了数据输入、输出的工具,控制缓存、预览等功能的设置,以及提供对Views1版本的转换。

后面将以创建具体的内容为例,为我们之前的本本创建一系列的“视图”,具体需求后面描述。

插播一项关于View Reference模块的信息

View Reference是CCK模块,用来为节点提供Views的引用,就在今天(2008-Aug-30),View Reference发布了6.x-2.0版本。现在,View Reference终于增加了对arguments的支持(包括php代码模式的arguments)。这意味着Views的应用灵活性再进一步。

将Views与CCK结合,是Views应用的重要方式之一。

我们将可能存在的需求罗列一下,然后尝试使用Views来完成这些需求,最后再来看看,Views都为我们提供了什么。

关于本本的一些扩展需求

通过CCK模块,我们创建了符合展现一个“本本”所需要的相关信息,但最终,它们都以一篇文章的方式表现了出来。我们的客户不会仅仅满足于这种形式的表现,那么我们可以考虑通过如下的形式来表现这些产品:

· 本期主打,这是比较有意思的一个功能,我们最新的本本比如Macbook pro,或者按照某个规则指定的产品,将以独立的形式出现在首页顶部的某个位置,类似这个样子(抱歉,这不是Macbook):

· 分类产品,也是很典型的样式,比如我们按Macbook、MacBook air或者Macbook pro分类展现我们的新本本,前5款(或者更少/更多)将出现在这个分类产品列表里面,类似这个样式:

· 产品列表,对于客户快速查阅本本的型号、价格和规格,这个模式可能更方便,没有参考图,类似最常见的Excel电子表单。 

不好意思,拖的越来越久了...

需求分析——本期主打

从前面给出的本期主打样图来看,构成元素还是比较简单:一幅图片、三组文字(权且认为是简述、标题、摘要)以及一个More按钮。这些元素的关系也很简单,都是某主打产品节点信息的一部分。至于布局,按我的惯性理解,CSS可以完成大部分的布局需求,所以最后应该是以使用CSS润饰收尾的。

知道了这部分内容的构成,主要思路就很简单了:
1、抽取节点的内容(字段)——》2、设置基本布局——》3、CSS细节调整;
其中第1、2部分就是通过Views来实现的。
当然,我们还需要考虑其他的问题,才能最终满足实际应用,比如:

· 这项内容(本本)的状态,是否允许未发布的内容(本本)也显示出来? 

· 要查看(访问)这项内容,是否需要某些权限的许可(比如访客是否可以直接看到——当然)? 

· 再或者,以什么标准判定内容是“本期主打”? 

等等,这些方面的问题/需求,也大多能在Views中得到解决。

关子卖的够多了,下面开始进入具体的Views操作。

创建一个Views(定制视图)

快速创建一个Views

1. 进入 Administer › Site building › Views 页面(路径admin/build/views); 

2. 点击 Add 添加一个 Views,如图设置之后点击继续;

3. 进入Views编辑页面,各区域名称分别为如下所示,不求精确,仅进行辨识;

4. 在页面添加分析区下拉菜单处选择区块Block,然后点击增加显示(Add display); 

5. 在Views设置区Fields部分点击右上角的十字图标,开始添加字段,Views设置区下方将呈现如下设置界面;

6. 在字段组Group下拉框处,选择Content,点选如下几项;

o Content: Image: 外观 (field_benben_images); 

o Content: Text: 特性 (field_benben_feature); 

如图所示:

7. 在字段组Group下拉框处,再切换至Node,点选Node: Title,然后点击添加Add按钮; 

8. 紧接上步,将弹出一系列区块配置字段“Block: Configure field”的界面,一次设置以上步骤添加的字段并点击更新默认显示(Update default display),具体设施分别如下:

9. 分别对外观、特性、标题设置完毕后,Views设置区Fields部分如图所示:

10. 注意下面的实时预览(Live preview)终于出现了内容,刚才一些红色的警告信息也消失了:

11. 继续在Views设置区Filters部分添加如下Node: Type内容(过程与刚才添加字段相似):

12. 在紧接着的页面中按照如下设置进行配置,点击更新默认显示(Update default display):

13. 点击Views设置区下方的保存按钮保存设置,准备继续进一步调整——我们需要确保显示的产品是发布的,所以再增加一个节点发布状态(Node: Published)的过滤,并选择Published选项:

14. 我们还需要调整显示本本的数量,因为我们只需要1个型号显示在首页。点击基本设置(Basic settings)部分的显示条目数(Items to display),进行如下设置:

15. 问题来了,如何保证显示的这一个本本是我们的主打呢?可以有两种假设:

o 所有最新发布的本本就是最新主打; 

o 最新发布的标记有主打的本本是最新主打; 

第一种假设是比较牵强的,但是很好实现;第二种存在一个问题,那就是如何标记本本是否是主打产品。
这里我们只按照第一种假设为例进行示范。但是实现第二种的方法也比较简单,运用CCK增加一个本期主打字段,并将控件模式选择为选择框,然后再使用过滤器筛选就可以了。
但无论如何,这两种假设都需要一个顺序的问题,所以我们在排序规则(Sort criteria)处增加一项以发布时间为基准的排列,进行如下的设置:

我们选择了节点发布日期Node: Post date,当然也可以选择其他的一些参数。对于发布日期过滤器,设置排列顺序和精度两项参数:

16. 因为,我们创建的是区块Block,还需要为Block指定一个名称,然后我们才能在页面中添加这个区块,点击Block settings的None添加一个管理描述名称:

17. 点击保存按钮,然后我们去区块管理页面将我们的Views添加到需要的位置。比如首页的正文部分:

18. 最终的首页效果如图:

19. 注意先别喷,我知道现在的结果距离开始的设定实在相差太远:图片很大而且撑破布局、居然显示在页面底部、文字格式内容超多等等等等。这涉及两个需要解决的问题:主题区域(Theme region)的设置以及Views主题的设置。主题区域的设置属于模板相关的讨论,建议参阅葛大翻译的《Drupal 6.x 主题制作指南》。我们下面来看看Views的主题如何设置。 

Views的主题设置

在我看来,Views2这个版本主题设定的手段先进了许多,直接利用Views的设定,配合CCS可以完成很深很细的外观控制。点击基本设置中的“Theme: Information”,会显示如下的界面:

 

 

---------------------------------------------END----------------------------------------------

 

使用Drupal 6 Views Module系列(一)

Drupal是一套內容管理系統,本系列文章將以View模組實際示範網站建置,除展示其驚人的彈性之外,也希望能稍微降低其學習門檻,引領讀者們進入Drupal的世界。

假设我们现在想做出一个功能:让使用者建立歌词及歌手资料库,歌手及歌曲间需要建立reference关係(也许不是一对一),建立起来后需要做不同的显示页面。这时我们就需要Drupal的外挂明星模组CCK及Views来帮助我们囉。 

简单来说,CCK(Content Construction Kit)提供的服务就是让我们可以建立自订表单,并且可以在表单视需要添加各种资料输入栏位,包括一些基本的资料型态(ex:integer、text、date等)、以及一些常见的表单元素(ex:textfield、checkbox、radio 等)。最棒的是还可以建立资料参照(reference)。以前述例子来说,我们可以分别建立歌手与歌曲资料输入表单(两种内容类型),然后将歌手的作品栏位定义成参照到歌曲这个内容类型即可。CCK的工作到此完成。当资料库中渐渐累积了一些资料之后,我们会对系统预设的显示方式渐渐感到有所不足,这时就换到Views模组上场了。Views模组目前最新的版本是搭配Drupal 6 的Views 2。

什麽是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 为「类型」,data type为Text。栏位定义如下图:


图表 1栏位定义

第2个内容类型artist的title栏位label是「歌手」,body栏位的label是「歌手简介」;CCK栏位field_created_song 之label为「创作」,data type为Node reference,并与song这个内容类型产生关联。栏位定义如下图:


图表 2建立关联(Node Reference)

内容类型定义完成后,先建立几篇关于song的文章,然后再建立几个歌手的资料,歌手的创作栏位中可以单选或複选(也就是一个歌手可以有多个创作)。你可以到最新文章中检视刚才所发表的几篇文章。

现在请选择「管理→网站建置→Views」,按下Add Tab来建立一个新的View叫做music,因为我们要产生显示的是内容相关的节点,故View Type请选择内容节点。


图表 3建立music View

按下Next后,即进入configure阶段。由于可设定的项目太多且複杂,我先将画面分成三大部分:① Add Display、②对应之Display Settings、③预览。Views 2的设定画面如下:


图表 4 configure View

在①中箭头标示目前指在Defaults display,表示我们可以先在②做一些基本且共通的设定,比如标题或是欲显示的栏位(Fields),后续当然可以针对不同的display做修改。我们在Basic settings 中设定标题为「我的音乐宝库」,并将Style 设为表格,按下储存,此时会有warning说明尚未设定显示之栏位,所以请于Fields 区块按下就可以新增栏位,画面显示如下:


图表 5加入栏位(Add fileds)

在社群(group)的下拉式选单中,请选择内容节点,并勾选标题及类型,按下Add,记得有变更任何设定时都要储存。一般来说,我们使用views module都倾向建立页面(page)或是区块(block)等基本的display。 

 

现在我们要製作一个名称为All music posts page的display,先在①中下拉式选单选择页面,然后按下Add display新增。前面提过每一个display可以有个别的设定,但预设会从defaults display先取出基本设定,然后,我们再依需求按下override button 来新增或修改目前这个display设定。所以现在请按照下列顺序操作:

    1. Basic settings→修改名称。

2. Page settings→设定路径。这是最重要的步骤,若无path,此display无法建立。在同一个view中的不同displays可以设定相同的path,因此若再搭配Basic settings中Access设定限制,我们可以让不同权限的使用者经由相同的path看到不同程度的内容。


图表 6 Page setting

3. Page settings→建立选单(若希望让user可以从网站导览中快速存取此display时)。


图表 7 Page Setting /建立选单

4. 若设定为menu tab类型,经由设定可以做出tabs的效果如下图(我们先将基本操作完成,下次再介绍此类进阶功能):

5. 在②按下Fields→按下override→更新。此时针对Fields的所有增删及修改都不会动到default display的设定,且会出现 (新增栏位)及↑↓(栏位排序用),所以按下标题作修改(勾选Link this field to its node):


图表 8 Link this field to its node

新增内容节点的post date栏位并设定如后,Date format下拉式选单请选自订,Custom date format文字输入格式请写Y/m/d (输出格式会是2009/02/05),按下更新后储存。


图表 9 Custom date format 

最后Fields设定会成为如右图示: 

图表 10 Fields

 

6. 在②按下过滤器(filter)→按下override→更新→按下过滤器上的 + 新增一个内容节点:类型,选择只显示Artist及Song这2个内容类型的文章。设定方式如下:


图表 11 内容型态过滤

7. Expose也是一个进阶的功能,提供user自行在网页上筛选欲显示的内容类型文章。 

8. 再回到Basic settings→设定style→按下override→更新。现在我们要针对表格做设定,所以请按下「Style:表格」右侧的Change settings for this style button。


图表 12 Basic settings / Style

9. 在Style:表格设定画面中,请于Sortable column勾选「名称」及「张贴日期」,并设定Default Sort栏位是「名称」。Grouping field设定是将某个field设为group by的依据,这个field会以table header方式显示,相关的资料会显示于header下。在此我们不设任何Grouping field,而是以一个完整table显示。做完设定请按下更新。


图表 13 Style options

10. Basic settings→Use pager 设为是→Items per page 设为10。这个设定会形成分页的效果,亦即每一页只显示10笔资料,最后请按下储存,这个display 的设定才算完成。

11. 在Basic settings中,我们再做些说明

    11.1 Access:authenticated user 是指所有认证过的user经由URL path或者导览选单皆可看到目前这个display。因此若要限制部分使用者浏览,可以经由此设定所允许的角色(Role)或权限。


图表 14 存取设定

11.2 页首、页尾及Empty text则是做文字说明,比如筛选出来无任何资料显示时,让user看到些说明,而不是只有空白的网页。 

11.3 Theme:Information会显示此view所使用的templates档桉,所以我们可以针对需求修改这些档桉,档桉内容是CSS及PHP程式码,当然这也是属于进阶的功能。

12. 终于要说到画面③Live preview,请在Display下拉式选单中选取All music posts page,并按下预览:画面的上半部是预览结果,下半部则是SQL Query语法及执行的时间。这部份的资讯可以提供程式师判断目前设定是否会耗去太多系统资源,可以再做修正。

13. 现在来看执行结果: 

请登入drupal,在画面左边的导览会出现「音乐宝库」的menu link,按下后画面中间即为All music posts page的display。使用者可以click「名称」或「张贴日期」来重新排列资料序,下端则有分页的连结。若想要看详细文章内容,只需点选歌曲或歌手名称即进入该篇文章。另外,使用者也可以直接于网址列type路径http://yoursite.com/drupal/?q=allmusic,也会得到相同显示。

What else can we do next?

先回到music view编辑画面,在区域①的下拉式选单中至少还有Feed、区块(Block)及附加档桉(Attachment)还没加入;而在区域②中的Arguments,Relationships及Sort Criteria也都是None defined。由此看来我们的Views还有将近三分之二的功能没开发,我们将在本系列(二)中为大家介绍这些强大的功能及使用方式,敬请期待。最后设定页面之画面如下:

CCK的介绍及使用

下面我将简单向大家介绍些CCk和分享下一个简单使用的案例,让大家更好的熟悉CCk。

CCK模块,是Content Creation Kit的缩写。主要用于为站点建立一个新的特定用途的内容类型的模块组。可以很方便的通过web页面来创建设定你想要使用的内容类型,及其呈现的方式。比如像下面这些例子:

l 电影:电影标题,导演,制作公司,发布时间,星级等等;

l 会议:会议主题,开始时间,结束时间,组织者,讨论点,地点等等;

l 书籍:书名,作者,出版时间,出版社等等。

CCK模块除了内建的字段类型外,还有很多可以自定义内容类型的字段类型,日期,email,图片,运算,星级评定,幻灯片等。使用这些特定字段类型,你就可以创建自己想要的。

简单的介绍完后,是不是已经感到CCK模块的强大了。下面我就分享一个小小的使用案例:“Drupal秀”内容类型的创建。

显然,Drupal秀的用途就是秀下你的Drupal站点了。只需要用户按照内容格式的输入,就可以在本站点上来秀下你的Drupal网站。

效果展示:http://www.cmstheme.org/node/add/drupal

这是一个很简使用,Drupal秀的需求是:

Drupal秀:网站标题,Url标题,URL,网站简介。如图界面:

如图: Drupal秀提交界面

 

首先,安装CCK模块和CCK field模块。

 

CCK下载地址:http://drupal.org/project/cck

 

安装CCK模块与其他模块安装是一样。此模块包有一系列的模块,可以单独的启用,如下截图:

如图:CCk模块组

 

选择自己需要的模块进行启用,如图。

 

点击“内容管理》内容类型”界面,点击添加新的内容类型,如下图设置(可根据自己的需要进行设置):

如图3

 

接着点击“提交表单设置”,将原来的设置替换成如图所示:

如图4

 

其他选项默认即可,点击保存。这样,一个雏形的Drupal秀内容类型,就有了。下边接着将其设置完整吧。

 

点击“manage fields”,进入设置界面。其实,现在在这里只需要添加网站地址(URL)字段,其他的默认的就可以了。如图设置

 

 

点击保存,进入下一界面,设置可根据自己的需求来定。这里我使用默认的即可。点击保存后,将其调整下顺序,如图所示:

 

 

 如图6

 

Ok,到这Drupal秀的内容类型就建成了。只要熟悉了CCK功能设置,使用起来会大有帮助的。这里只是简单的介绍了下,以后会有更详细的说明。

————————————END——————————————


drupal的views学习

一:简介(这里好象是VIEWS1版本的)

views 的核心功能就是帮助你改变 node 的组织与显示模式。举几个可能会用到 views 的例子:

你希望首页的内容以不同的顺序显示。譬如不是按照从新到旧的顺序,而是按照“热门”程度(浏览次数,评论数目); 
你希望改变 taxonomy/term 的展现方式。当你点开某个 term 的时候,你看到的是这个 term 下内容的按照张贴顺修的列表,譬如你想改变这个列表的显示方式。默认的显示方式是“题目加摘要”,但是你希望它是以table的形式一目了然的显示所有必要的信息; 
你想用 /tracker 来跟踪最新的帖子,但是只希望某些类型的帖子显示(譬如,你的CMS站是销售某种产品的,你只希望在 tracker 中显示最新添加的产品,而不包括论坛的讨论贴) 
你想在区块(block)中显示某个分类下的最新的帖子; 
你想为用户现实“未读的论坛帖子”; 
你希望有一个类似“按月归档”的区块,可以方便访客按照时间来查询帖子;

使用了 cck + views 之后,再加上一些简单的主题与css的技巧,基本上没有 drupal 仿造不出来的网站,也就是说你的毛坯房也可以改造为希尔顿。

二、概述

views 模块自带了四个常用的视图,分别是:“最新评论”,“首页”,“分类词”和“最新文章”。

如果你输出的是页面,则在 URL 下显示的就是你的页面的地址,注意,它可以覆盖已有的页面,譬如例子里的 taxonomy/term/$arg ,这里的 $arg 是一个 argument,这里我定义的是 term 的 id,这样它就可以覆盖所有 taxonomy/term 下的显示方式,类似个通配符,把诸如 taxonomy/term/1 ; taxonomy/term/2 等等都按照我定义的方式来显示。

三、解剖

Views 的工作流程可以用下图表示:

在明白这个流程后,让我们来解剖一个 Views 的实例,使用的样本是 Views 模块自带的 Tracker 视图。Drupal 的 Tracker 通常是 Tracker 模块提供,可以通过 yoursite.com/tracker 来跟踪网站最新的内容。但是有了 Views 模块,我们可以在不启动 Tracker 模块的情况下实现 Tracker 的效果。

在视图(教程中的 views 暂译为“视图”)的管理界面,找到 Default Views 是 tracker, titile 是 Recent Post 的那个视图,点击后面的 “add”,进入编辑状态。

Basic Information 项下,设置名称,访问权限和描述。名称的设置参加教程(二),访问权限和描述按照惯例。

Page 项下第一个选项 Provide Page View ,当你希望输出的结果是页面是勾选这个选项;第二个选项 URL,则是设置访问这个页面的地址,理论上讲,你可以设置任何地址,但是记住,需要使用相对地址,并且首尾不要用 “/”。譬如你想把访问的地址定义在 http://mysite.com/new ,那么这儿,你只需要填写 new 就可以了。这里,因为是在模仿 Tracker 的效果,所以URL 的地址也设置为 tracker。注意,如果 mysite.com/tracker 这个地址是系统已有的(譬如你启动了 tracker 模块),那么你定义的视图会覆盖系统已有的显示方式。另外,这个 URL 可以使用通配符变量,也就是 $arg, 这个变量的定义在下面讲。再往下,View Type, 提供了五种常用的视图显示方式:全文,摘要,表格显示,列表显示,和显示 RSS。Tracker 模块提供的默认显示方式就是 表格显示,所以这里我们也选择 Table View。再接下来的 Title,就是这个页面的标题,这里我们的定义为 Recent Posts,注意这个标题也可以使用 $arg, 譬如你定义的是一个分类的显示页面,你希望这个页面的标题是分类的名称。再往下的,use pager 这个选项决定是否使用分页显示,当结果比较多的时候,建议选择这个选项,Breadcrumb trail should not include "Home" 这个选项决定你页面左上方路径的现实方式,是否包括“home”;Node per page ,如果选择了分页显是,这里可以定义每页显示多少个结果;Header 和 Footer,如果需要可以输入相应的页首和页脚信息;Empty Text 是你定义的 Views 返回的结果为 0 时显示的内容,譬如你定义了某个 term 的视图,但是这个 term 下没有文章,那么你可以在这里定义返回的结果。一般使用默认就可以了。menu 选项,第一个选项 Provide Menu决定是否为这个页面定义一个菜单,要和紧接的 Provide Menu as Tab 配合使用。如果选择提供菜单,但是不作为 Tab,那么这个页面的连接就会在 Drupal 的主菜单系统中显示,也就是在边栏里的导航菜单中显示;如果选择作为Tab,这不在边栏中显示,而在页面的上方作为标签显示。如果作为标签显示,那么 Make Default Menu Tab 这个选项则是确定是否把现在这个视图作为这个路径地址的默认视图,因为存在标签,所以一个基本路径地址可能有不同页面,譬如 tracker 模块提供的页面中,上面有“最新文章”和“我的最新文章”两个标签,默认的显示“最新文章”这个标签,关于如何设置多 tab 显示的方式,我们以后还要讲到(在我们的第一个实例里),这里从略。Tab Weigth 用来调整 tab 的顺序;Menu Title 定义这个页面在系统菜单中的名称,如果什么都不填则默认值为页面的名称。

Block 项这里什么都不用设置,因为我们定义的是一个页面而不是一个block。block的定义方式和 page 差不多,不同的是输出的结果是 block 而不是页面。

再往下就是最有趣的字段,$arg 和 过滤器设置了。我们下次再说。

Field 项是 views 模块的最终要部分,直接控制着输出视图的显示方式。一个典型的 tracker 页面由以下部分组成:

页面类型 标题 作者 回复数目 最新回复时间

可以参看 Drupal China 的 tracker 范例。所以,在 field 项里,我们需要做的就是按照需求选取字段(field)。第一个要选取的就是 页面类型。在 Add Field 菜单中找到 Node:Type 点击添加,Node:Type 就出现在 field 项下了,然后我们要做一些设置, Label 就是这一项在列表中的显示名称,填入“页面类型”(英文版的 views 默认的是 Type)即可。Sortable 是设定是否按照这个字段排序,这里选择 no,如果选择 yes ,那么在 Default Sort 那里要选择默认的排序方式。

同样的,我们可以确定第二个 “标题”字段,添加 Node: Title 即可,在 Handler 设定下,我们选择 with updated mark,这样如果内容更新,标题上就会显示 “new”或者“新”的标示。Option 设置为 “as link”,这样就可以生成链接了,注意,不是每个字段(field)都会有这样的 option,譬如 CCK 有一个辅助模块 Image Field,在views中并没有 as link 的选项,非常不方便,必须通过 patch 才能达到目的。

添加完所有的 field,工程就完成了大半了,每个字段的最右边都有操作的图标,你可以方便的上移或者下移以及删除这个字段。另外要注意的是,这里所有的 sortable 选项全部都是 No,这点对于网站的优化很重要,如果某个字段允许排序,那么访客在点击它的时候,事实上是对整个网站的内容进行排序,这样不仅慢而且浪费网站资源,但是如果不让字段排序,如何能做到显示“最新”文章呢?这个马上就要说到。

Field 项下是 Argument 项,在这里,不需要什么设置。

再向下是 Filter 项,它的作用是过滤掉你不想显示的内容,譬如这里,我们只希望发布的内容显示,所以我们添加 Node:Published 在 Operator 中选择 euqals (等于),value 中选择 yes。在你设计的任何试图中,通常都要添加这个 filter ,不然没有发表的内容也会被显示出来。注意,在filter 的右端还有一个 expose 选项,如果选择这个,那么这个 filter 就会变成 exposed filter ,也就是这个 filter 是“暴露”给访客的,访客可以使用这个filter 来过滤内容。

Filters 项下面就是 exposed filters 项,这里,你可以定义任何你向让访客使用的过滤器。

最后一项是 Sort Criteria,也就是排序标准,在这里我们可以设置默认的排序方式(这里设置排序的好处就是可以不把某个字段的属性设置为可排序,正如上文所述)。添加 “Comment: Last Comment Date”,order 设置为降序,option设置为 normal 即可,其他的option规定了时间选择的最小单位。

OK,到这里,整个 tracker 部分就讲完了,点击 mysite.com/tracker 是不是出现了最新文章的列表?呵呵,不过仔细一看,发现和tracker模块提供的tracker界面相比还了少些什么,对了,就是“所有最新文章”和“ 我的最新文章”这两个标签。我们现在用 views 做出的 tracker 只有所有的最新文章。如何在同一个页面添加不同的标签呢?下次再说。

继续我们解剖 tracker 视图的教程。我们知道 Tracker 模块提供的 trakcer 视图,除了能显示所有的最新文章外,还能显示已登录用户的所有文章,这两项内容在 tracker 页面下的两个标签(Tab)中显示。其实,views 模块可以方便帮助我们制作标签。首先我们创建“所有最新文章”标签下的视图。这个与我们在上两个教程中讨论的 trakcer 视图的设置基本相同,但是需要做一个小的更改,首先把 url 改为 tracker/all ;同时,按照习惯,把这个 views 的名称命名为 tracker_all。然后在 menu 项下勾选: provide menu; provide menu as tab; make default menu tab。这是在告诉 views 模块,这个视图提供菜单,菜单输出为标签,把这个标签当作默认显示的标签。

然后我们需要创建 “我的文章”这个标签,首先 url 设定为 tracker/mine (这个其实随意,你把它设定为 tracker/mypost 也可以),名称命名为 tracker_mine ,同样勾选 provide menu; provide menu as tab,但是不要勾选 make default tab,因为只能有一个默认的显示。此外,如果想控制两个标签的先后顺序,可以通过 tab weight 来设定。Tab title 填写为 “My Posts”。因为这个视图是只显示现在登入的这个用户的,所以我们要过滤掉其它的作者的文章,这就需要设定 filter 了,在 filter 那里新添加一个 Node: Author is Current User 把它设定为 "Is Equal to " "currently logged in user" 即可。然后保存。工作完成。

现在通过 yoursite.com/tracker 来访问你的视图,你就可以看到两个标签页面了,呵呵,很方便吧!

区块与 argument 的使用

通过利用 views 模块制作“按月归档”的页面和区块(block)来讨论一下 argument 的使用。Drupal 其实有按月归档这个模块,叫做 Monthly Archive , 是 Mars 做的,不过用 views 模块实现这样的功能也不难。我的 blog 的侧边栏就是一个实例,点击 “blog 归档” 下面的“更多”就可以进入按月归档的页面,看到所有 blog 内容的档案。

开工。 在 views 的管理界面下点击“add”标签,添加新的视图。名称是 Archive ,给所有的访客访问的权限,描述随意。然后“页面”项下选择 provide page view,提供页面视图, url 按照惯例是 archive。 viwe type 随意,我这里选择的是习惯的 teaser list,标题“按月归档”。使用 pager (分页)。其它的默认即可。

然后在“区块”项下选择 provide block,提供区块。view type 考虑到是在侧边栏现实,所以选择 List view (列表显示)。区块的标题“Blog 归档”,你想继续叫“按月归档”也行。一个区块现实的页面链接数,5 个。然后选择 [more] link。

Fields项下,只需要添加一个字段(field),Node:Title。Option 设为 As Link,不可sort。这里定义的是最基层的视图的显示,譬如这个链接下的显示:http://www.kzeng.info/archive/200704 。

过滤器项下,第一个过滤器, Node: Published 只选择发布的内容;第二个过滤器, Node: Type 只选择 Blog entry ,当然你可以按照你的需要选择显示的类型。

Sort项下选择 Node: Created Time 按照降序排列。

最后让我们来看 argument 项,这个argument实际上提供了按月归档的列表,是高一层的视图,这里选择 Node: Posted Month + Year ,然后 summary, sorted descending,标题“按月归档”。搞定。简单的说,这个 argument 帮助生成了子页面的链接,非常的方便。

按月归档的页面可以在 yoursite.com/archive 下访问,而相应的区块需要在区块管理中启用。你可以适当的更改 CSS 来美化这个列表。

---------------------------END——————————————————

 

drupal教程 views模块教程(显示同一类型的文章)

 

我想点击“技术文章”的时候,把我的心得体会的列表都能显示出来。这个用到了views模块(这里好像是views1)。

具体的操作如下:

1、先创建一个路径为tech的内容类型(管理》内容管理》内容类型)。

图片效果如下:

2、在上面创建的内容类型下建立一篇文章(为了看显示效果)

3、进入views模块(管理》站点创建》views),选择“add”,准备添加内容

图片效果:

   1)在“Basic Information”选项卡先添加名称“tech”

   2)在“页面”选项卡里,选中“Provide Page View ”,表示将有一个页面来显示;添加“URL”为tech,这是创建技术文章内容类型时设置的路径;“view type”为“list view”,列表显示页面。

效果如图:

3)在“fields”选项卡选择显示的内容,选择“Node: Title”,展示node的标题

4)在“过滤器”选项卡选择需要显示的"node:type",这里选择“tech”这个新创建的node类型

5)在“Sort Criteria”选项卡选择需要排序的条件,这里选择“created time”,表示按照创建时间排序

经过以上步骤,保存。

再点击查看“技术文章”,就是你原来添加的那篇文章了。

============END=============

使用views创建一个最新文章列表区块

使用drupal的Views模块,可以非常容易的创建一个最新文章列表区块。略加变通,你就可以创建最新评论列表区块,如果安装了评价模块(rating module)的话,你也可以按照分数高低来对节点排序。这里所讲的是用于Drupal5.X。在Drupal 6.X可能会有所不同。

 步骤1 – 安装Views

下载Views模块。按照指示来安装它。

步骤2 – 区块标题

决定这个区块的名称。

 步骤3 – 节点数目

决定你想在区块中放置几个节点。你也可能需要决定要放置哪些信息。在我们这个drupal简明教程中,我们将仅仅列出节点标题,当然你也可以把teaser(摘要)也列列出来。要展示的单个信息的总量将会影响到你的节点数目,如果只列出标题的话,展示的节点数目就会多一些。

步骤4 – 开始使用Views

登录到你drupal站点的后台管理界面,导航到Site Building > Views。

步骤5 – 区块基本信息

当你来到Views的管理页面以互,点击添加。然后输入基本信息-名称,描述,和访问权限。名称必须是字母数字字符,外加下划线可用,不能包含其它特殊字符。

 步骤5 – 基本的区块设置

创建区块是非常容易的。在当前页面,你往下拉,直到你看到带有超链接的"Block"。点击它就会显示出区块部分。

在区块部分的顶部,你会看到一个复选框"Provide Block",选中它。这意味着Views将为你创建一个区块。

现在,我们得告诉Views如何展示我们的输出。你有多个选项,但是在这里,我们选用"list View"。这是由于我们仅仅想列出节点标题。如果你想列出更多信息的话,你可以使用"Teaser List"来给出标题和teaser.所以,在"List Type"上我们将选择"List View"。

最后,你需要指出列表中节点的数目。在"Nodes per Block"中填入你想要的数字。如果你使用的是"Denver"主题的话,要将列表放在顶部区域的话,你可能选择5个。如果想放在左栏或者右栏的话,你是以使用10个或者更多。这也依赖于你内容的更新速度。

 步骤7 – 选择字段

完成了上面的步骤以后,你需要告诉views你想展示哪些字段。在"Block"部分下面就是"Fields"部分。点击"Fields"来打开它。然后选择你要添加的字段。然后点击"Fields"按钮。在我们的这个例子中,我们想选择节点的标题。所以我们选择"Node : Title"。如果你愿意的话,你可以为它加个标签,比如"Newest Posts" 或者"Latest News"。

 步骤8 – 过滤

你可能不想在最近发布中展示所有的东西。你可以对它进行限制。为此,你需要找到页面的"Filters"部分。点击"Filters"打开它,这样就显示出来了过滤选项。在这里,你可以选择在区块中展示的节点类型。在"Add Filer"中选择"Node : Type",然后点击"Add Filter"按钮。操作符你需要选择"Is One Of",接下来,你需要在"Value"下拉列表中选出要用的节点类型。

 步骤9 – 保存View。做完以后,保存你的View。

 步骤10 – 展示区块

导航到Site Building > Blocks。在这里你将看到所有的区块。找到你最新创建的,并为它选择要放置的区域。根据你主题的不同,你的区域可多可少。

指定了区域以后,设置重量(weight)。重量越大,区块在区域中所处的位置越往后。

设置完重量以后,配置区块。你可以决定哪些人可以看到区块,以及区块展示在哪些页面.一个放置最新文章列表的最好的地方是首页.为了实现这一点,你需要找出要这些页面,选择"Show only on selected pages"选项,然后把你的页面输入到文本框中.

当你为这个区块完成了所有的配置以后,保存区块.

 注意:你可以使用这种方法以其它的方式展示你的内容.你可以展示评价最高的内容或者最近的评论.

你也可能像使用一个特定的页面,来列出你的评价最高的或者最新的25篇文章.有专门的模块能帮你实现这一点.你可以使用"Insert View" 或者"Viewfield"将views放到页面中。

******************************** END *****************************************

综合首页VIEWS开发问题

drupal默认的是 q=node,内容是罗列了各个node摘要信息。

那么比如我要定制首页,框架如下:

area1 | area2
area3 | area4 

是一个2*2 的块,每个块呢,列出5个node的标题,并且可以点击。

请问用什么方案实现比较理想?

用views模块可以

专门写个page-front.tpl.php文件,然后用区块定义

首先定义 4个region(区域) 。
然后用views (相当于sql 语句)生产出5个node的列表的block。
再然后分别在把block(就是块),放到那4个区域。
结束。

views可以将内容做成区块显示,但是布局要看css功底了

***************************************************************************************

Drupal Views2模块使用指南

View界面说明

下载 (18.66 KB)

2009-1-1 18:46

首先看到的是views列表页面,列出所有创建的views规则。安装以后,系统已经默认创建了很多规则,处于未启用状态,点击右侧的Enable启用该View规则。
系统默认的有: 
archive (按月的文章列表)
backlinks 返回链接
comments_recent  最新评论
frontpage
glossary  以词汇表的形式索引所有内容
popular 热门文章
taxonomy_term
tracker
利用这些默认设置的views规则我们已经可以实现很多功能了,例如热门文章,最新评论,archive等等。很多人抱怨Drupal安装以后功能太少,还没有wordpress功能多,安装Views以后,利用这些基本可以做一个大的Blog出来了。

创建新的view
下面重点介绍如何创建新的views规则。
1.点击ADD标签开始添加新的views,界面如下图:

下载 (16.6 KB)

2009-1-1 20:24

View type: 也就是在前面views列表的图中看到的节点 评论等,指这个views对应什么类型的,例如设置为评论那么调用出来的就是评论里面的内容。其实也就是设置你的这些查询获取的是什么类型的内容。
2.设置好以后点击next 进入view设置界面:
为了方便,按照官方教程的图片来说明。此图片都对每一项内容进行了编号,方便我们说明。

下载 (83.54 KB)

2009-1-1 18:36


第一部分,defaults 显示的是此view的默认设置。在下拉列表中选择显示形式,然后点击Add Display就可以增加表现形式,也就是你的这个view以什么形式表现出来,可以设置多种表现形式。最常用的是页面和block(区块)。页面就是view显示在一个页面上,通过这个页面的路径就可以访问,而区块则增加一个新的区块,在区块设置中可以任意调用到任何地方。其他显示类型还有附件,feed。
右侧的查询条件设置有点乱,等我整理好再发。如果大概能看懂英语的话,可以随意编辑测试几次,很快就会明白都是什么意思。

**************************************END*********************************************

首頁=Panels2+Views2

1. 首先,請您先確認一下是否已經安裝完成了Views 2與Panels 2的模組,並且已經啟動運行了。 

2. 接下來就是到Views的管理介面(admin/build/views)將兩個等等我們會用到的views給啟用,如圖所圈出的。

3. 啟用以後,請到Panels的Panel Pages頁面(admin/panels/panel-page)

4. 在我們新增panel以前,我們需要先確認Panels模組是否能夠"瞧"見我們將要添加的內容。因此請您點選畫面中上方的"設定(Settings)"按鈕。 

5. 然後呢,請您勾選畫面中所有的選項,就好像...

6. 勾選完成後,請給他"儲存"起來。 

7. 現在我們可以開始新增一個panel了,請您點擊畫面中"新增(Add)"按鈕來新增一個panel。 

8. 首先您看到的畫面是選擇佈局(layout),請您選擇彈性布局(Flexible), 這個佈局能讓我們靈活的修改。

9. 然後來到設定的頁面,請參考下圖的內容進行設定:
設定好後,請您點擊"Save and proceed"進行下一步。

10. 來到panel layout設定了。看到畫面時是不是讓那麼一堆設定給鎮住了?其實我們現在只需要修改一些地方,其他的我們暫時將他當做空氣。現在我們需要兩個欄位(一左一右),其中,左邊的欄位佔了80%,右邊20%。如下的設定畫面。

11. 如上圖,我們修改了Rows:3->1, Columns:1->2, Column titles,:Top->左欄,右欄。修改完成後存(Save)起來,我們還需要進行比例的修改。

12. 如紅框框所示,我們將左右兩邊的欄位比例調為80:20。修改完畢後,請您按下"Save and proceed",儲存並進行下一步。 

13. 現在來到了Advanced的設定頁面。在這裡我們只需要做兩個動作:勾選Views 將產生「選單」(Provide Menu) 以及標籤次序(Tab Weight: ):-10,編輯完成我們依舊是按下"Save and proceed",儲存並進行下一步。

14. 接下來您會到Context的設定頁面,因為在這個範例中我們不涉及到參數方面的設定,所以請直接按下"Save and proceed",儲存並進行下一步。 

15. 好了,現在我可以開始添加pane到這個panel中了,首先,請您先在左欄的方框中找到"+"的按鈕。

16. 在接下來的對話框中,我們將選擇"Views管理"下面的frontpage page。這也就是我們剛剛啟動的那個view。

17. 在接下來的畫面中,我們只需要勾選-'Link title to view','Provide a "more" link that links to the view'兩選項。勾好後卷到最下面按下'Add pane'。

18. 左欄的pane我們算是添加完畢了,現在我們到右欄添加pane,作法與左欄一樣,按下"+"按鈕來添加pane。 

19. 這次我們將要添加'新會員(Who's new)',請如圖所示的添加。

20. 接下來的畫面我們只需要直接按下"Add pane"就行。 

21. 緊接著,我們在右欄在新增一個"線上使用者(Who's online)"。

22. 然後畫面一樣我們只需要點下'Add pane'就行了。 

23. 添加了兩個pane之後,我們在添加一個在右欄。這次我們選擇Views管理下面的archive:Block

24. 然後的畫面中,請勾選 'Link title to view'後,在按下最下面的'Add pane'按鈕。

25. 最後,請再右欄添加一個pane,這次我們選擇'最新回應(Recent comments)'。

26. 這個pane我們也不需要進行任何設定。按下'Add pane'的按鈕後,您將看到

27. 按下"Save"後,Panels算是完成。 

28. 因為我們打算讓他這個Panel page成為首頁,因此我們必須到網站設定>網站資訊(admin/settings/site-information)頁面的最下方,將"預設的網站首頁"從"node"給為我們剛剛產生的panel page "front"。

29. 儲存設定之後,就大功告成了。

===================END+=================

cck contemplate theming 技巧

注1: 以下假设你已经对cck, template和views 有基本使用的认识

注2: 以下的template 指 node-contenttype.tpl.php (或名为content type template),

可以对特定的content type 作版面修改, 非指template.php

先针对cck theming,

cck 自己只应该当作一种资料集合的储存

各种field 模组(imagefield, link, email...) 都只为了丰富资料集合的种类

cck 的工作是集合需要的fields 之后, 集中到作为一个node 处理

 

而contemplate, template, css 就会负责显示node部分

至于contemplate 和 template 之间,

contemplate 和template 都只对某一个指定的content type 起作用

他们的分别, 在于被修改的对象

 

contemplate 只可修改 cck 新增的fields

例如imagefield, textarea, user_ref, node_ref......

改动什麽都可以, 加减tags, class, id, fields 之间的排位

分成多少行, 两排, 三排等等(图一)

但不可以改动原有的 node title, author, submit time,

body , comment 的出现位置之类的部分

这些都留了给template 负责

node.tpl.php 中应该就 submitted time, content, node title 等排版

设定相关的class, id, tags.

 

又, 要留意,

以上的这些改变都对用views 做的table, list view 的情况完全没有影响

full node, teaser view 等便有影响

contemplate 的设定介面分成三个群组

teaser, body, RSS (图中红框)

teaser 是撮要, 一般的首页都使用撮要的显示

虽然撮要的内容可能和正文一样

 

题外话:

Drupal 内建的撮要机制令撮要独立的放到一个field 中处理

所以当储存node 的时候没有设定撮要,

则及后再开撮要都没有显示撮要

 

contemplate 可以对teaser, body, RSS 作特定的显示方式

而修改的方法则完全一样

左面的窗口是输出的php, html 代码 (图中蓝框)

右面为一些可用的php 变数 (图中绿框)

先按Affect body output 激活左面窗口

然后随意修改html, php

再在右面的窗口按你想加入的变数, 如$node->title, $node->type 等

相关的code 就会加到左面的窗口了

 

按submit 就大功告成了

*********************************END************************************

CCK图像字段:Imagefield

简介:Image field 为 CCK 提供一个图像字段。特性:views 整合 多图片支持 图片大小限制 imagecache 整合 //Imagefield 不提供缩略图或派生图生成,Views 可以使用 imagecache 生成派生的 imagefield 图片,但 imagecache 配置起来可能困难重重,而且文档也不齐全。 

imagecache配合imagefield使用方法

第一步
在imagecache设置中,新建两个presets
第一个(正文中的图)
namespace: yourcontentnode_mainimage(文件名,随便选,最后图片会在这个目录下生成)
action: scale
width: 400(根据你的喜好)
height: 400(根据你的喜好)
scale to fit: inside dimensions
weight: 1
第二个(摘要中的图)
namespace: yourcontentnode_thumbnail
action: scale
width: 100
height: 100
scale to fit: inside dimensions
weight: 0

第二步
在你的内容类别中,比如story中,或者新建一个也成,加入image字段。
其中有个Maximum resolution选项,不用添,作者的意思是如果不添这个尺寸,原图就不会被上传,省一些空间呵呵。其他的设置普通cck方法一样,自己随便设置吧。

第三步
在display选项中,teaser选择你刚才设置的那个缩略图目录yourcontentnode_thumbnail,full当然是正文图片的目录了yourcontentnode_mainimage。

第四步
ok了,你试试发一个story吧。不出意外,首页摘要中显示的就是缩略图,正文中是那个400*400的图片啦

第五步
可能你不满足仅仅是这样,我亲自实验了一下,通过views也可能在一个block或者page中显示这些图片,只是在Fields中add一个imagefield,在option中选择你想显示图片,缩略图或者正文中的400*400的图片,如果不选则显示原始图片。

总结:如此说来imagecache还是比较强悍的,同理能做出各种图片风格。
缺点:
1.生成的缩略图点击后直接打开了图片,但不能进到node中,不过这里有个解决方法 http://drupal.org/node/144139
2.现在我想的是,如何能让这些图片放到按照用户或者日期的文件夹下,要是都放在一个文件夹中,日后图片多了,程序或者管理员查找起来那是相当费劲。

×××××××××××××××××××××END××××××××××××××

实例BlueSnow的工作平台(项目管理)

 

 

在 BlueSnow 的工作平台中,项目管理是一个关联度比较大的功能模块.
功能要求:
1)显示和管理项目本身的信息(名称、负责人、简介、标识……)
2)显示和管理与项目本身相关的其它内容(合同信息、培训信息、设备信息……)

相关模块:
Taxonomy Redirect:这个模块可以管理分类对应的连接,可以用自定义页面替换分类页面。
Pathauto:自动为节点,类别,用户等生成路径别名。
Panels:可以建立定制化的頁面。
Views:可以设计內容(Node)的显示方式。
CCK:建立和定制内容字段。

实现过程:

首先要考虑的事如何让项目与其它的相关内容产生关联。一开始,想到这个两个模块:
Nodefamily:父子级内容类型,可以用VIEWS调用父子ID。
relativity:根据内容来联系父子级 。
试用之后发现功能并不符合要求(主要是用户操作方面),于是考虑采用基本的分类功能来实现要求。

首先建立“项目”分类


Taxonomy Redirect模块定制分类的对应Link:好处是我可以尽情地定制分类的显示方式(^_^)。  

Panels模块定制页面

先说一说 项目管理 Project 这个页面:这个页面没有什么特别,其中包含了一个View 用来显示Taxonomy Redirect定制后的项目分类Link。

再说说 项目分类 Project/term 这个页面:这个页面包含了四个View 分别对应 项目信息、项目合同、培训信息、设备信息。在这4个View中需要设置一下 Arguments 为对应的分类ID

在Panels中设置对应View中的 View参数

好了,现在看一看结果:

再看看相关的合同文书Node中的表现

现在,基本的关联已经搞定了,再来看看相关区块的实现

对区块的基本要求是:应只在与项目管理和项目信息有关的页面中显示。
使用Pathauto模块定制 项目信息 node 的 Link

在“URL别名”中设定

好了,现在所有“项目管理”与“项目信息”相关的页面都有一个共同点了。都采用 http://mysite/project/* 这种格式的 Link。现在我们建立一个“项目管理”的菜单。在“区块”管理中找到对应的区块,将它显示在侧边栏中。进入“项目管理”区块的配置:

也可根据用户角色来配置

OK,完成,现在“项目管理”区块已经可以根据我们的要求在特定的页面显示了。

后续工作
最基本的工作已经完成,接下来的工作就是细化与美工了。用CCK详细定制“项目信息”、“合同文书”、“培训信息“等内容类型的各种字段。
用 Views Theme wizard 定制和美化各种相关 Views 的表现形式。
用 主题模版 定制和美化Panels生成的各种页面.
……这里就不一 一说了。^_^

——————————————END___________________

Views 2 教程:创建一个显示相关网页的区块

当我们阅读一个节点时,希望能把相关文章的标题也显示在一个区块中,利用 Views 2 for Drupal 6 很容易就可以做到这一点。下面这个教程演示了实现这个功能的步骤,同时也可以帮助我们熟悉 Views 2 的操作界面。Views 2 进行了很大的改版,使用界面与 Views 1 也有很大的不同。

安装并启用模块

Views 模块的主页在这里: http://drupal.org/project/views

下载 Views 2 for Drupal 6,安装并启用模块,对于 Views 2 至少要启用 Views 和 Views UI 两个模块,Views 只提供了 API,而 Views UI 则提供了操作界面,如下图所示:

添加一个新的 View

下面我们添加一个新的 View,在导航菜单中选择 Administer › Site building › Views,点击 add 选项卡,View name 填入"relative_articles", View description 填入“相关文章”,在 View type 中选择"node",如下图所示:

编辑新的 View

点击下面的 "Next" 按钮,进入 Views 的编辑界面,这个 UI 与前任的 Views 1 截然不同,需要使用一段时间才能熟悉:

详细设置

接下来,我们对Views进行一些详细的设置,Title设置为“相关文章”,Style设置为“HTML List”,Row Style保持原来的“Fields”,Use AJAX设置为“Yes”,Item to display设置为“5”,More Link 设置为“Yes”,如下图所示:

接着,我们点击左下角的“Save”按钮,但是,这时候 Drupal 会给出一个错误提示:

由于我们把 Row Style 设置成了 “Fields”,但是我们还没有给出可用的 Field,所以才有这个警告出现。接下来,我们定义一个 Field,点击 Fields 旁边的 + 号:

下面会出现 Fields 详细设置表单,因为我们只想在区块中显示文章的标题,因此,我们只定义一个 Node Title 就可以了:

点击 add 按钮,进入 Title 的详细配置界面,清除标签中的“Title”字样,因为我们只想显示标题本身,而不是显示成“Title: 这是一个标题”。选中“Link this field to its node”,然后点击“Update”按钮,如下图:

设置 Arguments 

要想显示相关文章,关键在于 Arguments 的设置,我们希望找出正在阅读的节点的 Taxonomy items,然后选出具有同样 taxonomy items 的文章,点击 Arguments 旁边的“+”号:

下面会出现 Arguments 的设置界面,我们选中“Taxonomy: Term ID ”做为参数,然后点击“add”按钮:

接下来在出现的 Arguments 详细设置界面中,在 Action to take if argument is not present 中,选中“Provide default argument”,然后在 Default argument type 中选中“PHP code”,并填入如下代码:

$node = node_load(arg(1));

if ($node && $node->taxonomy){

  foreach($node->taxonomy as $term) {

    $terms[]=$term->tid;

  }

  return implode('+',$terms);

} else {

  return;


如下图所示:

在下面的选项中选中“Allow multiple terms per argument. ”和“Reduce duplicates”,这样允许参数为“1+2+3”这样的形式,同时消除重复的节点,完成后点击“Update”按钮,如下图所示:

现在,我们创建一个区块,以便以后在 Administor > Site building > Blocks 中把它放置在适当的位置,如下图,在 Views 编辑界面的左上角,下拉菜单中选则 block,然后点击 “Add display”按钮,如下图所示:
现在大功告成了,把这个区块放在 Left Sidebar 或 Right Sidebar 上,当我们浏览文章时,相关文章就会显示在这个区块中。不过还有点小问题,我们当前正在浏览的节点也会显示在区块中,怎么才能把它去掉呢? 

Administer › Site building › Views,在下面的列表中找到我们的 relative_articles,点击“Edit”,进入编辑界面,再添加一个 Arguments,类型为 “Node: Nid”,选择“Provide default argument”,Default argument type: 设置为 “Node ID from URL”,最后选中下面的"Exclude the argument",如下图所示:

怎么样,这回可以了吧?

――――――――――――END―――――――――――――

VIEWS實作公告+分類

根據您的貼圖個人估計是在同一個content type下給定一個特定的分類(Taxonomy),再使用Views來進行整理與顯示。作法如下:
1.先新增一個Content type-Name:公告 Type:announcement。其他關於content type的設定,暫不贅述。

2.新增一個分類 Add vocabulary


3.新增公告類別下的terms:



4.好了,現在讓我們新增一個"公告"的內容:您可以發現多了一個欄位如下圖:

請填入一些資料,接下來進行Views的部份

細節請容我不多說了,貼幾張圖,請您參考參考,請特別注意"HR"這個page. 需要多加一個Filter, 就是選擇分類中屬於徵才的分類。
1.新增一個View

2.Views中的設定如下三個圖



3.效果圖如下:

呼~~~,不知道您是否了改。

真的很謝謝你們的幫助
然後有照步驟做過一次~=_=”(汗)


.

您是指tab的問題吧,還是請您在看看之前的文章喔。
另外,hr的page中的"過濾器"少個條件。
1.滑鼠先點擊過濾器,告訴Views這個頁面的過濾器要與Defaults不同。
2.然後,新增一個過濾條件。

 

六, 2009-01-31 13:23 — thomasfan

Re: 實作公告+分類

可以使用Views來產生您所需要的下拉式選單
首先,到Views中編輯要產生下拉式選單的View或page中。

2.到過濾器的方塊中,選取您將允許使用者使用的選項

3.如下圖中,有個"開放使用"的按鈕,表明允許使用者能透過下拉式選單或文字框的方式來進行內容篩選的功能。

按下按鈕後,會出現如下的畫面

4.如果您想要讓這個選單能夠以區塊(block)的方式呈現在每個區域(region)中,您只需要在Basic settings方塊下的Exposed form in block選項中選擇"是",就可以了。最後,請您到管理 > 網站設置 >區塊 下,將這個區塊放置到您所想要置放的區域中即可。

******************************END************************************

Views 2 與 Tab

以下將以一個簡單的例子介紹:如何使用Views模組,在單一頁面中,以tab的方式顯示多頁。

效果如下:

 

由於本次針對性比較強,所以請原諒我在此不一一介紹Views的操作,您可以參考方先生的教學影片。

首先,我們先增一個View, 並且產生將要顯示的頁面,如下圖的:myProject, allProject

此例中,我們希望myProject與allProject能用tab放在同一頁。所以,在路徑上我們必須先設定一個主路徑(Project) ,然後再根據個別頁面給你子路徑(my)。

 接下來,就要注意菜單選項的部份了。一個頁面中我們必須選擇一個頁面為初始頁面,因此在Page settings > Menu item entry中,要選擇 "Default menu tab"

接下來開始設定allProject這一頁面,一樣的,我們將目光放在"Page settings"這個方塊中。路徑的部份如上頁一樣,主路徑("Project"),次路徑("all")。

然後,就是設定這一頁的菜單選項了,請選擇"Menu tab "。

即便是您有第三,四...頁,作法都是一樣的。

如有錯誤請指點,如果問題歡迎交流討論。

相關模組: 

Views 2

窗体顶端

 

**************************END*******************

Drupal项目实战:公司员工订餐系统 (一)

简单的需求 
我们要做的是一个公司内部的员工订餐网站,它的主要功能是: 

1. 员工可以浏览各种菜的信息:为了简单,我们先假设可以浏览的是“套餐” 

2. 员工在选择好菜后,就可以下订单:订单中可以选择订菜的数量 

3. 饭店可以查看员工所下订单 :并根据订单进行送餐,订单的有效期是当日上午10:00 (假设我们订的是午餐) 

4. 菜单的主要属性:标题、说明、照片、价格

OK. 非常简单易懂,基本上三个需求 。这个系统中,主要的角色是:

· 公司员工

· 饭店

· 订餐管理员

我们要做的就是实现这样一个系统。首先快速做出原型,然后逐步迭代,即采用敏捷开发[1]方法。可以发挥同学的想像力,逐步完善。

图1 员工午饭订餐系统结构图(用户视角)

 

客户

在了解了需求后,我们可以对系统的功能进行分析,以便进行技术架构的分析,进而估计出,要实现这样一个系统,大概要多少成本。这是一个很现实的问题。在实际的项目中,客户一般只关心花多少钱来完成这样一个项目,至于用哪种技术,用不用Drupal,其实他们并不关心。因此,某些开发者有时过多的向客户介绍Drupal的优势,其实是完全没有必要的。只需要让客户了解我们采用了“先进的”、“高效的”、“便于扩展”的技术架构就可以了。但是,对于开发者来说,技术框架是非常重要的,因为这样我们才能准确的估计出是否能顺利完成项目,以及其开发成本。

 

UML

我个人是比较主张使用UML的。因为UML的用例图,状态图和时序图等,可以很好很方便的对系统进行建模,而且便于和世界各地的用户交流。这一点很重要,因为如果我们的客户和我们使用的不是同一种语言时,这种图型就成为了很好的交流媒介。

 

分析

我们力求简化开发过程,不必要的就直接省略。对于这个项目,我认为接下来应该分析如何用Drupal来实现。

首先,要找出系统中的“元数据”。因为Drupal是CMS,且核心就是Node。那么分析系统时,首先就是找出系统中的“Node”,即“元数据”。从面向对像的角度看,就是“类”。我认为这是面向数据和面向对像分析的综合运用。

菜单应该是系统中的“元数据”,因为所有的行为都是围绕这个进行的。菜的主要属性已经在需求中说明了,那么我们可以马上联想到,“菜单”即是Node的子类,是Node的继承,扩展Node的属性(因为Node只有标题和内容两个内容属性),就可以完成“菜单”的管理。我们把“菜单”类称为Food。

 

除了Food,还有一个类是“订单(Order)”。订单用于记录员工的订餐情况。它也是一个“元数据(meta-data)”。那么它是否也可以继承Node类呢?我们知道,使用Drupal的一个原则,就是尽可能使用Drupal本身的模块功能来完成业务需求。简单的讲,能少使用模块就少使用模块。现在有两个第三方模块可以实现电子商务的功能:e-CommerceUbercart

前者历史比较悠久,在Drupal 5时代非常流行,不过进入Drupal 6时代就暂停开发了。听说最近又重新开始开发了,估计作者前一段时间持观望态度。Ubercart是后起之秀,它也是以“商品”为主的电子商务网站的解决方案。而且Ubercart也于最近推出了Drupal 6的beta版本。我没有对这两个插件作过横向对比,刚好我们借这个实战项目,也可以进行一下实验。不过,在使用这两个模块之前,我想先使用“纯Drupal”来实现我们的功能(尝试),如果能实现,那么效率应该是比较高的,而且更简单。

 

预计要使用的模块

有人说,Drupal开发就是“拼模块”,此话有一定道理。而且大多数人在用Drupal开发时,马上头脑中就无数个模块翻腾。其实这不是一个很好的现象,很容易在还没真正弄清楚需求前就陷入了技术误区。当然,我们还是需要在开始前设想一下需要使用哪些模块,因为这样可以提前下载下来,做下尝试。不过我更倾向于:边做边找的模式。也许这不是最佳实践,不过对于比较小的项目还是很有效率的。

· CCK、Views、Panels:这三个模块基本没什么悬念,任何一个网站几乎都会用到。Panels可能会损伤性能,不过它可以让我们避免陷入枯燥的CSS定位调试中。

· Image Field:用于添加Image的CCK Field

· Date:Date模块主要是一些日期相关的功能,也用于添加Date类型的CCK Field

· Vote API: 这个模块是用于评论时投票的,与FiveStar等模块连用,可以实现“小星星评分”,可爱又实用。

· Webform:在“下订单”时,我们有可能会用到,先列于此。

· 自定义模块:如果自己开发模块能够高效的解决问题,那么自定义模块也必不可少。

主题模板

Drupal中的主题模板(Theme)是表示层的术语,除了样式、色彩等,我们还要对内容的显示布局。默认的节点显示页面只适合简单的内容类型,如果我们使用了CCK扩展节点字段的话,那么就需要自定义模板文件了。本项目对网站风格的要求是简洁,同时为了开发方便考虑,先使用Garland(Drupal默认模板)主题,然后再进行定制。

 

工具

我喜欢使用EditPlus作为开发PHP的工具,然后配以Firefox+Firebug和IE+Developer Tools(或IE8)进行调试。在工具方面,仁者见仁,智者见智,没有好坏之分,只有熟练与否。Choose whatever you like.

同时,我发现微软的Visual Web Developer Express是一个非常不错的编辑器,尤其是网页开发,可用于页面设计,有兴趣的朋友们也可以试一试。

 

小结

本文叙述了项目的需求,并进行了分析和设计。采用Drupal的开发与普通的软件开发还是有区别的,因为我们是“站在Drupal的肩膀”上,因此对软件开发过程可以做一定的“剪裁”。至于我的方法是不是“Best Practice“,那还需要大家一起共同探讨了。

 

详细的开发流程从第二篇开始。

Drupal项目实战:公司员工订餐系统(二)

创建菜单节点 

首先创建菜单(Food)的节点类型,增加几个字段后,效果见下图。由于属基本操作,就不再赘述了。

在完成菜单类型的创建后,发现默认的节点显示页面,实在是比较简陋.这需要我们自己动手来完善一下.在开始之前,必须介绍一个很重要的模块-Devel(http://drupal.org/project/devel).此模块为开发者必备,主要功能有:

查看节点的变量

清空缓存(模块的)

生成测试数据(节点等)

我常用的是这几个,对于D6,它还可以调试主题模板,比较有效.不过,这个模块有时会用其它模块的Javascript脚本有冲突,目前还不太明确与哪些模块有冲突.如果朋友们在调试Drupal时发现莫名其妙的JS问题,可以考虑先关闭Devel模块,然后再试.

 

开发主题,当然还需要能方便查看和动态更改CSS的浏览器支持.Firefox+Firebug组合当仁不让成为现时的首选.不过目前,IE8和Chrome也正努力赶上.IE8中按F12可以调出和IE Developer Tools相似的HTML,CSS代码调试框,基本上Firebug功能类似.Chrome目前可以定位HTML页面元素,以及查看其CSS样式,不过还不能即时修改.选择哪个就看大家自己的喜好了.一般情况下,我们都要调试Firefox和IE下的兼容性.尤其是Div+CSS的布局,如果没有很高的技巧,确实需要调试很长时间。

 

创建菜单显示模板

在开始创建之前,当然要进行设计.我们的项目目前没"网页设计",那我们就直接挑一个差不多的作参考吧。如果你的项目组中有美工人员,这部分应该交给他/她去做了。对于Drupal页面的设计,我的意见是:尽量符合Drupal默认的页面布局,这样交给Drupal开发者时,只需要做少量修改即可。否则就需要花很多时间在主题和模板开发上.毕竟CSS技巧高的又懂Drupal的同志,还是不大容易找到的。

我看中了一个国外网站的"菜单"信息的显示页面,分享一下:http://www.foodnetwork.com/recipes/paula-deen/christmas-ham-recipe/index.html.截图如下。

对于Drupal项目,我认为首先应该开发针对不同的节点类型的页面的显示模板,即:node-content_type.tpl.php。它是显示的模板,它包含节点的各个元素的显示方式的设定(如标题、内容、以及用CCK生成的字段等),但不对整个页面的布局进行设定。此处需要提一个需要注意的问题:通过Devel的"Dev load"查看的变量,并不是在node.tpl.php中直接可用的变量。它显示的是通过node_load函数得到的$node节点,与node.tpl.php中的$node节点还是有区别的。同时,大家在使用节点变量时,也可以参考一下$node->content变量中的内容,它是经过Drupal处理后的HTML内容。

 

关于Drupal主题模板开发的顺序,下面是我的看法:

开发节点类型的模板:node-content_type.tpl.php

开发评论的模板:comment.tpl.php

开发普通页面的模板:page.tpl.php

开发首页模板:page-front.tpl.php

整理CSS类别和区块

制作全站的CSS,写入style.css,或创建单独的样式表文件,在style.css中import.

为生产站点作CSS优化:如使用Drupal的CSS Aggregation将CSS文件整合为一个文件或重新设置每页加载的CSS文件。

 

我喜欢的开发顺序是:先把所有的HTML写出,然后创建好每个CSS类和ID等,最后再进行“上色”。流程如下所示:

原始页面

第一次布局修改:

分左中右三栏

左侧为图像,中间为基本信息,右侧为评论。

第二次布局修改
加入样式

采用table作布局

做成像cnbeta.com那样的评论

Drupal默认的评论在最下方,我想把它放在页面的右侧,这样用户打开这个页面,无需浏览到底部,就可以看到最新的评论。cnbeta.com的形式也不错,它将“支持”者多的评论,放置在右侧。下面我们看看在D中怎样实现。

按正常思路,评论就应该在page.tpl.php中设置。但是,在page.tpl.php中只能找到$content变量。因此,将评论更换显示位置就显得有点“棘手”了。我目前的解决方法是:使用Views创建某个节点的评论列表,然后创建自定义模块,调用views_build_view函数,将列表以区块的形式,放置在右侧区域。那么,这部分应该以区块形式存在,放置在right区域,也无须对node.tpl.php进行修改了。

(未完待续)

********************END*********************

Drupal模块-CCK和Views的使用

网站要求介绍

我们现在假设有一位客户 D 先生,他需要创建一个网站,这个网站是一个招聘类的网站,网站的管理员可以通过后台发布招聘信息,每一条招聘信息包括应聘职位、工作部门、工作类型、联系发布者、专业类型、待遇如何、对应聘者有何要求等等,这些招聘信息能被所有网站访客查看,同时,所有这些招聘信息还以工作部门进行了归类。

普通分类: