<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>views 模块</title>
  <link rel="alternate" type="text/html" href="http://www.kzeng.info/taxonomy/term/792"/>
  <link rel="self" type="application/atom+xml" href="http://www.kzeng.info/taxonomy/term/792/atom/feed"/>
  <id>http://www.kzeng.info/taxonomy/term/792/atom/feed</id>
  <updated>2007-04-16T19:08:03-05:00</updated>
  <entry>
    <title>Drupal + Wiki 的应用 （二）</title>
    <link rel="alternate" type="text/html" href="http://www.kzeng.info/node/1602" />
    <id>http://www.kzeng.info/node/1602</id>
    <published>2007-10-06T18:09:32-05:00</published>
    <updated>2007-10-06T18:11:22-05:00</updated>
    <author>
      <name>kzeng</name>
    </author>
    <category term="bbcode" />
    <category term="biblio" />
    <category term="drupal应用" />
    <category term="views 模块" />
    <category term="wiki" />
    <category term="wikitools" />
    <category term="Drupal" />
    <summary type="html"><![CDATA[<p>
<p>总算有时间实现 <a href="http://www.kzeng.info/node/1579">（一）</a> 中的构想了，网站的框架在 <a href="http://wiki.kzeng.info"><a href="http://wiki.kzeng.info">http://wiki.kzeng.info</a></a> ，还在 alpha 状态。有一段时间想用 mediawiki 和 它的 extension 来实现 （一）中的设想，但是研究了一下，发现 Mediawiki 处理扩展（模块）的能力与 Drupal 相比差了很远，同时它的扩展插件也不如 Drupal 丰富，所以最终还是回到了 Drupal 上来，轻车熟路。目前的wiki站的搭建只完成了基础工作和两个最重要的功能的实现。</p>
<p>首先在基建方面，选用了 <a href="http://drupal.org/project/wikitools">wikitools</a> 和 <a href="http://drupal.org/project/freelinking">freelingking</a> 模块来实现 wiki 的基本功能，同时也使用了 bbcode 模块来帮助编辑，因为觉得就 rich 文本编辑而言，wiki 与 bbcode 相比，不一定会快到哪里，并且 bbcode 支持的效果更丰富。另外用了 quicktag 来实现简单的 bbcode 按钮添加功能。现在 Drupal 模块之间的协调工作做得不错，很多不同作者的模块都能无缝的配合使用；</p>
</p>
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
<p>总算有时间实现 <a href="http://www.kzeng.info/node/1579">（一）</a> 中的构想了，网站的框架在 <a href="http://wiki.kzeng.info"><a href="http://wiki.kzeng.info">http://wiki.kzeng.info</a></a> ，还在 alpha 状态。有一段时间想用 mediawiki 和 它的 extension 来实现 （一）中的设想，但是研究了一下，发现 Mediawiki 处理扩展（模块）的能力与 Drupal 相比差了很远，同时它的扩展插件也不如 Drupal 丰富，所以最终还是回到了 Drupal 上来，轻车熟路。目前的wiki站的搭建只完成了基础工作和两个最重要的功能的实现。</p>
<p>首先在基建方面，选用了 <a href="http://drupal.org/project/wikitools">wikitools</a> 和 <a href="http://drupal.org/project/freelinking">freelingking</a> 模块来实现 wiki 的基本功能，同时也使用了 bbcode 模块来帮助编辑，因为觉得就 rich 文本编辑而言，wiki 与 bbcode 相比，不一定会快到哪里，并且 bbcode 支持的效果更丰富。另外用了 quicktag 来实现简单的 bbcode 按钮添加功能。现在 Drupal 模块之间的协调工作做得不错，很多不同作者的模块都能无缝的配合使用；</p>
<p>  <!--break-->
<p>其次，主题方面，用了系统自带的主题，并选择&#x201C;时间的灰尘&#x201D;色调，不打算在这方面投入过多的时间，实用主义嘛；</p>
<p>再次，用 biblio 模块将本地的 bibtex 格式的 reference 引入，实现了自己的 <a href="http://wiki.kzeng.info/reference">online citation manager</a> 的功能，这个功能非常的必要，因为经常会看到一篇以后可能会需要的文章，如果不能有一个集中方便的地方储存，很快马上就会忘了地方，同时 biblio 模块为reference 新建了一种 node type，方便管理，并且可以快速的利用 wiki 组建添加评论和批注，biblio 模块可以利用 bibtex 里的关键词自动生成 tag，结合 Drupal 本身的 freetagging，非常的好用；</p>
<p>第四，用 tasklist 模块实现了 <a href="http://wiki.kzeng.info/node/105">online project manager</a> 的功能，把一些大的工作分割处理，方便时间安排；</p>
<p>第五, 用 frontpage 模块只做了首页简单的 shortcut；</p>
<p>第六，用 access control 来控制内容的呈现；</p>
<p>下一步的构想：</p>
<p>首先，利用 views 模块进一步优化整个网站的组织结构；</p>
<p>其次，加强 tag 组织网站的能力，利用主要的tag来方便快捷的组织网站的内容；</p>
<p>再次，利用 views， data api，和 calendar 做好自己的 online calendar，记录project相关的重要的 deadline，并和网站的其他部分相结合</p>
<p>继续修正中， 如果一切 OK，可以利用 profile 把整套网站做成一个 package 来发布。</p>
<p>当然，最后还要叹服一句 Drupal 的强大功能。本来这个网站是想和 blog 相结合的，但是考虑到这个网站对于稳定性的需要，所以单独安装了一套 drupal，如果一切运行良好，估计会维持现状而不会迅速的跟着 drupal 升级而升级。</p>
</p>
    ]]></content>
  </entry>
  <entry>
    <title>Views 模块教程（六）：区块与 argument 的使用</title>
    <link rel="alternate" type="text/html" href="http://www.kzeng.info/node/1557" />
    <id>http://www.kzeng.info/node/1557</id>
    <published>2007-05-01T21:22:15-05:00</published>
    <updated>2007-05-01T21:24:16-05:00</updated>
    <author>
      <name>kzeng</name>
    </author>
    <category term="Drupal 教程" />
    <category term="drupal模块" />
    <category term="views 模块" />
    <category term="Drupal" />
    <summary type="html"><![CDATA[<p>
<p>通过利用 views 模块制作“按月归档”的页面和区块（block）来讨论一下 argument 的使用。Drupal 其实有按月归档这个模块，叫做 <a title="" href="http://drupal.org/project/month">Monthly Archive</a> , 是 Mars 做的，不过用 views 模块实现这样的功能也不难。我的 blog 的侧边栏就是一个实例，点击 “blog 归档” 下面的“更多”就可以进入按月归档的页面，看到所有 blog 内容的档案。</p>
<p>开工。 在 views 的管理界面下点击“add”标签，添加新的视图。名称是 Archive ，给所有的访客访问的权限，描述随意。然后“页面”项下选择 provide page view，提供页面视图， url 按照惯例是 archive。 viwe type 随意，我这里选择的是习惯的 teaser list，标题“按月归档”。使用 pager （分页）。其它的默认即可。</p>
</p>
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
<p>通过利用 views 模块制作“按月归档”的页面和区块（block）来讨论一下 argument 的使用。Drupal 其实有按月归档这个模块，叫做 <a title="" href="http://drupal.org/project/month">Monthly Archive</a> , 是 Mars 做的，不过用 views 模块实现这样的功能也不难。我的 blog 的侧边栏就是一个实例，点击 “blog 归档” 下面的“更多”就可以进入按月归档的页面，看到所有 blog 内容的档案。</p>
<p>开工。 在 views 的管理界面下点击“add”标签，添加新的视图。名称是 Archive ，给所有的访客访问的权限，描述随意。然后“页面”项下选择 provide page view，提供页面视图， url 按照惯例是 archive。 viwe type 随意，我这里选择的是习惯的 teaser list，标题“按月归档”。使用 pager （分页）。其它的默认即可。</p>
<p><!--break-->
<p>然后在“区块”项下选择 provide block，提供区块。view type 考虑到是在侧边栏现实，所以选择 List view （列表显示）。区块的标题“Blog 归档”，你想继续叫“按月归档”也行。一个区块现实的页面链接数，5 个。然后选择 [more] link。</p>
<p>Fields项下，只需要添加一个字段（field），Node：Title。Option 设为 As Link，不可sort。这里定义的是最基层的视图的显示，譬如这个链接下的显示：<a title="http://www.kzeng.info/archive/200704" href="http://www.kzeng.info/archive/200704">http://www.kzeng.info/archive/200704</a>&nbsp;。</p>
<p>过滤器项下，第一个过滤器， Node: Published 只选择发布的内容；第二个过滤器， Node: Type 只选择 Blog entry ，当然你可以按照你的需要选择显示的类型。</p>
<p>Sort项下选择 Node: Created Time 按照降序排列。</p>
<p>最后让我们来看 argument 项，这个argument实际上提供了按月归档的列表，是高一层的视图，这里选择 Node: Posted Month + Year ，然后 summary, sorted descending，标题“按月归档”。搞定。简单的说，这个 argument 帮助生成了子页面的链接，非常的方便。</p>
<p>按月归档的页面可以在 yoursite.com/archive 下访问，而相应的区块需要在区块管理中启用。你可以适当的更改 CSS 来美化这个列表。</p>
<p>下面的是导出的 views 的代码，可以直接导入 views 管理中使用和研究。</p>
<pre class="bb-code-block"> $view = new stdClass();
  $view-&gt;name = 'Archive';
  $view-&gt;description = 'Monthly Archive';
  $view-&gt;access = array (
  0 =&gt; '1',
  1 =&gt; '2',
);
  $view-&gt;view_args_php = '';
  $view-&gt;page = TRUE;
  $view-&gt;page_title = '按月归档';
  $view-&gt;page_header = '';
  $view-&gt;page_header_format = '4';
  $view-&gt;page_footer = '';
  $view-&gt;page_footer_format = '4';
  $view-&gt;page_empty = '';
  $view-&gt;page_empty_format = '4';
  $view-&gt;page_type = 'teaser';
  $view-&gt;url = 'archive';
  $view-&gt;use_pager = TRUE;
  $view-&gt;nodes_per_page = '50';
  $view-&gt;block = TRUE;
  $view-&gt;block_title = 'Blog 归档';
  $view-&gt;block_header = '';
  $view-&gt;block_header_format = '4';
  $view-&gt;block_footer = '';
  $view-&gt;block_footer_format = '4';
  $view-&gt;block_empty = '';
  $view-&gt;block_empty_format = '4';
  $view-&gt;block_type = 'list';
  $view-&gt;nodes_per_block = '5';
  $view-&gt;block_more = TRUE;
  $view-&gt;block_use_page_header = FALSE;
  $view-&gt;block_use_page_footer = FALSE;
  $view-&gt;block_use_page_empty = FALSE;
  $view-&gt;sort = array (
    array (
      'tablename' =&gt; 'node',
      'field' =&gt; 'created',
      'sortorder' =&gt; 'DESC',
      'options' =&gt; 'normal',
    ),
  );
  $view-&gt;argument = array (
    array (
      'type' =&gt; 'monthyear',
      'argdefault' =&gt; '5',
      'title' =&gt; '按月归档',
      'options' =&gt; '',
      'wildcard' =&gt; '',
      'wildcard_substitution' =&gt; '',
    ),
  );
  $view-&gt;field = array (
    array (
      'tablename' =&gt; 'node',
      'field' =&gt; 'title',
      'label' =&gt; '',
      'handler' =&gt; 'views_handler_field_nodelink',
      'options' =&gt; 'link',
    ),
  );
  $view-&gt;filter = array (
    array (
      'tablename' =&gt; 'node',
      'field' =&gt; 'status',
      'operator' =&gt; '=',
      'options' =&gt; '',
      'value' =&gt; '1',
    ),
    array (
      'tablename' =&gt; 'node',
      'field' =&gt; 'type',
      'operator' =&gt; 'OR',
      'options' =&gt; '',
      'value' =&gt; array (
  0 =&gt; 'blog',
),
    ),
  );
  $view-&gt;exposed_filter = array (
  );
  $view-&gt;requires = array(node);
  $views[$view-&gt;name] = $view;
</pre></p>
    ]]></content>
  </entry>
  <entry>
    <title>Views 模块教程（五）：标签实例</title>
    <link rel="alternate" type="text/html" href="http://www.kzeng.info/node/1554" />
    <id>http://www.kzeng.info/node/1554</id>
    <published>2007-04-28T20:20:26-05:00</published>
    <updated>2007-04-28T20:23:07-05:00</updated>
    <author>
      <name>kzeng</name>
    </author>
    <category term="Drupal 教程" />
    <category term="drupal模块" />
    <category term="views 模块" />
    <category term="Drupal" />
    <summary type="html"><![CDATA[<p>
<p>继续我们解剖 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 模块，这个视图提供菜单，菜单输出为标签，把这个标签当作默认显示的标签。</p>
</p>
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
<p>继续我们解剖 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 模块，这个视图提供菜单，菜单输出为标签，把这个标签当作默认显示的标签。</p>
<p><!--break-->
<p>然后我们需要创建 “我的文章”这个标签，首先 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 把它设定为&nbsp; "Is Equal to " "currently logged in user" 即可。然后保存。工作完成。</p>
<p>现在通过 yoursite.com/tracker 来访问你的视图，你就可以看到两个标签页面了，呵呵，很方便吧！</p>
</p>
    ]]></content>
  </entry>
  <entry>
    <title>Views 模块教程 （四）：解剖 （2）</title>
    <link rel="alternate" type="text/html" href="http://www.kzeng.info/node/1552" />
    <id>http://www.kzeng.info/node/1552</id>
    <published>2007-04-26T01:23:13-05:00</published>
    <updated>2007-04-28T20:59:58-05:00</updated>
    <author>
      <name>kzeng</name>
    </author>
    <category term="Drupal 教程" />
    <category term="drupal模块" />
    <category term="views 模块" />
    <category term="Drupal" />
    <summary type="html"><![CDATA[<p>
<p>Field 项是 views 模块的最终要部分，直接控制着输出视图的显示方式。一个典型的 tracker 页面由以下部分组成：</p>
<p align="center"><strong>页面类型 标题 作者 回复数目 最新回复时间</strong></font></p>
<p align="left">可以参看 Drupal China 的 <a href="http://www.drupalchina.org/tracker">tracker 范例</a>。所以，在 field 项里，我们需要做的就是按照需求选取<strong>字段</strong> （field）。第一个要选取的就是 <strong>页面类型</strong>。在 <em>Add Field</em> 菜单中找到 Node：Type 点击添加，Node：Type 就出现在 field 项下了，然后我们要做一些设置， <em>Label </em>就是这一项在列表中的显示名称，填入“页面类型”（英文版的 views 默认的是 Type）即可。<em>Sortable</em> 是设定是否按照这个字段排序，这里选择 no，如果选择 yes ，那么在 <em>Default Sort</em> 那里要选择默认的排序方式。</p>
</p>
</p>
    ]]></summary>
    <content type="html"><![CDATA[    ]]></content>
  </entry>
  <entry>
    <title>Views 模块教程 （三）：解剖（1）</title>
    <link rel="alternate" type="text/html" href="http://www.kzeng.info/node/1550" />
    <id>http://www.kzeng.info/node/1550</id>
    <published>2007-04-21T20:48:08-05:00</published>
    <updated>2007-04-21T21:00:06-05:00</updated>
    <author>
      <name>kzeng</name>
    </author>
    <category term="Drupal 教程" />
    <category term="drupal模块" />
    <category term="views 模块" />
    <category term="Drupal" />
    <summary type="html"><![CDATA[<p>
<p>Drupal 的基本组成部分是 Node， 外加 Node 的附属 Comment。对于一般的使用者来说，Node 是不可分割的；即便是熟练的使用者，在使用 Node 的各个字段时也会觉得非常的麻烦，而 Views 就可以方便的解决这个问题，从 Node 中提取你需要的字段，按照你希望的方式展示，并过滤掉你不希望出现的内容，Views 的工作流程可以用下图表示：</p>
<p align="center"><a href="http://www.kzeng.info/files/shiyi%5B2%5D.jpg" atomicselection="true"><img height="107" src="http://www.kzeng.info/files/shiyi_thumb.jpg" width="240"></a> </p>
<p align="left">在明白这个流程后，让我们来解剖一个 Views 的实例，使用的样本是 Views 模块自带的 Tracker 视图。Drupal 的 Tracker 通常是 Tracker 模块提供，可以通过 yoursite.com/tracker 来跟踪网站最新的内容。但是有了 Views 模块，我们可以在不启动 Tracker 模块的情况下实现 Tracker 的效果。</p>
</p>
</p>
    ]]></summary>
    <content type="html"><![CDATA[    ]]></content>
  </entry>
  <entry>
    <title>Views 模块教程 （二）：概述</title>
    <link rel="alternate" type="text/html" href="http://www.kzeng.info/node/1548" />
    <id>http://www.kzeng.info/node/1548</id>
    <published>2007-04-19T00:05:41-05:00</published>
    <updated>2007-04-19T00:07:38-05:00</updated>
    <author>
      <name>kzeng</name>
    </author>
    <category term="Drupal 教程" />
    <category term="drupal模块" />
    <category term="views 模块" />
    <category term="Drupal" />
    <summary type="html"><![CDATA[<p>
<p>安装 views 模块就不多说了，和其他的模块一样，上传，启动，然后在 Administrater -&gt; Site Building 下可以找到 views 的配置页面（如下图所示）。</p>
<p align="center"><a href="http://www.kzeng.info/files/views-1%5B5%5D.jpg" atomicselection="true"><img height="140" src="http://www.kzeng.info/files/views-1_thumb%5B3%5D.jpg" width="300"></a> </p>
<p align="left">最上面的标签分别对应着 <font color="#008000">列表 添加 导入 主题向导 工具</font>。“列表”标签下列出了所有已创建的视图。views 模块自带了四个常用的视图，分别是：“最新评论”，“首页”，“分类词”和“最新文章”。如果你自己添加了新的视图，它们将会单独列出（如下图）：</p>
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
<p>安装 views 模块就不多说了，和其他的模块一样，上传，启动，然后在 Administrater -&gt; Site Building 下可以找到 views 的配置页面（如下图所示）。</p>
<p align="center"><a href="http://www.kzeng.info/files/views-1%5B5%5D.jpg" atomicselection="true"><img height="140" src="http://www.kzeng.info/files/views-1_thumb%5B3%5D.jpg" width="300"></a> </p>
<p align="left">最上面的标签分别对应着 <font color="#008000">列表 添加 导入 主题向导 工具</font>。“列表”标签下列出了所有已创建的视图。views 模块自带了四个常用的视图，分别是：“最新评论”，“首页”，“分类词”和“最新文章”。如果你自己添加了新的视图，它们将会单独列出（如下图）：<!--break--></p>
<p align="center"><a href="http://www.kzeng.info/files/views-3%5B3%5D.jpg" atomicselection="true"><img height="32" src="http://www.kzeng.info/files/views-3_thumb%5B1%5D.jpg" width="300"></a> </p>
<p align="left">注意，views提供默认视图与你自己创建的视图是分开显示并且有不同的选项的。你自己的创建的视图有 <font color="#008000">编辑 导出 删除 克隆</font> 等选择而默认的视图里只有 <font color="#008000">添加 停止/启动</font> 选择。我们现在以第二幅图的第二个视图为例来解释一下各列的含义。</p>
<p align="left">最左边的是“视图”（view， 因为它正好和 Drupal 翻译中的 view 重复了，所以才会在这里被自动翻译为 查看），如果你希望你的视图覆盖默认的视图，这一项非常的重要，注意它只能包含字母和下划线，通常，如果你想覆盖的路径是 taxonomy/term 那么这个名称就是 taxonomy_term；如果你想覆盖 node 那么这个名称就是 node。如果你重新创建的页面，譬如 characters/name ，那么就无所谓了，不过按照惯例，你可以命名为 character_name</p>
<p align="left">接下来是“标题”，当进入你定义的视图时，“标题”就会自动出现在页面的上方；</p>
<p align="left">然后是“描述”，这个主要是方便你自己，知道你定义的这个视图是什么，防止以后遗忘；</p>
<p align="left">然后是“提供”（provides），选择输出的是 页面（page），区块（block）还是 菜单（menu）。如果输出的是区块，那么在定义过这个视图后你可以方便的在区块管理中找到你新定义的区块，如果是菜单，则会出现在菜单管理中，注意，在选择生成菜单的时候你可以选择“标签显示”，这样就可以生成标签，就像最上面的 <font color="#008000">列表 添加 导入 主题向导 工具 </font>标签一样。</p>
<p align="left">如果你输出的是页面，则在 URL 下显示的就是你的页面的地址，注意，它可以覆盖已有的页面，譬如例子里的 <font color="#008000">taxonomy/term/$arg</font> ，这里的 $arg 是一个 argument，这里我定义的是 term 的 id，这样它就可以覆盖所有 taxonomy/term 下的显示方式，类似个通配符，把诸如 taxonomy/term/1 ; taxonomy/term/2 等等都按照我定义的方式来显示。</p>
<p align="left">最后一栏是可以进行的操作，上面已经说的很清楚了。你可以利用编辑你创建的视图，导出你自己定义的视图，删除它，或者是复制一份。</p>
<p align="left">今天先到这里，下一次具体剖析一个视图的例子，讨论一下每一部分的含义。</p>
</p>
    ]]></content>
  </entry>
  <entry>
    <title>Views 模块教程 （一）：简介</title>
    <link rel="alternate" type="text/html" href="http://www.kzeng.info/node/1545" />
    <id>http://www.kzeng.info/node/1545</id>
    <published>2007-04-16T19:05:28-05:00</published>
    <updated>2007-04-16T19:08:03-05:00</updated>
    <author>
      <name>kzeng</name>
    </author>
    <category term="Drupal 教程" />
    <category term="drupal模块" />
    <category term="views 模块" />
    <category term="Drupal" />
    <summary type="html"><![CDATA[<p>
<p><em>懒了很久，终于动笔写这个教程，α 版。</em></p>
<p>打个比方来说明一下 Views 的作用： Drupal 的核心就像一个毛坯房，墙窗户门都有了，也简单的粉刷过了，搬进来也能住；外观主题 （Theme）就像室内装修，可以按照自己的喜好来铺地板或是地毯，选择各种各样喜欢的墙纸（现在装修还需要墙纸么？hoho，俺对装修的概念还停留在10年前^_^）等等；模块呢，就好比家具，电器之类的，有了模块可以方便实现各种方便的功能，大部分模块都像冰箱电视一样，启动，摆在那里就行了，但是有些模块可以说是大工程，譬如 CCK，可以让你建设新屋子，有些是中等工程，譬如 <a href="http://drupal.org/project/views">views</a>，它可以打掉你屋子之间的墙，改变屋子的格局，Drupal 的是建立在 node 上的，而views 的核心功能就是帮助你改变 node 的组织与显示模式。</p>
</p>
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
<p><em>懒了很久，终于动笔写这个教程，α 版。</em></p>
<p>打个比方来说明一下 Views 的作用： Drupal 的核心就像一个毛坯房，墙窗户门都有了，也简单的粉刷过了，搬进来也能住；外观主题 （Theme）就像室内装修，可以按照自己的喜好来铺地板或是地毯，选择各种各样喜欢的墙纸（现在装修还需要墙纸么？hoho，俺对装修的概念还停留在10年前^_^）等等；模块呢，就好比家具，电器之类的，有了模块可以方便实现各种方便的功能，大部分模块都像冰箱电视一样，启动，摆在那里就行了，但是有些模块可以说是大工程，譬如 CCK，可以让你建设新屋子，有些是中等工程，譬如 <a href="http://drupal.org/project/views">views</a>，它可以打掉你屋子之间的墙，改变屋子的格局，Drupal 的是建立在 node 上的，而views 的核心功能就是帮助你改变 node 的组织与显示模式。</p>
<p><!--break-->
<p>举几个可能会用到 views 的例子：</p>
<ul>
<li>你希望首页的内容以不同的顺序显示。譬如不是按照从新到旧的顺序，而是按照“热门”程度（浏览次数，评论数目）；
<li>你希望改变 taxonomy/term 的展现方式。当你点开某个 term 的时候，你看到的是这个 term 下内容的按照张贴顺修的列表，譬如你想改变这个列表的显示方式。默认的显示方式是“题目加摘要”，但是你希望它是以table的形式一目了然的显示所有必要的信息；
<li>你想用 /tracker 来跟踪最新的帖子，但是只希望某些类型的帖子显示（譬如，你的CMS站是销售某种产品的，你只希望在 tracker 中显示最新添加的产品，而不包括论坛的讨论贴）
<li>你想在区块（block）中显示某个分类下的最新的帖子；
<li>你想为用户现实“未读的论坛帖子”；
<li>你希望有一个类似“按月归档”的区块，可以方便访客按照时间来查询帖子；</li>
</ul>
<p>如果你希望以上的功能，那么 views 模块是绝对必要的。这个教程大致按照如下计划书写，第二部分讨论如何试用一些“罐装”好的非常实用的 views 代码；第三部分举例说明写如何自己按照需要定制 views；第四部分讨论如何利用 views 和 cck 相结合，随心所欲的打造你需要的功能与现实效果。一言以蔽之，使用了 cck + views 之后，再加上一些简单的主题与css的技巧，基本上没有 drupal 仿造不出来的网站，也就是说你的毛坯房也可以改造为希尔顿：）</p>
</p>
    ]]></content>
  </entry>
</feed>
