sys info:drupal 6安装,包含大量模块......太多无法列出。
问题:只有某种内容类型不能正确加载它的模板文件。通过视图在这些页面上显示的一些节点正在进行标记。它们是唯一被加载的内容。此内容所依赖的模板文件是node-event.tpl
目标:加载page-team.tpl.php
通过
预处理在template.php中以两种方式加载模板建议mytheme_preprocess_page(&$vars, $hook)
在drupal 5安装中从_phptemplate_variables ()
转换。
方法1:
if (module_exists('path')) {
$alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
if ($alias != $_GET['q']) {
$template_filename = 'page';
foreach (explode('/', $alias) as $path_part) {
$template_filename = $template_filename . '-' . $path_part;
$vars['template_files'][] = $template_filename;
}
}
}
方法2:
if ($vars['node']->og_groups['0'] || preg_match('/fdl\//',$vars['node']->path) || (preg_match('/og\/manage/',$alias) || preg_match('/og\/invite/',$alias) || preg_match('/og\/users/',$alias)) || (preg_match('/node\/add/',$alias) && $_GET['gids'] != '') || $vars['node']->og_description || (arg(0) == 'user' && is_numeric(arg(1)))) {
$vars['template_files'][] = 'page-team';
}
page-team是缺少的tpl,我怀疑上面的代码可能有错误(方法2)。
我正在尝试为所有页面加载此模板,其中第一个路径参数为“fdl”,因此site.com/fdl和所有fdl子项。
我知道有很多可能性。但我有一种感觉错误就在这里。感谢您提供的任何帮助。
答案 0 :(得分:1)
嗯,你清除了缓存吗?因为在处理主题时,drupal通常会在清除缓存后捕获新添加的主题和模板。
如果你不确定你的注册。 exp。,我相信你可以写下这个:
if(strpos(drupal_get_path_alias($_GET['q']),'fdl')===0){
$vars['template_files'][] = 'page-team';
}
清除缓存。
答案 1 :(得分:1)
这就是我在template.php中的内容:
function frontend_preprocess_page(&$vars){
if(strpos(drupal_get_path_alias($_GET['q']),'dummy_tests')===0){
$vars['template_files'][] = 'page-dummy';
}
}
frontend是我主题的名称。我在主题文件夹中有一个文件页面dummy.tpl.php。为了看它是否有效,我在身体标签后面添加了“IT WORKS”。然后清除缓存。现在我转到页面“mydomain.com/dummy_tests/1”并看到它的工作原理。
如果遇到问题,请尝试检查drupal_get_path_alias的输出($ _ GET ['q'])。只是做
print drupal_get_path_alias($_GET['q']);
在preprocess_page()函数内部。如果真的以“fdl”开头,一切都应该有效。这是一个有效的例子,所以你只是试着四处游说并弄清楚它为什么不适合你。
BTW,尝试删除节点模板并仅保留页面模板。我不知道为什么,但可能有些不对劲,drupal会把它们弄乱。
答案 2 :(得分:0)
我尝试在page_preprocess和node_preprocess函数中添加自定义模板。它对我来说都适用于页面和节点模板。
function frontend_preprocess_page(&$vars){
if(strpos(drupal_get_path_alias($_GET['q']),'dummy_tests')===0){
$vars['template_files'][] = 'page-dummy';
}
}
function frontend_preprocess_node(&$vars){
if(strpos(drupal_get_path_alias($_GET['q']),'dummy_tests')===0){
$vars['template_files'][] = 'node-dummy';
}
}
答案 3 :(得分:0)
我在模板中找到了一个不推荐使用的链接函数。更新参数修复了一切。