Answers:
function mytheme_process_page(&$variables) {
$variables['theme_hook_suggestions'][] = 'page__'. $variables['node']->type;
}
假设您的机器可读内容类型名称为“ work”,则page--work.tpl.php将起作用。
有关更多信息,请参考此线程。
在template.php中添加:
function themeName_preprocess_page(&$vars) {
if (isset($vars['node'])) {
// If the node type is "blog" the template suggestion will be "page--blog.tpl.php".
$vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $vars['node']->type);
}
}
你可以省略str_replace()
; 测试哪种版本最适合您。
然后,创建一个模板文件,其文件名是page-[[content_type] .tpl.php。(用内容类型机器名称替换[content_type]。)
如果您还需要节点ID,请使用它。
function mytheme_process_page(&$variables) {
if (isset($variables['node'])) {
$variables['theme_hook_suggestions'][] = 'page__type__'. $variables['node']->type;
$variables['theme_hook_suggestions'][] = 'page__node__' . $variables['node']->nid;
}
}
Drupal的人认为,对于每种内容类型使用不同的模板不是一个好习惯。这就是您page--work.tpl.php
在候选模板文件列表中找不到的原因。他们觉得只有节点模板文件应该有所不同。但是,如果您想入侵,请继续。
使用路径别名可根据内容类型设置路径。然后插入这段代码
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;
}
}
}
进入主题文件夹中的 phptemplate_preprocess_page(&$vars)
功能template.php
。
您可以稍微修改一下代码以使其更有效。