根据drupal节点类型对节点进行主题化

模板文件node.tpl.php适用于所有类型的节点的主题化.这个文件覆盖了所有的节点类型,你可以按照手册的node.tpl.php页面的说明,对这个文件进行修改.为了对单独的节点类型分别进行主题化,你需要在你的主题文件夹下面创建一个node-$type.tpl.php文件,其中$type是节点类型的名称,从而为每种类型按照需要自定义主题.一些例子:

 

  • node-story.tpl.php 仅用于story节点的主题化
  • node-page.tpl.php 仅用于page节点的主题化(注意,这个与page.tpl.php的区别,后者是用来控制整个页面的输出的,包括页首,左右栏等等)
  • node- forum.tpl.php 仅用于forum节点的主题化
  • node- book.tpl.php 仅用于book节点的主题化

 

在一般情况下,你可以将$type替换为任何节点类型的名称.一种特殊情况是, flexinode模块,它在内部使用数字对类型进行命名. Flexinodes的主题化可参看http://drupal.org/node/31646.还有,你也不能使用 node-admin.tpl.php仅仅对管理页面进行主题化.(译者注:实际上,是可以这样用的,但是你需要加点东西,在template.php中加个函数,但是这种用法不常见,文中所讲的应该是,不能直接这样用.)

创建了这个文件以后,将node.tpl.php的内容拷贝进取,然后按照要求进行修改. node.tpl.php列出的所有变量都可以使用.当Drupal展示该类型的节点时,就会使用你新创建的模板文件来代替默认的node.tpl.php.

为特定的flexinode类型创建一个drupal主题

对于由flexinode创建的节点类型,你给节点类型的命名(也就是展示的节点类型名)与系统内部使用的节点类型名不一样.在系统内部使用的节点类型名为"flexinode-1", "flexinode-2",等等.查看节点类型名的一种方式是,直接查看数据库表“node”的name列。

例如,如果你使用flexinode创建了一个名为"info"的节点类型,如果你查看数据库的话,你就会发现其内部名称为"flexinode-1"。所以,你为"info"创建的模板文件应该命名为"node-flexinode-1.tpl.php"。

 

 

你也可以通过访问admin>>content>>content types页面,点击所选的节点类型,来查看flexinode后面的数字。这个数字将出现在url(比如,node/types/edit_type/1就意味着flexinode-1)。

 

在你的节点模板中(比如node-flexinode-1.tpl.php),你可以这样引用flexinode的不同字段:

<?php print $node->flexinode_1 ?>

 

导航到admin>>content>>content types页面,点击编辑所选字段链接,查看相应的url(比如node/type/edit_field/1,就意味着$node->flexinode_1),你会发现不同的字段的引用方式是类似的。

 

这种方式适用于文本输入框,文本字段,日期/时间。对于图片你可以这样:
<img src="/<?php print $node->flexinode_1->filepath ?>" />.

 

如果需要输出对象的话,你需要研究一下代码了。你可以使用下面的输出命令:

<?php print serialize($node->flexinode_1)?>

它看起来有点怪,但它是一序列的变量和它们的内容。你可以找出满足你需要的那个。如果你找出了特定字段的工作方式的话,你可以将代码贴到这里来。

      相关链接:http://drupal.org/node/31646 , Think in Drupal

Drupal版本: