模板文件node.tpl.php适用于所有类型的节点的主题化.这个文件覆盖了所有的节点类型,你可以按照手册的node.tpl.php页面的说明,对这个文件进行修改.为了对单独的节点类型分别进行主题化,你需要在你的主题文件夹下面创建一个node-$type.tpl.php文件,其中$type是节点类型的名称,从而为每种类型按照需要自定义主题.一些例子:
在一般情况下,你可以将$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创建的节点类型,你给节点类型的命名(也就是展示的节点类型名)与系统内部使用的节点类型名不一样.在系统内部使用的节点类型名为"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)?>
它看起来有点怪,但它是一序列的变量和它们的内容。你可以找出满足你需要的那个。如果你找出了特定字段的工作方式的话,你可以将代码贴到这里来。