2

我们创建了一个自定义模块来组织和发布我们的时事通讯内容。

我现在遇到的问题——我是主题和 Drupal 模块开发的新手,所以它可能只是一个知识问题而不是 Drupal 问题——是如何让每个时事通讯主题化。

此时我们的时事通讯的 URL 结构将是:

/newsletters/{newsletter-name}/{edition-name}/{issue-date} 这意味着我们可以使用 page-newsletters-{newsletter-name}-{edition-name} 等文件名在主题中创建模板文件。 tpl.php,这很棒。我遇到的一个问题是所有内容都来自主题的 $content 变量。我想让它作为不同的变量出现(这样我就可以在主题内将某些内容放置在某些区域中。)

有没有合适的方法来做到这一点?

编辑:回答一些问题:问题是一个节点(有问题、版本和时事通讯节点),并且使用带有通配符和路由器的 hook_menu 设置路径。

4

3 回答 3

1

我能找到的最佳答案是在 phptemplate_preprocess_page 中添加一个检查,以将变量发送回模块并更新它们。

像这样:

function phptemplate_preprocess_page(&$vars) {
    if (module_exists('test_module')) {
        _test_module_injector($vars);
    }
}

然后在我的 test_module.module 文件中我创建了这个函数:

function _test_module_injector(&$vars) {
    $vars[] = call_to_other_functions_to_load_vars();
}

它似乎奏效了。我希望有一种方法可以做到这一点,而不必触及主题的 template.php 文件,但否则效果很好。

于 2010-05-07T15:17:36.527 回答
0

这是一篇旧帖子,OP的问题似乎已经解决。

但是,仅适用于通过 Google(或其他方式)找到此内容的其他人:

  1. 安装“开发”模块:http ://drupal.org/project/devel
  2. 还有“开发主题”模块: http ://drupal.org/project/devel_themer

使用 Devel Themer 遍历 $content 变量并找到您需要提取的内容。

那里有一堆 Devel/Themer 文档/tuts,但它的用法非常简单。但请注意,在主题中打印之前,需要对其中的一些内容进行消毒。

将节点显示为视图然后修改视图模板的建议听起来很疯狂,尽管它会起作用。

于 2011-08-05T20:53:37.480 回答
0

如果模板预处理函数有更好的文档,Drupal 会更容易访问——事实上,您需要将来自许多不同解释的信息拼凑在一起。一个开始的地方是这里:

http://drupal.org/node/223430

但如果你花时间完成下面的教程,你会发现你可以做大部分事情:

http://11heavens.com/theming-the-contact-form-in-Drupal-6

于 2010-05-06T02:08:23.180 回答