Я знаю, что на этот вопрос уже был дан ответ, но я хотел добавить свое собственное решение, которое использует элементы ответа Philadelphia Web Design (PWD) и использует hook_theme_registry_alter, как предложено Owen. Используя это решение, вы можете загрузить шаблон непосредственно из пользовательского модуля.
Сначала я добавил raw.tpl.php во вновь созданную папку 'templates' внутри моего модуля. Содержимое raw.tpl.php идентично PWD page-ajax.tpl.php:
<?php print $content; ?>
Затем я реализовал hook_preprocess_page в своем модуле так же, как PWD (за исключением того, что я изменил параметр $ _GET и обновил ссылку на файл шаблона:
function MY_MODULE_NAME_preprocess_page(&$vars) {
if ( isset($_GET['raw']) && $_GET['raw'] == 1 ) {
$vars['template_file'] = 'raw';
}
}
Наконец, я реализовал hook_theme_registry_alter, чтобы добавить каталог шаблонов моего модуля в реестр тем (на основе http://drupal.org/node/1105922#comment-4265700):
function MY_MODULE_NAME_theme_registry_alter(&$theme_registry) {
$modulepath = drupal_get_path('module','MY_MODULE_NAME');
array_unshift($theme_registry['page']['theme paths'], $modulepath.'/templates');
}
Теперь, когда я добавлю? Raw = 1 к URL-пути представления, он будет использовать указанный шаблон внутри моего модуля.