Просто взглянув на функцию init_theme () , глобальные переменные $theme
и $theme_key
содержат абсолютно одинаковые значения, поэтому вы можете попробовать использовать $theme
(как предложил yvan), но, поскольку они содержатодни и те же данные и установлены ли глобальные переменные в одной и той же функции, я не уверен, что это будет иметь какое-либо значение.
Этот код находится в файле шаблона?Если это так, вы можете страдать от давней проблемы с темой Drupal, из-за которой некоторые переменные недоступны при сборке шаблона.Вы можете попробовать добавить функцию hook_preprocess_node()
в модуль / тему, чтобы настроить переменную и передать ее в файл шаблона.Примерно так:
function MYMODULE_preprocess_node(&$vars) {
global $theme_key;
$vars['current_theme_key'] = $theme_key;
}
И тогда в вашем файле шаблона вы получите доступ к переменной $current_theme_key
, в которой должна быть указана правильная переменная.
Надеюсь, что это поможетЯ сталкивался с подобными проблемами с Drupal и раньше, и это кошмар для отладки.
Редактировать, чтобы добавить более полезную функцию:
function MYMODULE_preprocess_node(&$vars) {
$node = $vars['node'];
if ($node->type == 'my_type') {
global $theme_key;
$view_name = $theme_key == 'foo' ? 'theView' : 'theOtherView';
$display_id = 'block_1';
$vars['my_custom_view'] = views_embed_view($view_name, $display_id);
}
}
Затем в вашем файле node.tpl.php или node-type.tpl.php вы можете использовать такой код:
if (isset($my_custom_view)):
echo $my_custom_view;
endif;
При построении переменных в функции предварительной обработки у вас не должно возникнуть проблем сglobal $theme_key
больше не доступен.
Имейте в виду, что вы можете также реализовать это в своей теме (в файле template.php), изменив имя функции на MYTHEME_preprocess_node.
Убедитесь, что вы очистили кеш Drupal после того, как внедрили функцию (где бы вы ни решили ее разместить), чтобы система восприняла изменения.
Надеюсь, это поможет!