自定义函数显示 Drupal 分类列表

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 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 = [...]

Drupal中判断当前页面为分类页的方法

在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 主题 模板 机制

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

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

最近在用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()的输出,常用于页面底部。