自定义函数显示 Drupal 分类列表
2009.12.09 // 1 Comment
Drupal中的CCK和View模块功能强大,几乎可以用鼠标点出你想要的任何内容。
但耗费的性能和效率问题也与它的功能一样强大。
其实CCK和View能实现的我们手动一样可以实现,而且异常简单。
以国内网站最常见的显示某一分类最新文章列表为例:
在模板文件 template.php 中增加一个自定义函数如下:
function phptemplate_show_taxonomy($tid){
//根据tid读取术语名称
$sql =”SELECT name FROM {term_data} WHERE tid = %d”;
$result = db_query(db_rewrite_sql($sql),$tid);
while($data = db_fetch_object($result)){
$term_name = $data->name;
}
$output = “<div>”;
$output .= “<h2>”.$term_name.”</h2><ul>”;
$sql = “SELECT n.nid, n.title, n.created
FROM {term_node} tn
LEFT JOIN {node} n on n.nid = tn.nid
WHERE tn.tid = %d
ORDER BY n.created DESC”;
$result = db_query_range(db_rewrite_sql($sql),$tid,0,8);
while($data = db_fetch_object($result)){
$output .=”<li>”.l($data->title,”node/$data->nid”).”</li>”;
}
$output .= “</ul></div>”;
return $output;
}
在模板适当位置写入:
<?php print phptemplate_show_taxonomy(12) ?>
function [...]
Drupal中判断当前页面为分类页的方法
2009.11.05 // 1 Comment
在Drupal中,分类系统路径都是类似这种格式:
taxonomy/term/10
taxonomy/term/17
那么,根据Drupal API,判断当前页面为分类页面,可以这样写:
if ( arg(0) == ‘taxonomy’ && arg(1) == ‘term’ ) {
echo ‘这是分类’;
} else {
echo ‘这不是分类’;
}
if(arg(0) == ‘taxonomy’ && arg(1) == ‘term’){
//就肯定是分类列表了。
}
Drupal 主题 模板 机制
2009.05.11 // 1 Comment
Drupal的模板机制相当灵活,在这里,我将简单的叙述一下PHPTemplate的模板机制。
page.tpl.php是最根本的模板文件,它为主题提供了整体的外观,其它的模版文件是按照区块的形式插入到page.tpl.php中的,如图所示:
一般来说,page.tpl.php中的$content包含了对node.tpl.php输出的调用,而$sidebar_left包含了对block.tpl.php输出的调用。
如果你想为不同的页面创建不同的风格,可以基于URL来创建额外的页面模板文件。
例如,当你访问http://Drupal.com/?q=user/1,PHPTemplate将以下面的顺序来查找页面模板:
page-user-1.tpl.php
page-user.tpl.php
page.tpl.php
同样的,当你访问http://Drupal.com/?q=node/1/edit,PHPTemplate将以下面的顺序来查找页面模板:
page-node-edit.tpl.php
page-node-1.tpl.php
page-node.tpl.php
page.tpl.php
PHPTemplate一旦找到一个要包含的模板文件将会停止继续寻找。
注意:
page-user.tpl.php可定义所有的用户页面模板。
node-nodetype.tpl.php可以定义任意类型的页面模板,例如node-blog.tpl.php可以定义所有blog节点的模板风格。
page-front.tpl.php可以定义首页面的显示模板。
如果您想查看Drupal的模板变量,请查看:
http://mimiz.cn/index.php/drupal/drupal-template-variable-page/
http://mimiz.cn/index.php/drupal/drupal-template-variable-node/
Drupal模板变量 – node.tpl.php
2009.02.20 // No Comments
node.tpl.php中可用的变量:
$content: 返回节点的主体部分。
$date: 返回节点被创建的格式化日期。
$taxonomy: 返回由节点的分类词语构成的数组。
$terms: 返回与该节点相关的分类单词的HTML。
$title: 返回节点的标题。
$submitted: 返回”Submitted by”文本。
$links: 返回与节点相关的链接,比如”read more”或者”add comment”。
$name: 返回创建该页面的用户名。
$node: 返回整个节点对象和它的所有属性。
$node_url: 返回该节点的URL。
$page: 当为body视图方式时其值为真,当为teaser视图方式时其值为假。
$picture: 如果启用了图像并且设置了用户图像则返回用户图像的HTML。
$teaser: 返回一个布尔值,用来决定是否展示teaser。当它为假时,节点以body方式展示;为真时,以teaser方式展示。
Drupal模板变量 – page.tpl.php
2009.02.10 // 1 Comment
最近在用Drupal做站并活跃于Drupal.org和ChinaDrupal.org
在这里把一些Drupal模板常用的变量记录下来,便于以后查阅。
page.tpl.php中可用的变量:
$base_path: Drupal安装的基本路径。
$directory: 返回主题所在的相对路径。
通常使用$directory和$base_path组成主题的绝对路径,类似这样使用:
< ?php print $base_path . $directory ?>
$head: 返回头部的HTML。
$head_title: 返回页面标题。
$title: 返回主内容的标题。与$head_title不同,当察看一个单独节点页面时,$title就是节点的标题。
$css: 返回一个css文件组成的数组。
$styles: 来返回$css数组的HTML版本。
$scripts: 返回js文件组成的数组或内容。
$logo: 返回logo的路径,在启用主题的主题配置页面定义。
$site_name: 返回站点的名称。在Site information中设置。
$site_slogan: 返回站点的标语。在Site information中设置。
$primary_links: 返回一个包含了一级链接的数组。
$secondary_links: 返回一个包含了二级链接的数组。
$content: 返回HTML内容。
$node: 返回整个节点对象,当察看一个单独节点页面时可用。
$breadcrumb: 返回面包屑,就是访问足迹
$tabs: 返回用于为节点展示View/Edit的HTML标签。
$mission: 返回站点使命文本,在 Site information中输入,只有在首页才可以使用。
$messages: 返回的验证错误或正确的提示信息,通常显示在页面的头部。
$search_box: 返回搜索表单的HTML。
$layout: 这一变量允许你定义外观不同类型的风格,而变量$layout的值依赖于启用的工具条(sidebars)的数量。可能的值包括:none, left,right, and both。
$help: 返回帮助文本,大多用于管理页面。
$is_front: 如果当前为首页其值为真TRUE。
$language: 返回站点所使用的语言。
$feed_icons: 返回该页面的RSS链接。
$footer_message: 返回页脚信息文本,在Site information中可以修改。
$closure: 返回hook_footer()的输出,常用于页面底部。

