Answers:
在节点预处理功能中添加主题挂钩建议应该可以解决问题:
function MYMODULE_preprocess_node(&$vars) {
if ($vars['node']->type == 'article' && $vars['view_mode'] == 'search_result') {
$vars['theme_hook_suggestions'][] = 'node__article__search_result';
}
}
清除缓存后,您应该可以使用node--article--search-result.tpl.php作为模板文件名。
注意 您也可以通过调用该函数在主题的template.php文件中执行此操作MYTHEME_preprocess_node()
。
search_result
已经被声明为一个视图模式,这样你就不需要实现hook_entity_info_alter()
你的情况
这是一项允许您动态添加新功能的功能。如果已声明一个预处理函数,它也会调用相应的预处理函数。
然后致电drush cache-clear theme-registry
以使其正常工作。
要使用它,请用您的主题名称替换THEME,并将其放置在您的theme template.php文件中。
例如,对于名为Droid的主题,您可以将其命名为droid_preprocess_node(&$variables, $hook) {
...
function THEME_preprocess_node(&$variables, $hook) {
$view_mode = $variables['view_mode'];
$content_type = $variables['type'];
$variables['theme_hook_suggestions'][] = 'node__' . $view_mode;
$variables['theme_hook_suggestions'][] = 'node__' . $view_mode . '_' . $content_type;
$view_mode_preprocess = 'THEME_preprocess_node_' . $view_mode . '_' . $content_type;
if (function_exists($view_mode_preprocess)) {
$view_mode_preprocess($variables, $hook);
}
$view_mode_preprocess = 'THEME_preprocess_node_' . $view_mode;
if (function_exists($view_mode_preprocess)) {
$view_mode_preprocess($variables, $hook);
}
}