设计师学Drupal

前言

Drupal不适合设计师使用吗?

是不是没有php知识就应该放弃Drupal?

虽然熟悉php对您精通Drupal绝对是必须的,但强大的Drupal和其功能丰富的贡献模块可以让您在很多情况下绕开php让人头晕目眩的代码丛林(感谢Drupal开源社区),走在舒适的溪边小路上,享受水滴动听的潺潺声:),而《设计师学Drupal》正是这种小道的一份指引地图。

《设计师学Drupal》是xDrupal.org首个Drupal视频教程,基于Drupal6.x,以一个简单的项目作为目标,从设计师的角度详细展现了用Drupal创建网站的整个流程,适合于像我一样对程序语言一窍不通但对Drupal有强烈兴趣的设计师和Drupal初级用户。

注意:此系列视频中所述观点和方法可能并不完全正确或并非最佳的途径或流程,也仅涉及了Drupal的一小部分知识,权且作抛砖引玉之图。盼各位Drupal爱好者不吝赐教,分享您们的知识和经验;并希望带给刚刚接触Drupal的设计师些许帮助。

您可以在http://xdrupal.org/DLD观看本系列教程,查看稍后可能的对其的补遗和勘误,并发表对本教程的意见和建议。您的反馈是我最大的动力!

版权声明

系列视频1采用署名-非商业性使用 3.0 Unported许可发布,您可以免费下载、观看、传播此作品,但未经作者许可不得用于商业用途,谢谢!

1.此许可不包括教程中所包含的Lisa Zhang任何照片。所有照片的版权和肖像权归Lisa Zhang所有,只作为xdrupal.org的《设计师学Drupal》教程(http://xdrupal.org/DLD)辅助学习之用,任何个人或单位未经许可不得随意使用,不得随意公开传播或做任何商业用途。

资源

视频中所提及资源如果可能都将在xDrupal.org提供下载或下载链接,下载或使用它们的时候您也须遵守其版权声明。

教程中提及的相关资源请至手册中相应章节下载。

清晰版视频下载页面:

http://www.verycd.com/topics/2789315/

请使用eMule下载此资源!

即日起(2010-04-08),同时提供网盘的发布方式,请在此文章中查看更新。 另:如果方便,希望能将文件放在eMule的共享文件夹帮忙供源,谢谢!

网盘下载链接:

  1. http://u.115.com/file/f5b1deecaa   了解这个教程 [查看本节页面]
  2. http://u.115.com/file/f57032db51   xampp的安装和配置 [查看本节页面]
  3. http://u.115.com/file/f5ea11cc5b   安装Drupal及其第三方模块和主题 [查看本节页面]
  4. http://u.115.com/file/f528b402fe   Drupal管理界面概述 [查看本节页面]
  5. http://u.115.com/file/f5231c4d97   创建网站内容-A [查看本节页面]
  6. http://u.115.com/file/f5468753f8   创建网站内容-B [查看本节页面]
  7. http://u.115.com/file/f5500b98cc   使用Views创建album列表页 [查看本节页面]
  8. http://u.115.com/file/f5256012bb   更正和其他补充 [查看本节页面]
  9. http://u.115.com/file/f5c5b5b952   主题化-A-创建主题 [查看本节页面]
  10. http://u.115.com/file/f51e6689bf   主题化-B-使用模板(page.tpl.php) [查看本节页面]
  11. http://u.115.com/file/f5fbdeed40   主题化-C-使用模板(node.tpl.php) [查看本节页面]
  12. http://u.115.com/file/f5f99fc182   主题化-D-使用模板(block.tpl.php等) [查看本节页面]

《设计师学Drupal》墙纸系列

N/A
Attribution

标准墙纸

DLD标准墙纸

LOST-最后的晚餐

DLD墙纸Lost淡灰

DLD墙纸Lost淡灰

喜欢LOST的朋友可能早就注意到了,此系列视频的片头和片尾都是模仿的这部剧集,一是因为个人很喜欢;二是我接触Drupal之初的时候感觉她就像LOST一样,那么多的精彩带给你乐趣,那么多的谜团和未知等着你来破解。(做这个视频教程,也是希望在梳理Drupal学习经验和知识的同时,能给各位刚接触Drupal的朋友些许帮助。但愿在LOST完结的时候自己对Drupal也能有个更加清晰的认识;))所以我觉得用LOST的风格来做片头是不挺不错的主意,呵呵。 LOST最终季回归。在继续做后面的主题部分的教程前,用LOST的最终季海报-最后的晚餐改了个墙纸玩玩,顺便和前面的墙纸一块分享一下^_^。点击小图查看或下载1280*1024分辨率墙纸,zip包见附件。

DLD墙纸Lost灰背景

DLD墙纸Lost灰背景

DLD墙纸Lost正常

DLD墙纸Lost正常

AttachmentSize
DLD_Wallpaper.zip1.52 MB

你喜欢这个教程吗?

还好,希望看到后续的教程。
98% (64 票)
不怎么样哦,我不喜欢!
0% (0 票)
糟糕透了,什么烂教程嘛!
2% (1 票)
投票统计: 65

了解这个教程(视频)

【这个教程适合哪些人?】

此视频教程基于Drupal6.x,以一个简单的项目作为目标,从我个人的习惯和角度比较详细展现了用Drupal创建网站的整个流程,适合于像我一样对程序语言一窍不通但对Drupal有强烈兴趣的设计师和Drupal初级用户。
 
限于本人的水平有限,本教程并不会很系统地讲解Drupal。但我努力地把它做成一个有特色的教程。 

【设计稿】

刚才我有说到,这个教程中的项目会是一个比较简单的网站,现在就让我们看看我之前已经做好的一个设计稿,来大致地了解一下这个网站的结构。这个网站是我为一个朋友(Lisa)做的个人网站。它的内容主要分两块:日志和相册。

如果大家需要,稍后可能会提供psd源文件。

ps.本教程将会采用一边制作一边发布的方式,如果你对此网站的结构、内容有什么好的建议和想法,请告诉我,我会酌情考虑,如果可能我会调整方案并更新到后续的教程当中。

【获得更多信息和反馈】

请到http://xDrupal.org/DLD

AttachmentSize
Lisas_Sites_Sample.zip3.56 MB

XAMPP的安装和配置(视频)

本节介绍了Drupal在你的本地计算机运行所需的环境的安装和配置,我们这里选择的是XAMPP这个集成环境。具体内容为:

  1. 下载并安装XAMPP。
    注:这里我们介绍的是linux(ubuntu 9.10)中的安装方法。windows版本XAMPP的安装方法可以查看官方的指南,或Justin的中文视频教程:《小猪快跑Drupal视频教程1 - 安装Drupal
  2. 在ubuntu里共享之前在winows下已有的XAMPP的web目录和数据库。(相关链接:Ubuntu共享Windows下Xampp的htdocs和数据库目录
    注:如果你使用单操作系统或不需要共享win下的XAMPP,请跳过这一步。
  3. 修改php.ini解决内存分配过小的问题。
    注:windows下php.ini文件位于“xampp\php”目录中。
  4. 开启简洁链接支持。
  5. 配置本地开发域名。
    1. 添加并编辑自己的配置文件httpd-xdrupal.conf
      注:windows下httpd.conf文件位于“xampp\apache\conf”目录中。

       NameVirtualHost *:80
      <VirtualHost *:80>
          DocumentRoot "/windows/sda6/xampp/htdocs"
          ServerName localhost
      </virtualHost>
      <VirtualHost *:80>
          DocumentRoot "/windows/sda6/xampp/htdocs/drupal"
          ServerName xdrupal.dev
      </virtualHost>
      <VirtualHost *:80>
          DocumentRoot "/windows/sda6/xampp/htdocs/lisa"
          ServerName lisa.dev
      </virtualHost>
    2. 修改系统中的hosts文件: 127.0.1.1       lisa.dev

 

安装Drupal及其第三方模块和主题的方法(视频)

本节介绍了Drupal(6.15)的安装方法。以及通过安装admin menu模块和Garland-X主题在了解模块和主题的安装方法的同时增进管理界面到访问效率和改进中文界面下Garland主题(Drupal 6.x默认主题)部分文字过小的问题。

Drupal管理界面概述(视频)

这一节我们会对Drupal的后台管理界面进行一个简单的概述。

:本概述并不会详细深入地介绍各个功能,它只是一个通览,以便不熟悉Drupal的朋友快速地了解Drupal的后台界面。在使用某些具体功能时会做详细的介绍。

创建网站内容-A(视频)

1.下载并启用教程中网站所需的模块:

模块和用途 项目页链接
admin menu
提供一个下拉菜单让你点击一两次鼠标就快速地访问大多数管理任务和其他常用的页面。
http://drupal.org/project/admin_menu
captcha
验证码模块。
http://drupal.org/project/captcha
cck
创建自定义内容类型。
http://drupal.org/project/cck
filefield
cck相关模块,创建上传文件的字段。
http://drupal.org/project/filefield
imagefield
cck相关模块,创建上传图片的字段。
http://drupal.org/project/imagefield
contemplate
内容模板。为node部分创建自定义模板的一个辅助模块。
http://drupal.org/project/contemplate
devel
开发类模块。其中的theme developer可以很方便的获得主题开发信息。
http://drupal.org/project/devel
fckeditor
所见即所得编辑器。
http://drupal.org/project/fckeditor
globalredirect
url重定向模块,利于seo。
http://drupal.org/project/globalredirect
imageapi
为imagecache所依赖。
http://drupal.org/project/imageapi
imagecache
好用的图片模块,可以用来生成自定义大小、裁切方式等等的缩略图。添加相应action还可以用来生成有水印图片、增加特效等。
http://drupal.org/project/imagecache
imce
图片类模块。可以生成缩略图。但我通常只用它来扩展fck的图片上传功能。
http://drupal.org/project/imce
pathauto
按照你所定义的规则自动生成url别名的模块,很强大,seo必备模块。
http://drupal.org/project/pathauto
注:2.x-dev这个版本自带字符转换的功能。
http://drupal.org/node/273527
thickbox
图片展示模块。类似的模块还有lightbox2。
http://drupal.org/project/thickbox
token
提供方便好用的置换符功能。
http://drupal.org/project/token
transliteration
用于解决上传中文文件名文件乱码以致找不到文件的问题。
http://drupal.org/project/transliteration
views
生成自定义节点或其他类型的列表。
http://drupal.org/project/views

2.创建和配置内容类型

3.添加和配置词汇表

创建“相册分类”的词汇表,并添加如下术语

创建网站内容-B(视频)

  1. 配置权限、开启文章访问统计
  2. 发布内容(配置fckeditor、imce)

    Filtered HTML中添加的允许使用的HTML标签:
    <a> <p> <span> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <th> <tr> <td> <em> <b> <u> <i> <strong> <font> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike> <caption>
  3. 配置其他模块

使用Views创建album列表页(视频)

注意:视频中提到的“视图实例”指Views中的“Display”(我觉得这样翻译比较恰当)。
albume Display中的Rewrite文本

 [field_photos_fid]
<h2 class="albumtitle">
[field_photos_data]@[title]</h2>
<p class="count">[totalcount][comments_link]</p>
<p class="tid">[tid]</p>

  1. 约4分39秒处,grid样式应该是table的输出,而不是视频中所说“也是div标签……”;
  2. 约31分41秒处,tid是它本身,但仍需要写进去;以及后面视图混乱不是因为链接导致嵌套的问题,而是因为term有多个值的原因造成的。

《设计师学Drupal》系列教程Demo站上线(已移除)

Demo站已移除,请访问 http://xdrupal.org/DLD/source-package-database 下载源码包和数据库。

Demo站地址: http://Lisa.xDrupal.org

《设计师学Drupal》系列教程Demo站上线。这两天抽空把教程中的网站做好了,后面即将发布的教程会介绍其主题化方法和流程。请大家对教程和Demo站多提意见,以便我对后续教程做更好的改进:)。

开了一个名为“guest”的“站长”角色的用户给各位朋友测试,但请不要删除现有图片或文章!此Demo站和“guest”帐号只会保留一段时间,过阵子都会删除掉。希望大家测试后能在此留下您的感言

用户名:Guest

密码(注意大小写):xDrupal

登录: http://lisa.xdrupal.org/user

或点此图标登录
在此可访问管理项目

非电信用户可能需要代理才可访问。

现已更换服务器,非电信用户也可正常访问:)

后续教程制作中…

更正和其他补充(视频)

  1. 此一节视频中更正了之前一节中的两个较大的错误说法;
  2. 修改了album这个view的一些配置,并用views添加了一个新的页面“内容管理”(详见: htt://lisa.xdrupal.org/myContent ,需要登录);
  3. 以及补充介绍了captcha模块的使用。
  4. album页面的views代码

    $view = new view;
    $view->name = 'album';
    $view->description = '';
    $view->tag = '';
    $view->view_php = '';
    $view->base_table = 'node';
    $view->is_cacheable = FALSE;
    $view->api_version = 2;
    $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
    $handler = $view->new_display('default', 'Defaults', 'default');
    $handler->override_option('fields', array(
      'field_photos_fid' => array(
        'label' => '',
        'alter' => array(
          'alter_text' => 0,
          'text' => '',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'link_to_node' => 0,
        'label_type' => 'none',
        'format' => '300-190_SC_linked',
        'multiple' => array(
          'group' => 1,
          'multiple_number' => '1',
          'multiple_from' => '0',
          'multiple_reversed' => 0,
        ),
        'exclude' => 1,
        'id' => 'field_photos_fid',
        'table' => 'node_data_field_photos',
        'field' => 'field_photos_fid',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'title' => array(
        'label' => '',
        'alter' => array(
          'alter_text' => 0,
          'text' => '',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 1,
          'max_length' => '30',
          'word_boundary' => 0,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'link_to_node' => 1,
        'exclude' => 1,
        'id' => 'title',
        'table' => 'node',
        'field' => 'title',
        'relationship' => 'none',
      ),
      'comments_link' => array(
        'label' => '',
        'alter' => array(
          'alter_text' => 0,
          'text' => '',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'teaser' => 1,
        'exclude' => 1,
        'id' => 'comments_link',
        'table' => 'node',
        'field' => 'comments_link',
        'relationship' => 'none',
        'override' => array(
          'button' => 'Override',
        ),
      ),
      'tid' => array(
        'label' => '',
        'alter' => array(
          'alter_text' => 0,
          'text' => '',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'type' => 'separator',
        'separator' => '|',
        'link_to_taxonomy' => 1,
        'limit' => 0,
        'vids' => array(
          '2' => 0,
          '1' => 0,
        ),
        'exclude' => 1,
        'id' => 'tid',
        'table' => 'term_node',
        'field' => 'tid',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'field_photos_data' => array(
        'label' => '',
        'alter' => array(
          'alter_text' => 0,
          'text' => '[field_photos_data]@',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 1,
          'max_length' => '20',
          'word_boundary' => 0,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'link_to_node' => 0,
        'data_key' => 'title',
        'exclude' => 1,
        'id' => 'field_photos_data',
        'table' => 'node_data_field_photos',
        'field' => 'field_photos_data',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'comment_count' => array(
        'label' => '',
        'alter' => array(
          'alter_text' => 0,
          'text' => '',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'set_precision' => FALSE,
        'precision' => 0,
        'decimal' => '.',
        'separator' => ',',
        'prefix' => '',
        'suffix' => '',
        'exclude' => 1,
        'id' => 'comment_count',
        'table' => 'node_comment_statistics',
        'field' => 'comment_count',
        'relationship' => 'none',
      ),
      'totalcount' => array(
        'label' => '',
        'alter' => array(
          'alter_text' => 1,
          'text' => '<div class="list albumList">
    [field_photos_fid]
    <div class="hide">
    <h2 class="albumtitle"><em>[field_photos_data]@</em>[title]</h2>
    <p class="count">[totalcount]</p>[comments_link]
    <p class="tid">[tid]</p>
    </div>
    </div>',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'set_precision' => FALSE,
        'precision' => 0,
        'decimal' => '.',
        'separator' => ',',
        'prefix' => '',
        'suffix' => '',
        'exclude' => 0,
        'id' => 'totalcount',
        'table' => 'node_counter',
        'field' => 'totalcount',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
    ));
    $handler->override_option('sorts', array(
      'created' => array(
        'order' => 'DESC',
        'granularity' => 'second',
        'id' => 'created',
        'table' => 'node',
        'field' => 'created',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
    ));
    $handler->override_option('filters', array(
      'status' => array(
        'operator' => '=',
        'value' => '1',
        'group' => '0',
        'exposed' => FALSE,
        'expose' => array(
          'operator' => FALSE,
          'label' => '',
        ),
        'id' => 'status',
        'table' => 'node',
        'field' => 'status',
        'relationship' => 'none',
      ),
      'type' => array(
        'operator' => 'in',
        'value' => array(
          'album' => 'album',
        ),
        'group' => '0',
        'exposed' => FALSE,
        'expose' => array(
          'operator' => FALSE,
          'label' => '',
        ),
        'id' => 'type',
        'table' => 'node',
        'field' => 'type',
        'relationship' => 'none',
      ),
      'delta' => array(
        'operator' => '=',
        'value' => array(
          'value' => '0',
          'min' => '',
          'max' => '',
        ),
        'group' => '0',
        'exposed' => FALSE,
        'expose' => array(
          'operator' => FALSE,
          'label' => '',
        ),
        'id' => 'delta',
        'table' => 'node_data_field_photos',
        'field' => 'delta',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'tid' => array(
        'operator' => 'or',
        'value' => array(),
        'group' => '0',
        'exposed' => TRUE,
        'expose' => array(
          'use_operator' => 0,
          'operator' => 'tid_op',
          'identifier' => 'tid',
          'label' => '请选择相册分类',
          'optional' => 1,
          'single' => 1,
          'remember' => 0,
          'reduce' => 0,
        ),
        'type' => 'select',
        'limit' => TRUE,
        'vid' => '2',
        'id' => 'tid',
        'table' => 'term_node',
        'field' => 'tid',
        'hierarchy' => 0,
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
        'reduce_duplicates' => 0,
      ),
    ));
    $handler->override_option('access', array(
      'type' => 'none',
    ));
    $handler->override_option('cache', array(
      'type' => 'none',
    ));
    $handler->override_option('title', '相册');
    $handler->override_option('use_pager', '1');
    $handler->override_option('distinct', 0);
    $handler->override_option('row_options', array(
      'inline' => array(),
      'separator' => '',
      'hide_empty' => 0,
    ));
    $handler = $view->new_display('page', '相册列表', 'page_1');
    $handler->override_option('path', 'album');
    $handler->override_option('menu', array(
      'type' => 'normal',
      'title' => '相册',
      'description' => '我的相册',
      'weight' => '3',
      'name' => 'primary-links',
    ));
    $handler->override_option('tab_options', array(
      'type' => 'none',
      'title' => '',
      'description' => '',
      'weight' => 0,
    ));

    myContent页面的views代码

    $view = new view;
    $view->name = 'contentadmin';
    $view->description = '';
    $view->tag = '';
    $view->view_php = '';
    $view->base_table = 'node';
    $view->is_cacheable = FALSE;
    $view->api_version = 2;
    $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
    $handler = $view->new_display('default', 'Defaults', 'default');
    $handler->override_option('fields', array(
      'field_photos_fid' => array(
        'label' => '相册封面',
        'alter' => array(
          'alter_text' => 0,
          'text' => '',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '<del>相册</del>',
        'hide_empty' => 1,
        'empty_zero' => 0,
        'link_to_node' => 0,
        'label_type' => 'custom',
        'format' => '40-40_SC_linked',
        'multiple' => array(
          'group' => 1,
          'multiple_number' => '1',
          'multiple_from' => '0',
          'multiple_reversed' => 0,
        ),
        'exclude' => 0,
        'id' => 'field_photos_fid',
        'table' => 'node_data_field_photos',
        'field' => 'field_photos_fid',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'type' => array(
        'label' => '内容类型',
        'alter' => array(
          'alter_text' => 0,
          'text' => '',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'link_to_node' => 0,
        'exclude' => 0,
        'id' => 'type',
        'table' => 'node',
        'field' => 'type',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'title' => array(
        'label' => '标题',
        'alter' => array(
          'alter_text' => 0,
          'text' => '[title]<div class="body">[body]</div>',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'link_to_node' => 1,
        'exclude' => 0,
        'id' => 'title',
        'table' => 'node',
        'field' => 'title',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'created' => array(
        'label' => '创建时间',
        'alter' => array(
          'alter_text' => 0,
          'text' => '',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'date_format' => 'custom',
        'custom_date_format' => 'Y-n-d',
        'exclude' => 0,
        'id' => 'created',
        'table' => 'node',
        'field' => 'created',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'changed' => array(
        'label' => '更新时间',
        'alter' => array(
          'alter_text' => 0,
          'text' => '',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'date_format' => 'custom',
        'custom_date_format' => 'Y-n-d',
        'exclude' => 0,
        'id' => 'changed',
        'table' => 'node',
        'field' => 'changed',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'edit_node' => array(
        'label' => '编辑',
        'alter' => array(
          'alter_text' => 0,
          'text' => '',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'text' => '编辑',
        'exclude' => 0,
        'id' => 'edit_node',
        'table' => 'node',
        'field' => 'edit_node',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'sticky' => array(
        'label' => '置顶',
        'alter' => array(
          'alter_text' => 0,
          'text' => '',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'type' => 'yes-no',
        'not' => 0,
        'exclude' => 0,
        'id' => 'sticky',
        'table' => 'node',
        'field' => 'sticky',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'status' => array(
        'label' => '已发表',
        'alter' => array(
          'alter_text' => 0,
          'text' => '',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'type' => 'yes-no',
        'not' => 0,
        'exclude' => 0,
        'id' => 'status',
        'table' => 'node',
        'field' => 'status',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'delete_node' => array(
        'label' => '删除',
        'alter' => array(
          'alter_text' => 0,
          'text' => '',
          'make_link' => 0,
          'path' => '',
          'link_class' => '',
          'alt' => '',
          'prefix' => '',
          'suffix' => '',
          'target' => '',
          'help' => '',
          'trim' => 0,
          'max_length' => '',
          'word_boundary' => 1,
          'ellipsis' => 1,
          'strip_tags' => 0,
          'html' => 0,
        ),
        'empty' => '',
        'hide_empty' => 0,
        'empty_zero' => 0,
        'text' => '删除',
        'exclude' => 0,
        'id' => 'delete_node',
        'table' => 'node',
        'field' => 'delete_node',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
    ));
    $handler->override_option('sorts', array(
      'timestamp' => array(
        'order' => 'DESC',
        'granularity' => 'second',
        'id' => 'timestamp',
        'table' => 'node_revisions',
        'field' => 'timestamp',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'created' => array(
        'order' => 'DESC',
        'granularity' => 'second',
        'id' => 'created',
        'table' => 'node',
        'field' => 'created',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'sticky' => array(
        'order' => 'ASC',
        'id' => 'sticky',
        'table' => 'node',
        'field' => 'sticky',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'changed' => array(
        'order' => 'DESC',
        'granularity' => 'second',
        'id' => 'changed',
        'table' => 'node',
        'field' => 'changed',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
    ));
    $handler->override_option('filters', array(
      'type' => array(
        'operator' => 'in',
        'value' => array(),
        'group' => '0',
        'exposed' => TRUE,
        'expose' => array(
          'use_operator' => 0,
          'operator' => 'type_op',
          'identifier' => 'type',
          'label' => '内容类型',
          'optional' => 1,
          'single' => 1,
          'remember' => 0,
          'reduce' => 0,
        ),
        'id' => 'type',
        'table' => 'node',
        'field' => 'type',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
      'status' => array(
        'operator' => '=',
        'value' => 'All',
        'group' => '0',
        'exposed' => TRUE,
        'expose' => array(
          'operator' => '',
          'identifier' => 'status',
          'label' => '发表状态',
          'optional' => 1,
          'remember' => 0,
        ),
        'id' => 'status',
        'table' => 'node',
        'field' => 'status',
        'override' => array(
          'button' => 'Override',
        ),
        'relationship' => 'none',
      ),
    ));
    $handler->override_option('access', array(
      'type' => 'role',
      'role' => array(
        '3' => 3,
      ),
    ));
    $handler->override_option('cache', array(
      'type' => 'none',
    ));
    $handler->override_option('title', '内容管理');
    $handler->override_option('items_per_page', 25);
    $handler->override_option('use_pager', '1');
    $handler->override_option('style_plugin', 'table');
    $handler->override_option('style_options', array(
      'grouping' => '',
      'override' => 1,
      'sticky' => 1,
      'order' => 'desc',
      'columns' => array(
        'field_photos_fid' => 'field_photos_fid',
        'type' => 'type',
        'title' => 'title',
        'edit_node' => 'edit_node',
        'delete_node' => 'delete_node',
        'created' => 'created',
        'changed' => 'changed',
      ),
      'info' => array(
        'field_photos_fid' => array(
          'separator' => '',
        ),
        'type' => array(
          'sortable' => 0,
          'separator' => '',
        ),
        'title' => array(
          'sortable' => 1,
          'separator' => '',
        ),
        'edit_node' => array(
          'separator' => '',
        ),
        'delete_node' => array(
          'separator' => '',
        ),
        'created' => array(
          'sortable' => 1,
          'separator' => '',
        ),
        'changed' => array(
          'sortable' => 1,
          'separator' => '',
        ),
      ),
      'default' => 'changed',
    ));
    $handler = $view->new_display('page', '内容管理列表页', 'page_1');
    $handler->override_option('header', '可根据“内容类型”和“发表状态”过滤内容列表,点击表格头部非灰色文字可用其排序。<a href="/admin/content/node">批量管理内容请点击此处!</a>');
    $handler->override_option('header_format', '1');
    $handler->override_option('header_empty', 1);
    $handler->override_option('empty', '暂无任何内容,现在<a href="/node/add">添加内容</a>!');
    $handler->override_option('empty_format', '1');
    $handler->override_option('path', 'myContent');
    $handler->override_option('menu', array(
      'type' => 'none',
      'title' => '',
      'description' => '',
      'weight' => 0,
      'name' => 'navigation',
    ));
    $handler->override_option('tab_options', array(
      'type' => 'none',
      'title' => '',
      'description' => '',
      'weight' => 0,
    ));

主题化-A-创建主题(.info文件)(视频)

本节主要围绕.info文件展开对创建Drupal主题的介绍。

相关链接:

官方链接 中文译文(by 老葛)
Theming Drupal 6 and 7: http://drupal.org/theme-guide/6 Drupal主题制作指南(v6)**: http://zhupou.cn/theme-guide-drupal-6
Overview of theme files: http://drupal.org/node/171194 对一个Drupal主题的剖析*: http://zhupou.cn/theme-guide-drupal-6/anatomy-of-a-drupal-theme
Structure of the .info file: http://drupal.org/node/171205 主题的.info文件*: http://zhupou.cn/theme-guide-drupal-6/info-files-for-themes
Default .info values: http://drupal.org/node/171205 .info的默认值*: http://zhupou.cn/theme-guide-drupal-6/default-info-values

*注:为老葛的译文。 **注:官方的更名为了“Theming Drupal 6 and 7”,而不只针对6.x,里面的内容可能也有更新。

lisa主题的.info文件:

name = lisa
description = lisa个人网站专用主题,<a href="http://xdrupl.org">xDrupal</a> 制作。
core = 6.x
engine = phptemplate

stylesheets[screen][] = style/lisa.css
stylesheets[screen][] = style/modules.css
stylesheets[print][] = style/print.css

scripts[] = js/jquery-ui-full-1.js
scripts[] = js/lisa.js

regions[header] = Header
regions[sidebar] = Sidebar
regions[content] = Content
regions[footer] = Footer

主题化-B-使用tpl模板定制XHTML(page.tpl.php)(视频)

本节开始学习使用Drupal的模板来定制XHTML输出,大部分情况下使用模板文件即可满足我们的需求。

相关链接:

Drupal主题模板简图

本例区域示意图

page.tpl.php源码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language ?>" lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">

<head>
  <?php print $head; ?>
  <title><?php print $head_title; ?></title>
  <?php print $styles; ?>
  <?php print $scripts; ?>
  <script type="text/javascript"><?php /* Needed to avoid Flash of Unstyled Content in IE */ ?> </script>
</head>
<body class="root <?php print $body_classes; ?> no-scroller node-<?php print $node->nid;; ?>">
  <div id="wrap">
    <div id="header">
      <div id="logo-title">

        <?php if (!empty($logo)): ?>
          <a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>" rel="home" id="logo">
            <img src="<?php print $logo; ?>" alt="<?php print t('Home'); ?>" />
          </a>
        <?php endif; ?>

          <?php if (!empty($site_name)): ?>
            <h2 id="site-name">
              <a href="<?php print $front_page ?>" title="<?php print t('Home'); ?>" rel="home"><span><?php print $site_name; ?></span></a>
            </h2>
          <?php endif; ?>

          </div> <!-- /logo-title -->

      <?php if (!empty($search_box)): ?>
        <div id="search-box"><?php print $search_box; ?></div>
      <?php endif; ?>

      <?php if (!empty($header)): ?>
        <div id="header-region">
          <?php print $header; ?>
        </div>
      <?php endif; ?>
     
        <?php if (!empty($breadcrumb)): ?><div id="breadcrumb"><?php print $breadcrumb; ?></div><?php endif; ?>

    </div> <!-- /header -->


        <div id="sidebar">
              <div id="navigation" class="menu <?php if (!empty($primary_links)) { print "withprimary"; } if (!empty($secondary_links)) { print " withsecondary"; } ?> ">
        <?php if (!empty($primary_links)): ?>
          <div id="primary" class="clear-block">
            <?php print theme('links', $primary_links, array('class' => 'primary-links')); ?>
          </div>
        <?php endif; ?>

        <?php if (!empty($secondary_links)): ?>
          <div id="secondary" class="clear-block">
            <?php print theme('links', $secondary_links, array('class' => 'links secondary-links')); ?>
          </div>
        <?php endif; ?>
      </div> <!-- /navigation -->
          <?php print $sidebar; ?>
        </div> <!-- /sidebar -->


      <div id="contentBox">
     
          <?php if (!empty($title)): ?>
            <h1 class="title" id="page-title"><?php print $title; ?></h1>
          <?php endif; ?>
     
        <div id="contentInner">    

       
        <?php if (!empty($mission)): ?>
          <div id="mission"><?php print $mission; ?></div>
        <?php endif; ?>

         
        <div id="content">
         
          <?php if (!empty($tabs)): ?>
            <div class="tabs"><?php print $tabs; ?></div>
          <?php endif; ?>
         
          <?php if (!empty($messages)): print $messages; endif; ?>
          <?php if (!empty($help)): print $help; endif; ?>
         
          <div id="content-content" class="clear-block">
            <?php print $content; ?>
          </div> <!-- /content-content -->
         
          <?php print $feed_icons; ?>
        </div> <!-- /content -->

       

        </div>
      </div> <!-- /contentInner /contentBox -->


  </div>  
   
      <div id="footer">
        <?php print $footer_message; ?>
        <?php if (!empty($footer)): print $footer; endif; ?>
      </div> <!-- /footer -->

    <?php print $closure; ?>

</body>
</html>

page-album.tpl.php源码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language ?>" lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">

<head>
  <?php print $head; ?>
  <title><?php print $head_title; ?></title>
  <?php print $styles; ?>
  <?php print $scripts; ?>
  <script type="text/javascript"><?php /* Needed to avoid Flash of Unstyled Content in IE */ ?> </script>
</head>
<body class="root <?php print $body_classes; ?> scroller">
  <div id="wrap">
    <div id="header">
      <div id="logo-title">

        <?php if (!empty($logo)): ?>
          <a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>" rel="home" id="logo">
            <img src="<?php print $logo; ?>" alt="<?php print t('Home'); ?>" />
          </a>
        <?php endif; ?>

          <?php if (!empty($site_name)): ?>
            <h2 id="site-name"><?php print $node->type; ?>
              <a href="<?php print $front_page ?>" title="<?php print t('Home'); ?>" rel="home"><span><?php print $site_name; ?></span></a>
            </h2>
          <?php endif; ?>

          </div> <!-- /logo-title -->

      <?php if (!empty($search_box)): ?>
        <div id="search-box"><?php print $search_box; ?></div>
      <?php endif; ?>

      <?php if (!empty($header)): ?>
        <div id="header-region">
          <?php print $header; ?>
        </div>
      <?php endif; ?>
     
        <?php if (!empty($breadcrumb)): ?><div id="breadcrumb"><?php print $breadcrumb; ?></div><?php endif; ?>

    </div> <!-- /header -->

        <div id="sidebar">
              <div id="navigation" class="menu <?php if (!empty($primary_links)) { print "withprimary"; } if (!empty($secondary_links)) { print " withsecondary"; } ?> ">
        <?php if (!empty($primary_links)): ?>
          <div id="primary" class="clear-block">
            <?php print theme('links', $primary_links, array('class' => 'primary-links')); ?>
          </div>
        <?php endif; ?>

        <?php if (!empty($secondary_links)): ?>
          <div id="secondary" class="clear-block">
            <?php print theme('links', $secondary_links, array('class' => 'links secondary-links')); ?>
          </div>
        <?php endif; ?>
      </div> <!-- /navigation -->
          <?php print $sidebar; ?>
        </div> <!-- /sidebar -->

      <div id="contentBox">
     
          <?php if (!empty($title)): ?>
            <h1 class="title" id="page-title"><?php print $title; ?></h1>
          <?php endif; ?>
     
        <div id="contentInner">    

       
        <?php if (!empty($mission)): ?>
          <div id="mission"><?php print $mission; ?></div>
        <?php endif; ?>

         
        <div id="content">
         
          <?php if (!empty($tabs)): ?>
            <div class="tabs"><?php print $tabs; ?></div>
          <?php endif; ?>
         
          <?php if (!empty($messages)): print $messages; endif; ?>
          <?php if (!empty($help)): print $help; endif; ?>
         
          <div id="content-content" class="clear-block">
            <?php print $content; ?>
          </div> <!-- /content-content -->
         
          <?php print $feed_icons; ?>
        </div> <!-- /content -->
       
        </div>
      </div> <!-- /contentInner /contentBox -->


  </div>  
   
      <div id="footer">
        <?php print $footer_message; ?>
        <?php if (!empty($footer)): print $footer; endif; ?>
      </div> <!-- /footer -->

    <?php print $closure; ?>

</body>
</html>

page-blog.tpl.php源码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language ?>" lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">

<head>
  <?php print $head; ?>
  <title><?php print $head_title; ?></title>
  <?php print $styles; ?>
  <?php print $scripts; ?>
  <script type="text/javascript"><?php /* Needed to avoid Flash of Unstyled Content in IE */ ?> </script>
</head>
<body class="root <?php print $body_classes; ?> scroller">
  <div id="wrap">
    <div id="header">
      <div id="logo-title">

        <?php if (!empty($logo)): ?>
          <a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>" rel="home" id="logo">
            <img src="<?php print $logo; ?>" alt="<?php print t('Home'); ?>" />
          </a>
        <?php endif; ?>

          <?php if (!empty($site_name)): ?>
            <h2 id="site-name">
              <a href="<?php print $front_page ?>" title="<?php print t('Home'); ?>" rel="home"><span><?php print $site_name; ?></span></a>
            </h2>
          <?php endif; ?>
     
        <?php if (!empty($breadcrumb)): ?><div id="breadcrumb"><?php print $breadcrumb; ?></div><?php endif; ?>

          </div> <!-- /logo-title -->

      <?php if (!empty($search_box)): ?>
        <div id="search-box"><?php print $search_box; ?></div>
      <?php endif; ?>

      <?php if (!empty($header)): ?>
        <div id="header-region">
          <?php print $header; ?>
        </div>
      <?php endif; ?>

    </div> <!-- /header -->

        <div id="sidebar">
              <div id="navigation" class="menu <?php if (!empty($primary_links)) { print "withprimary"; } if (!empty($secondary_links)) { print " withsecondary"; } ?> ">
        <?php if (!empty($primary_links)): ?>
          <div id="primary" class="clear-block">
            <?php print theme('links', $primary_links, array('class' => 'primary-links')); ?>
          </div>
        <?php endif; ?>

        <?php if (!empty($secondary_links)): ?>
          <div id="secondary" class="clear-block">
            <?php print theme('links', $secondary_links, array('class' => 'links secondary-links')); ?>
          </div>
        <?php endif; ?>
      </div> <!-- /navigation -->
          <?php print $sidebar; ?>
        </div> <!-- /sidebar -->

      <div id="contentBox">
     
          <?php if (!empty($title)): ?>
            <h1 class="title" id="page-title"><?php print $title; ?></h1>
          <?php endif; ?>
     
        <div id="contentInner">    

       
        <?php if (!empty($mission)): ?>
          <div id="mission"><?php print $mission; ?></div>
        <?php endif; ?>

         
        <div id="content">
         
          <?php if (!empty($tabs)): ?>
            <div class="tabs"><?php print $tabs; ?></div>
          <?php endif; ?>
         
          <?php if (!empty($messages)): print $messages; endif; ?>
          <?php if (!empty($help)): print $help; endif; ?>
         
          <div id="content-content" class="clear-block">
            <?php print $content; ?>
          </div> <!-- /content-content -->
         
          <?php print $feed_icons; ?>
        </div> <!-- /content -->
       
        </div>
      </div> <!-- /contentInner /contentBox -->


  </div>  
   
      <div id="footer">
        <?php print $footer_message; ?>
        <?php if (!empty($footer)): print $footer; endif; ?>
      </div> <!-- /footer -->

    <?php print $closure; ?>

</body>
</html>

page-front.tpl.php源码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language ?>" lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">

<head>
  <?php print $head; ?>
  <title><?php print $head_title; ?></title>
  <?php print $styles; ?>
  <?php print $scripts; ?>
  <script type="text/javascript"><?php /* Needed to avoid Flash of Unstyled Content in IE */ ?> </script>
</head>
<body class="root <?php print $body_classes; ?>">
  <div id="wrap">

    <h1 id="site-name"><?php print $site_name; ?></h1>
    <h2><a href="<?php print $front_page; ?>album">相册</a>/<a href="<?php print $front_page; ?>blog">日志</a></h2>
    <div id="footer">
      <?php print $footer_message; ?>
      <?php print $feed_icons; ?>
      <?php if (!empty($footer)): print $footer; endif; ?>
    </div>

  </div>  

    <?php print $closure; ?>

</body>
</html>

主题化-C-使用tpl模板定制XHTML(node.tpl.php)(视频)

本节介绍使用node.tpl.php来对节点部分的内容做主题化的定制。

相关链接:

node.tpl.php源码

<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?> clear-block">

<?php print $picture ?>

<?php if (!$page): ?>
  <h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>

  <?php if ($submitted): ?>
    <div class="meta">
      <?php print $submitted ?>
    </div>
  <?php endif; ?>

  <div class="content">
    <?php print $content ?>
  </div>

  <?php if ($terms): ?>
  <div class="terms">
    <?php print $terms ?>
  </div>
  <?php endif;?>
 
  <?php if ($links): ?>
  <div class="links">
    <?php print $links; ?>
  </div>
  <?php endif;?>
</div>

node-album.tpl.php源码

<?php global $base_url; ?>
<?php if ($teaser): ?>
<?php/*<!-- 摘要页面 -->*/?>
  <div class="list albumList<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?> ">
    <?php print $node->field_photos[0]['view']; ?>
    <div class="hide">
    <h2>
    <em><?php print drupal_substr($node->field_photos[0]['data']['title'], 0, 20); ?>@</em>
    <a href="<?php print $base_url . "/" . $node->path ;?>" title="<?php print $node->title ; ?>"><?php print drupal_substr($node->title, 0, 30); ?></a>
    </h2>
    <p class="count"><?php print $node->links['statistics_counter']['title'] ; ?>  <a href="<?php print $base_url . "/" . $node->path . "#comments" ;?>"><span class="comment"><?php print $comment_count; ?>次评论</span></a></p>
    <div class="tid"><?php print $terms ?></div>
    </div>
  </div>
<?php/*<!-- /摘要页面 -->*/?>
<?php endif;?>


<?php if ($page): ?>
<?php/*<!-- 完整节点页面 -->*/?>
<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?> clear-block">

<?php print $picture ?>

<?php if (!$page): ?>
  <h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>

  <?php if ($submitted): ?>
    <div class="meta">
      <?php print $submitted ?>
    </div>
  <?php endif; ?>
 


  <div class="content">

  <?php if ($node->content['body']['#value']):?>
    <div class="node-body">
    <?php print $node->content['body']['#value'] ?>
    </div>
  <?php endif ;?>
 
 
  <div class="node-photos">
 
  <?php if($node->content['field_photos']['field']['#label_display'] != 'hidden'):?>
    <h3 class="field-label"><?php print $node->content['field_photos']['field']['#title'] ;?></h3>
  <?php endif;?>

  <?php foreach ((array)$node->field_photos as $item) { ?>
      <div class="photo-item">
      <?php print $item['view'] ?>
      <?php if ($item['data']['title']): ?>
      <h4 class="hide"><?php print $item['data']['title']?></h4>
      <?php endif;?>
      </div>
  <?php } ?>

  </div>
 
  </div>

  <?php if ($terms): ?>
  <div class="terms">
    <?php print $terms ?>
  </div>
  <?php endif;?>
 
  <?php if ($links): ?>
  <div class="links">
    <?php print $links; ?>
  </div>
  <?php endif;?>
</div>
<?php/*<!-- /完整节点页面 -->*/?>
<?php endif;?>

node-blog.tpl.php源码

<?php global $base_url; ?>
<?php if ($teaser): ?>
<?php/*<!-- 摘要页面 -->*/?>

  <div class="list blogList<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?> ">

    <h2 class="title-blog"><a href="<?php print $base_url . "/" . $node->path ?>"><?php print $title ; ?></a></h2>
   
    <?php if ($submitted): ?>
      <div class="meta">
        <?php print $submitted ?>
      </div>
    <?php endif; ?>
   
    <div class="node-body">
    <?php print $node->content['body']['#value'] ; ?>
   
    <?php if ($terms): ?>
      <?php print $terms ?>
    <?php endif;?>

    </div>

    <?php if ($links): ?>
    <div class="links">
      <?php print $links; ?>
    </div>
    <?php endif;?>
   
  </div>
 
<?php/*<!-- /摘要页面 -->*/?>
<?php endif;?>


<?php if ($page): ?>
<?php/*<!-- 完整节点页面 -->*/?>

<?php include 'node.tpl.php' ;?>

<?php/*<!-- /完整节点页面 -->*/?>
<?php endif;?>

page-taxonomy.tpl.php源码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language ?>" lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">

<head>
  <?php print $head; ?>
  <title><?php print $head_title; ?></title>
  <?php print $styles; ?>
  <?php print $scripts; ?>
  <script type="text/javascript"><?php /* Needed to avoid Flash of Unstyled Content in IE */ ?> </script>
</head>
<body class="root <?php print $body_classes; ?> scroller">
  <div id="wrap">
    <div id="header">
      <div id="logo-title">

        <?php if (!empty($logo)): ?>
          <a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>" rel="home" id="logo">
            <img src="<?php print $logo; ?>" alt="<?php print t('Home'); ?>" />
          </a>
        <?php endif; ?>

          <?php if (!empty($site_name)): ?>
            <h2 id="site-name">
              <a href="<?php print $front_page ?>" title="<?php print t('Home'); ?>" rel="home"><span><?php print $site_name; ?></span></a>
            </h2>
          <?php endif; ?>

          </div> <!-- /logo-title -->

      <?php if (!empty($search_box)): ?>
        <div id="search-box"><?php print $search_box; ?></div>
      <?php endif; ?>

      <?php if (!empty($header)): ?>
        <div id="header-region">
          <?php print $header; ?>
        </div>
      <?php endif; ?>
     
        <?php if (!empty($breadcrumb)): ?><div id="breadcrumb"><?php print $breadcrumb; ?></div><?php endif; ?>

    </div> <!-- /header -->

         <div id="sidebar">
              <div id="navigation" class="menu <?php if (!empty($primary_links)) { print "withprimary"; } if (!empty($secondary_links)) { print " withsecondary"; } ?> ">
        <?php if (!empty($primary_links)): ?>
          <div id="primary" class="clear-block">
            <?php print theme('links', $primary_links, array('class' => 'primary-links')); ?>
          </div>
        <?php endif; ?>

        <?php if (!empty($secondary_links)): ?>
          <div id="secondary" class="clear-block">
            <?php print theme('links', $secondary_links, array('class' => 'links secondary-links')); ?>
          </div>
        <?php endif; ?>
      </div> <!-- /navigation -->
          <?php print $sidebar; ?>
        </div> <!-- /sidebar -->

      <div id="contentBox">
     
          <?php if (!empty($title)): ?>
            <h1 class="title" id="page-title"><?php print $title; ?></h1>
          <?php endif; ?>
     
        <div id="contentInner">    
       
        <?php if (!empty($mission)): ?>
          <div id="mission"><?php print $mission; ?></div>
        <?php endif; ?>
         
        <div id="content">
         
          <?php if (!empty($tabs)): ?>
            <div class="tabs"><?php print $tabs; ?></div>
          <?php endif; ?>
         
          <?php if (!empty($messages)): print $messages; endif; ?>
          <?php if (!empty($help)): print $help; endif; ?>
         
          <div id="content-content" class="clear-block">
            <?php print $content; ?>
          </div> <!-- /content-content -->
         
          <?php print $feed_icons; ?>
        </div> <!-- /content -->
       
        </div>
      </div> <!-- /contentInner /contentBox -->


  </div>  
   
      <div id="footer">
        <?php print $footer_message; ?>
        <?php if (!empty($footer)): print $footer; endif; ?>
      </div> <!-- /footer -->

    <?php print $closure; ?>

</body>
</html>

主题化-D-使用模板(block.tpl.php和其他)(视频)

本节介绍使用block.tpl.php和views的tpl来覆写区块的输出和优化views的html输出,这也是此系列教程的最后一节。

block-block-1.tpl.php源码

<?php global $base_url; ?>
<?php  global $user; ?>

<div id="block-<?php print $block->module .'-'. $block->delta; ?>" class="toolbar-block block-<?php print $block->module ?>">
  <?php if ($block->subject): ?>
    <h2><span><?php print $block->subject ?></span></h2>
  <?php endif;?>

<div class="content">

<?php if ($user->uid) : ?>


      <ul class="toolbar">
     
        <li class="user">[ <strong><?php print $user->name; ?></strong> ]
        <ul>
          <li class="profile"><a href="<?php print $base_url ."/user/" . $user->uid ;?>">个人账户</a></li>
           
          <li class="logout"><a class="logout" href="<?php print $base_url;?>/logout?destination=<?php print $base_url . request_uri()?>">退出</a></li>
        </ul>
        </li>
       
        <li class="content-add"><strong>发表内容</strong>
          <ul>
            <li class="blog"><a href="<?php print $base_url;?>/node/add/blog">写日志</a></li>
            <li class="album"><a href="<?php print $base_url;?>/node/add/album">上传相片</a></li>
          </ul>
        </li>
         
        <li class="admin"><strong>管理</strong>
          <ul>
            <li class="admin-content"><a href="<?php print $base_url;?>/myContent">内容管理</a></li>
            <li class="admin-comment"><a href="<?php print $base_url;?>/admin/content/comment">评论管理</a></li>
            <li class="admin-site"><a href="<?php print $base_url;?>/admin">站点管理</a></li>
          </ul>
        </li>

      </ul>
     
<?php else: ?>
 
    <p class="toolbar logout"><a class="login" href="<?php print $base_url;?>/user?destination=<?php print $base_url . request_uri()?>" title="站长登录">站长登录</a></p>
 
<?php endif; ?>

  </div>
</div>

views-exposed-form.tpl.php源码

<?php if (!empty($q)): ?>
  <?php
    // This ensures that, if clean URLs are off, the 'q' is added first so that
    // it shows up first in the URL.
    print $q;
  ?>
<?php endif; ?>
    <?php foreach($widgets as $id => $widget): ?>
        <?php if (!empty($widget->label)): ?>
          <label for="<?php print $widget->id; ?>">
            <?php print $widget->label; ?>
          </label>
        <?php endif; ?>
        <?php if (!empty($widget->operator)): ?>
            <?php print $widget->operator; ?>
        <?php endif; ?>
          <?php print $widget->widget; ?>
    <?php endforeach; ?>
      <?php print $button ?>

Lisa Zhang站点源码包和数据库

使用条款和须知:

  1. Lisa的所有照片(包括页面设计中所使用的背景图片和内容中的照片),其版权和肖像权归Lisa所有,你不能随意传播,更不允许用于商业目的;
  2. 除Lisa的所有照片之外,在不违背drupal的使用条款的情况下,此压缩包中的其他内容你都可以任意使用。如果直接用于制作站点,是否署名或保留xDrupal.org的链接随你高兴,但须移除Lisa的所有照片
  3. 此条款解释权归本站所有。
数据库信息

你可以在“settings.php里自行修改数据库链接”。

  • 数据库名称:lisa
  • 数据库用户名:root
  • 数据库密码:(空)
如何导入数据库?

在phpmyadmin中新建一个名为lisa的数据库,然后点击上方的导入标签,导入此数据库即可。你也可以建立其他名称的数据库,那么你需要在/sites/default/settings.php中修改相应的数据库名称。

网站管理信息

超级管理员

  • 用户名:无须猫
  • 密码:xDrupal

站长

  • 用户名:lisa
  • 密码:12345

下载地址:

AttachmentSize