page.tplphp <IDOCTYPE> <head tle(Shead title) metadata ( es secondary links(Ssecondary_links eader (Sheader site name(ssite nam site mission (Smission) search box (Ssearch box) primary links(Sprimary links Content Area content(Scontent) Sidebar Sidebar ages($messages】 Footer <ngngtagsaosurg 上图展示了Dage.tD1.hD的输出的各个部分和变量的信息 Drupale6的模板文件详解 Drupal6的模板文件详解-page,.tplphp 变量名 描述 Sbreadcrumb 网站的层级导航链接,如“首页>管理>模块”, Sclosure 这个变量内主要包含一些顶面使用的JavaScript等客户端脚本,它们通常在<body>标记结整前被 我入。也就是当整个页面加载完时,再加载客记脚本。 Scontent 页面的HTM代 Sfooter message 在admi/set地ngs页面定义的底部信总”. Shead 一些模块生成的HTML代码,在<head标签中输出。 Shead title 页面的标题,会在<tle>标签中输出,它的值是由stle,Stte_name和Ssite_name以及 Ssite_.slogan组成 的 Shelp 帮助文字。 Slanguage 页而的语言编码.例如英语就是en. Slayout 这一变量允许定义外观的不同类型的风格,而变量Slayout的值依款于启用的工具条 11
11 上图展示了 page.tpl.php 的输出的各个部分和变量的信息! Drupal6 的模板文件详解 Drupal6 的模板文件详解--page.tpl.php 变量名 描述 $breadcrumb 网站的层级导航链接,如“首页>管理>模块”。 $closure 这个变量内主要包含一些页面使用的 JavaScript 等客户端脚本,它们通常在</body>标记结整前被 载入。也就是当整个页面加载完时,再加载客记脚本。 $content 页面的 HTML 代码 $footer_message 在 admi/settings 页面定义的“底部信息”。 $head 一些模块生成的 HTML 代码,在<head>标签中输出。 $head_title 页面的标题,会在<title>标签中输出。它的值是由$title,$title_name 和$site_name 以及 $site_slogan 组成 的。 $help 帮助文字。 $language 页面的语言编码。例如英语就是 en。 $layout 这一变量允许定义外观的不同类型的风格,而变量$layout 的值依赖于启用的工具条
(sidebars)的数量。可能的值包括:none,left.right,.and both. Slogo 站点图标的地址。 Smessages 会用户的块态和错误信良 Sprimary_links -个包含了一级链接的数组。在Administer->Site building>Menus中定义它们。通常 $secondary_.inks通过函数heme(inks)来定制输出的样式 Ssearch box 返回搜索表单的HTML。当管理员在启用的主题中的主题配置页而禁止展示搜索时,或者搜索 模块禁用时,Ssite slogan为空。 Ssecondary_links 一个包含了二级链接的数组。在Administer->Site building->Menus中定义它们。通常 S.inks道过函数heme(inks)米定制输出的样式 Ssidebar_lef 返回左边工具条的HTML,包含了属于该区域的所有区块的HTML Ssidebar right 返回右边工具条的HML,包含了属于该区域的所有区块的HTML Ssite name 站点的名称.在Administer->Site configuration-.>Site information中设置.当管理员在启 用的主题中的主题配置页面禁止展示标语时,Ssite name为空。 Ssite_slogar 站点的标语。在Administer->Site configuration->Site information中设置。当管理员在启用 的主题中的 主配置页面禁止展示标语时,Ssite_slogan为空. Sstyles 返回连接到页面需要的CSS文件的HTML.CSS文件通过drupal add css(漆加到 Sstyles中去, Stabs 返回用于为书点展示诸如View/Edit的标签的HTML 内容的标题 ,与s dte不同。当察看一个单独节点视图页面时,$e就是节点的标题 当常看Dupl的管理员页面时,$e通常有菜单项来设置,菜单项对应于查看的页面。 Drupal6的模板文件详解-node.pl.php 变量名 描述 Scontent 节点的主体部分,如果是一个分页显示的结果时,它为摘要(teaser)部分。 Sdate 节点被创建的格式化日。 Slinks 与节点相关的链接,例如read more或者"add comment"模块通过实现hook_link0(来添加额外的 接。 Steaser 布尔值,用来决定是否展示easer.当它为假时,意味着节点采用body方式展示,为真时,表示以teaser 方式展示」 Sname 创速该面的用户名,本接到他的个人主 节点对象 Snode->body 整个node的内容 Snode->changed本节点的最后修改日期的UNlX时间戳 Snode-.>created本节点的创建日期的UNIX时间武 Snode->nid 节点的nd,和数据库中的字段相对应。 Snode>t ase Snode->title 节点的标恩 Snode->type 节点的内容类型(content type),如stoy,blog,foum等. Snode->uid 创建此节点的用户的uid Snode->name 创建此节点的用户的usemame Snode url 该节占的持久化的UR。 用户图像的HTML 如果启用了图像并且设置了用户图像 Ssubmitted "Submitted by文本,管理员可以配置这一信息的展示,在一个基于单个节点类型的主题配置页面 配置. Sterms 与该节点相关的分类单词的HTML。每一个单词都指向他自己的分类单词页面。 12
12 (sidebars)的数量。可能的值包括:none, left,right, and both. $logo 站点图标的地址。 $messages 给用户的状态和错误信息 $primary_links 一个包含了一级链接的数组。在 Administer->Site building->Menus 中定义它们。通常 $secondary_links 通过函数 theme('links')来定制输出的样式 $search_box 返回搜索表单的 HTML。当管理员在启用的主题中的主题配置页面禁止展示搜索时,或者搜索 模块禁用时,$site_slogan 为空。 $secondary_links 一个包含了二级链接的数组。在 Administer->Site building->Menus 中定义它们。通常 $secondary_links 通过函数 theme('links')来定制输出的样式。 $sidebar_left 返回左边工具条的 HTML,包含了属于该区域的所有区块的 HTML。 $sidebar_right 返回右边工具条的 HTML,包含了属于该区域的所有区块的 HTML。 $site_name 站点的名称。在 Administer->Site configuration->Site information 中设置。当管理员在启 用的主题中的主题配置页面禁止展示标语时,$site_ name 为空。 $site_slogan 站点的标语。在 Administer->Site configuration->Site information 中设置。当管理员在启用 的主题中的 主题配置页面禁止展示标语时,$site_slogan 为空。 $styles 返回连接到页面需要的 CSS 文件的 HTML。CSS 文件通过 drupal_add_css()添加到 $styles 中去。 $tabs 返回用于为节点展示诸如 View/Edit 的标签的 HTML。 $title 主内容的标题,与$head_title 不同。当察看一个单独节点视图页面时,$title 就是节点的标题。 当常看 Drupal 的管理员页面时,$title 通常有菜单项来设置,菜单项对应于查看的页面。 Drupal6 的模板文件详解--node.tpl.php 变量名 描述 $content 节点的主体部分,如果是一个分页显示的结果时,它为摘要(teaser)部分。 $date 节点被创建的格式化日期。 $links 与节点相关的链接,例如“read more” 或者“add comment.”模块通过实现 hook_link()来添加额外的链 接。 $teaser 布尔值,用来决定是否展示 teaser。当它为假时,意味着节点采用 body 方式展示,为真时,表示以 teaser 方式展示。 $name 创建该页面的用户名,连接到他的个人主页。 $node 节点对象。 $node->body 整个 node 的内容 $node->changed 本节点的最后修改日期的 UNIX 时间戳 $node->created 本节点的创建日期的 UNIX 时间戳 $node->nid 节点的 nid,和数据库中的字段相对应。 $node->teaser 节点的摘要 $node->title 节点的标题 $node->type 节点的内容类型(content type),如 story,blog,forum 等。 $node->uid 创建此节点的用户的 uid $node->name 创建此节点的用户的 username $node_url 该节点的持久化的 URI。 $picture 用户图像的 HTML,如果启用了图像并且设置了用户图像。 $submitted “Submitted by”文本。管理员可以配置这一信息的展示,在一个基于单个节点类型的主题配置页面 配置。 $terms 与该节点相关的分类单词的 HTML。每一个单词都指向他自己的分类单词页面
Stitle: 节点的标题。当在多个节点列表的页面这里有个链接指向该节点的主体视图 Ssticky 置顶标记。如果为真,那么这个节点的内容就会一直在列表的上方。 Staxonomy 由节点的分类词语构成的一个数组 age 当为body视图方式时,它为真,当为easer视图方式时,它为假 Sid 节点的1D Sis front 是否为首页的标志 Drupale6的模板文件详解-comment.tpl.php 变量名 描述 Sauthor 评论者的名称,并可以链接到用户的个人信息页 Scomment 评论的对象,是在heme_comment函数中传递的 Scomment->subject 评论的标题 $comment>comment评i论的内容 Scomment->name 详论者的名称 Scomment->timestamo评论的时间戳(并不是日期格式,而是UNX的时向,需要使用date0函数进行转换】 Scomment->uid 评论者的UID Scomment->new 判断此评论是否被当前的用户浏览过。如果香,那么此评论对此用户而言,就是新评论,会在 评论标题旁显示"new字样。 Scontent 评论的内容,和$comment-.>comment内容相同。 Sdate 格式化过的发布日期 Slinks 操作链接,如回复、编辑和别除等。 Snew 与comment rew相同 Spicture 如果设为开启状态,并且发布者具有有效的头像,那么这个变量的内容就是用户的头 像,并有一个链接可跳转至用户的个人信息页。 Ssubmitted 多语言的"Submitted by user_.link on date." Stitle 评论的标题,带有链接。 Sid 评论的D Szebra 奇偶标志位,用于交替样式的显示 Sis front 是否在首页上显示 下面是PHPTemplate的默认的comment..tol Drupal6的模板文件详解-box..tpL.php 变量名 描述 Scontent 块内容 Sregion 块显示的屏幕位置。可以是main,left或ight。默认是main。 Stitle 标题 Sid本块(box)》 所在的区块(block)的D号 Szebra 序号的奇或偶。可以通过这个变量来生成交替的样式效果 Sis_fron 判断本块是否在首页】 Drupal6的模板文件详解-block.tpl.php 变量名 描述 Sblock 风块对象 Sblock->content 区块内容 Sblock->mo 生成此区块的模块(module)名 Sblock->region 区块所在的区域(region)。这个区域可以是在ino中定义的 Sblock->subject 区块的标题 Sblock->delta 区块的序号。这个是在前而讲过的,用模块生成区块时的序号。 13
13 $title: 节点的标题。当在多个节点列表的页面这里有个链接指向该节点的主体视图。 $sticky 置顶标记。如果为真,那么这个节点的内容就会一直在列表的上方。 $taxonomy 由节点的分类词语构成的一个数组 $page 当为 body 视图方式时,它为真,当为 teaser 视图方式时,它为假。 $id 节点的 ID $is_front 是否为首页的标志 Drupal6 的模板文件详解--comment.tpl.php 变量名 描述 $author 评论者的名称,并可以链接到用户的个人信息页。 $comment 评论的对象,是在 theme_comment 函数中传递的。 $comment->subject 评论的标题 $comment->comment 评论的内容 $comment->name 评论者的名称 $comment->timestamp 评论的时间戳(并不是日期格式,而是 UNIX 的时间戳,需要使用 date()函数进行转换) $comment->uid 评论者的 UID $comment->new 判断此评论是否被当前的用户浏览过。如果否,那么此评论对此用户而言,就是新评论,会在 评论标题旁显示“new”字样。 $content 评论的内容,和$comment->comment 内容相同。 $date 格式化过的发布日期 $links 操作链接,如“回复”、“编辑”和“删除”等。 $new 与$comment->new 相同 $picture 如果设为开启状态,并且发布者具有有效的头像,那么这个变量的内容就是用户的头 像,并有一个链接可跳转至用户的个人信息页。 $submitted 多语言的“Submitted by user_link on date.” $title 评论的标题,带有链接。 $id 评论的 ID $zebra 奇偶标志位,用于交替样式的显示 $is_front 是否在首页上显示 下面是 PHPTemplate 的默认的 comment.tpl Drupal6 的模板文件详解--box.tpl.php 变量名 描述 $content 块内容 $region 块显示的屏幕位置。可以是 main,left 或 right。默认是 main。 $title 标题 $id 本块(box) 所在的区块(block)的 ID 号 $zebra 序号的奇或偶。可以通过这个变量来生成交替的样式效果。 $is_front 判断本块是否在首页上 Drupal6 的模板文件详解--block.tpl.php 变量名 描述 $block 区块对象 $block->content 区块内容 $block->module 生成此区块的模块(module)名 $block->region 区块所在的区域(region)。这个区域可以是在.info 中定义的; $block->subject 区块的标题 $block->delta 区块的序号。这个是在前面讲过的,用模块生成区块时的序号
Sis_front 使用此变量可以判断是此区块是香在首页<oP上 Sid 区块在本页中D号 drupale6.x中创建新的主题模版和区域(Regions) 本文分成2部分来进解的主题和风域,内容的流程和介绍只代表我个人的理解和收集,一些想法和操作并不完全正确。只 是为了给新接触drupal的阴友一点提示。如果读者的英文没问题的话请访问drupal,org阅读相关的英文文档。 创建新的主愿模版 Drupal6.x系统自带的模版位于网站根目录hemes目录中,Drupal鼓励用户把非系统自带的模版放在 sites\all八山emes目录中,并且不要修致系统自带的模版。好了在了解Drupal6.x的模板存放的位置,我们就开始。 复制sites all themes目录中garland目录到\sites\al小themes目录中(如果没有就创建它) 重命名\sites all\themes目录中garland目录为:test 以下内容如没有特殊说明test目录即为\sitesa山emes目录中test目录 打开test目录 将乎 info重命名为:testinfo,并编辑testin而文 将:name=Garland修改为name=test并保存 接下来到“管理-站点构建-主题”,其URL为:/admin/bild/themes 你会发现刚才创建的t主题己经出现在主题列表中了,我们在tt主题栏选中“启用”和“默认”,然后点击“保存配 至此就完成了创建新的主避模版test, 并把它设置为站点的默认模版 二、增加新的区域(Rcg0ns Drupal6.x把一些模版相关的信息和参数设置都放在info文件中,如:主题的名字、模版引擎类型、兼容的Dmp阳l版本 等等 在“创建新的主题模版”章节中我们编粗了test.info文件,将:name=Garland修改为name=test,清注意在Drupal5.x 中模版的名字是取决于主题模版的目录,而在Drupal6x中,模饭的名字取决于test info文件name=模饭名字 Drupal6.x默认有5个区城(Regions) Left.right,content.header.foote 在模版page.tpl.php文件我们可以使用:$1eft,Sright,Scontent,Sheader,$footer 注意在Drupal5x是:$sidebar left,Ssidebar right.Scontent.$header,Sfooter nessage Drupal6.x的s1eft,Sright相等于Drupal5.x:Ssidebar_left,Ssidebar_right Drupal6.x中Sfooter是新增的, Drupal6.x中也有$footer_mes5age变量,它的作用是打印显示“管理-站点设置-站点信息"的“项脚信息"文本框的内容: 如果我们需要增加一个变量名为$content_.top新的区域(Regions)也需要在test.info设置 在行st中eshects[print]0=print.css下新增下面代码 regionsrleft]Left sidehar regions[right】Right sidebar regions(content]=Content regions [header]Header regions footer)Footer regionsIcontent top]Content top 保存test.info文得 其中这些是系统默认区域(Regions),我们需要把这些也添加进去 regions[left]=Left sidebar 14
14 $is_front 使用此变量可以判断是此区块是否在首页<front>上 $id 区块在本页中 ID 号 $block_id 区块在所有区块中的 ID 号 drupal6.x 中创建新的主题模版和区域(Regions) 本文分成 2 部分来讲解的主题和区域。内容的流程和介绍只代表我个人的理解和收集,一些想法和操作并不完全正确。只 是为了给新接触 drupal 的朋友一点提示。如果读者的英文没问题的话请访问 drupal.org 阅读相关的英文文档。 一、创建新的主题模版 Drupal 6.x 系统自带的模版位于网站根目录 themes 目录中,Drupal 鼓励用户把非系统自带的模版放在 \sites\all\themes 目录中,并且不要修改系统自带的模版。好了在了解 Drupal 6.x 的模板存放的位置,我们就开始。 复制\sites\all\themes 目录中 garland 目录到 \sites\all\themes 目录中(如果没有就创建它) 重命名\sites\all\themes 目录中 garland 目录为:test 以下内容如没有特殊说明 test 目录即为 \sites\all\themes 目录中 test 目录 打开 test 目录,将 garland.info 重命名为:test.info,并编辑 test.info 文件 将:name = Garland 修改为 name = test 并保存 接下来到“管理--站点构建--主题”,其 URL 为:/admin/build/themes 你会发现刚才创建的 test 主题 已经出现在 主题列表中了,我们在 test 主题栏 选中“启用”和“默认”,然后点击“保存配 置” 至此就完成了创建新的主题模版 test,并把它设置为站点的默认模版 二、增加新的区域(Regions) Drupal 6.x 把一些模版相关的信息和参数设置都放在.info 文件中,如:主题的名字、模版引擎类型、兼容的 Drupal 版本… 等等 在“创建新的主题模版”章节中我们编辑了 test.info 文件,将:name = Garland 修改为 name = test ,请注意在 Drupal 5.x 中模版的名字是取决于主题模版的目录,而在 Drupal 6.x 中,模版的名字取决于 test.info 文件 name = 模版名字 Drupal 6.x 默认有 5 个区域(Regions): Left,right,content,header,footer 在模版 page.tpl.php 文件我们可以使用:$left, $right, $content, $header, $footer 注意在 Drupal 5.x 是:$sidebar_left, $sidebar_right, $content, $header, $footer_message Drupal 6.x 的$left, $right 相等于 Drupal 5.x :$sidebar_left, $sidebar_right Drupal 6.x 中$footer 是新增的。 Drupal 6.x 中也有$footer_message 变量,它的作用是打印显示“管理--站点设置--站点信息”的 “页脚信息”文本框的内容: 如果我们需要增加一个变量名为$content_top 新的区域(Regions) 也需要在 test.info 设置 在行 stylesheets[print][] = print.css 下新增下面代码 regions[left] = Left sidebar regions[right] = Right sidebar regions[content] = Content regions[header] = Header regions[footer] = Footer regions[content_top] = Content top 保存 test.info 文件 其中这些是系统默认区域(Regions),我们需要把这些也添加进去 regions[left] = Left sidebar
regions (right]Right sidebar regions [content]Content regions headerl Header regions[footer]-Footer 下面这行是我们新增的区域(Regions) regions[content top]Content top 接下来我们打开page,pl.php文件,将例才新增的区域(Regions)添加到模版中 找到: diy class="clear-block"> <?phE print Scontent ? </div 修改为: <diy class="clear-block"> content ton <?php print Scontent_top ? content_top end-- <?php print Scontent ? </div> 接下来我们需要主题注册(theme registry 到“管理-站点设置-性能”其URL为:/admin/settings/performance 点击“清除缓存数据"按钮来清楚数据库缓存。 然后我们到管理-站点构建-区块"其URL为:/admin/build/block 正常情况 我们会看到刚才新增的Content top区城(Regions)。你可以尝试一点操作 将页H区复的区块Powered by Drupal移动到Content top区域(Regions) 然后记得点击“保存区块按钮, 最后我上传page.tpLphp和test.inf0文件,希望对你有所提示帮助。 Block(区块)管理 Drupal通过Block来控制页面元素的显示,例如左边栏,右边栏,头部,页脚,内容区域显示的内容。请大家先看一下 这个页面:htpw,alexacn.0g,左边栏显示教程链接等,右边栏显示多个链接,底部显示版权信息,而顶部和内容区 域没有使用区块的内容。下面我们就告诉大家如何通过区块来管理这些内容的显示以及如何自定义区块, 当你浏宽drupal页面时,左右边栏通常有一些导航条或提供一些额外信息的栏目,eg:最新发布的文章,最新评论,导航,甚 至你还可以将一个节点的内容放在里面…它可以分布在一个Drupal站点的边栏上或其它地方。这些位置是由你的模板 或叫做主题事先设置好了的regions(区域).供你放置区块的位置通常是(header,.let-sidebar,.content,right-sidebar,footer). 许多区块是通过不同的Drupal模块动态生成的,但你也可以自己添加任意个模块. 下面我来分二部分说说区块的使用,一个是简单的使用,即使用现成的区块,二是定制自己的区块 A滴单的使用 首先找到区块的位置.drupal6后的版本位置是(administer-->site building-->blocks).打开blocks,出现的界面如下 15
15 regions[right] = Right sidebar regions[content] = Content regions[header] = Header regions[footer] = Footer 下面这行是我们新增的区域(Regions) regions[content_top] = Content top 接下来我们打开 page.tpl.php 文件,将刚才新增的区域(Regions)添加到模版中 找到: <div class="clear-block"> <?php print $content ?> </div> 修改为: <div class="clear-block"> <!-- content_top --> <?php print $content_top ?> <!-- content_top end --> <?php print $content ?> </div> 保存 page.tpl.php 文件。(注意:如果添加了中文字符,保存时记得把编码改成 UTF-8) 当然想放到那里看个人意愿和需要了,我们这里只是演示。 接下来我们需要主题注册(theme registry) 到“管理--站点设置--性能” 其 URL 为:/admin/settings/performance 点击“清除缓存数据”按钮 来清楚数据库缓存。 然后我们到“管理--站点构建--区块” 其 URL 为:/admin/build/block 正常情况下我们会看到刚才新增的 Content top 区域(Regions),你可以尝试一点操作: 将页脚区域的区块 Powered by Drupal 移动到 Content top 区域(Regions) 然后记得点击“保存区块”按钮。 最后我上传 page.tpl.php 和 test.info 文件,希望对你有所提示帮助。 ------------------------------------------------------------------------------ Block(区块)管理 Drupal 通过 Block 来控制页面元素的显示,例如左边栏,右边栏,头部,页脚,内容区域显示的内容。请大家先看一下 这个页面:http://www.alexacn.org/,左边栏显示教程链接等,右边栏显示多个链接,底部显示版权信息,而顶部和内容区 域没有使用区块的内容。下面我们就告诉大家如何通过区块来管理这些内容的显示以及如何自定义区块。 当你浏览 drupal 页面时,左右边栏通常有一些导航条或提供一些额外信息的栏目,eg:最新发布的文章,最新评论,导航.甚 至你还可以将一个节点的内容放在里面.......它可以分布在一个 Drupal 站点的边栏上或其它地方。这些位置是由你的模板 或叫做主题事先设置好了的 regions(区域).供你放置区块的位置通常是(header, left-sidebar, content, right-sidebar, footer), 许多区块是通过不同的 Drupal 模块动态生成的,但你也可以自己添加任意个模块。 下面我来分二部分说说区块的使用,一个是简单的使用,即使用现成的区块,二是定制自己的区块 A:简单的使用 首先找到区块的位置,drupal 6 后的版本位置是(administer------>site building------->blocks),打开 blocks,出现的界面如下: