布拉格

基于node type为drupal添加不同的theme布局

这是一篇drupal theming相关的日志。
Drupal的每一个节点都拥有一个type:node type。如日志(blog entry), 论坛主题(forum topic),下载(downloading)。

默认的theme是为所有节点添加同一个page layout,很明显不能够满足期望使用drupal设计各种类型的网站的站长了。

而要不同的内容类型(node type)添加不同的layout(page.tpl.php)。
则需要稍微hack一下。
方法灰常简单:

找到theme所在的目录中的template.php文件(如果没有可以自己增加一个。)
在里面添加一段:

<?php
function phptemplate_preprocess_page(&$variables) {
if ($node = menu_get_object()) {
$variables['node'] = $node;
$suggestions = array();
$template_filename = 'page';
$template_filename = $template_filename . '-' . $variables['node']->type;
$suggestions[] = $template_filename;
$variables['template_files'] = $suggestions;
}
}
?>

代码添加完毕之后,只需为不同的node type建议不同的layout文件到theme目录即可了,如:
forum -> page-forum.tpl.php
blog -> page-blog.tpl.php
book -> page-book.tpl.php

这样,访问不同类型的节点内容(node content),就可以读取对应的page layout鸟。

Tag:

Comments

看不懂啊

呃,介个是drupal专用的哈

貌似又有人问这个问题......

嗯的哈。好久不见你了哇

哈 其实我一直在暗处

Drupal CMS, 只听过还没用过;不知道有没中文注释版本的

有的。
有中文语言包

很强大的CMS呢
还没得及去好好研究下哈
貌似安装的时候就需要一定的难度

曾经很长一段时间安装很麻烦,需要手动安装,现在安装已经比较容易了。
毕竟有wordpress,movable type这些好榜样。

难道这个博客就是用的drupal?
我看到个人信息那个页面了,所以这样问下

嗯嗯,是的呵 :)
程序更小,效率更快。