2

我是一个drupal新手...

我有不同类型的内容,例如新闻、事件等,它们的内容也不同。新闻详细信息页面具有标题内容文本日期。但活动详细信息页面有标题-日期-内容文本-位置-演讲者等。所以我需要针对这些不同类型的不同布局页面。因此,我启用了 Drupal Themer 来获取候选名称。对于事件页面,它给了我page-node.tpl.php,它也给了新闻页面 :( 我怎样才能分开这些页面?我希望像page-event-node.tpl这样的东西,但没有......: / Drupal Themer 还为事件页面提供了唯一的候选名称,例如page-node-18.tpl.php但这并不意味着什么,因为我无法通过此节点名称为所有事件创建通用布局。:(

欣赏帮助很大!!非常感谢!!!

4

2 回答 2

3

虽然按照 monkeyninja (+1) 的建议使用不同的 node.tpl.php 文件将是“正常”方式,但您可以通过在自定义模块中的preprocess_page函数中自己添加基于节点类型的页面模板建议来添加所需的功能/主题:

function yourModuleOrTheme_preprocess_page(&$variables) {
  // If this is a node page, add a page template suggestion based on node type
  if (isset($variables['node'])) {
    // Build the suggestion name ('.tpl.php' suffix will be added by the theming system)
    $suggestion = 'page-type-' . $variables['node']->type;
    // Add to end of suggestion array, thus keeping the fallback to other suggestions,
    // if this specific version is not implemented by the theme
    $variables['template_files'][] = $suggestion;
  }
} 

有了这个,您应该能够添加例如“page-type-event.tpl.php”文件,该文件应该用于所有事件节点页面。

(注意:您需要在添加该功能后触发主题注册表的重建以使其被系统识别)

于 2010-06-03T10:42:03.113 回答
2

我不熟悉 Drupal Themer,但稍微不同的方法是使用节点模板来设置内容的样式,并使用优秀的Context 模块(可能还有Panels 模块)来更改任何附加信息的布局页(例如块)。

要使用节点模板对不同的内容类型进行主题化,只需基于 node.tpl.php 以 node-content_type.tpl.php 形式创建模板。因此,您将拥有一个名为 node-events.tpl.php 的事件节点模板。

然后,您可以使用 Context 模块定义一个上下文,该模块在显示事件内容类型的页面时做出反应,并选择您想要显示的区域/块。

于 2010-06-03T10:04:46.310 回答