具有不同主题的Drupal 7自定义模块

Drupal 7 Custom module with different theme

我被要求通过自定义模块构建现有 Drupal 7 站点的自定义登录页面/部分,但该部分需要具有与父站点完全不同的设计。它只是一个完整尺寸的背景图片,没有导航,没有页脚,没有页眉,还有一个新表单。

能否通过自定义模块从 'page' 中删除所有基本站点主题以便创建自定义设计?

简短回答:是的,你可以!这需要很多工作,但你可以。

长答案:如果对来自自定义模块的解决方案的要求很严格,则跳到此答案的最后一部分。否则欢迎您完整阅读。

我会做什么

如果custom module的要求不严格,可以直接新建一个页面,添加自定义模板即可。看看Template (theme hook) suggestions

即创建一个名为 My custom page 的页面,假设节点 ID 为 23,那么您可以在当前主题中创建一个名为 page--node--23.tpl.php 的文件。

在该页面中,您可以修改所有需要的 html(甚至是页眉、页脚等)

自定义模块

如果上述解决方案对您不起作用,您将不得不:

  1. 创建自定义模块
  2. 创建自定义主题

在自定义模块中,您可以像这样添加一个新路径:

<?php
function mymodule_menu() {
  $items['my-page-path'] = array(
    'page callback' => 'mymodule_render_page',
  );
  return $items;
}
function mymodule_render_page() {

  // Render your content
}

稍后在模块中使用 hook_custom_theme,在满足特定条件时加载您的自定义主题。

类似于:

<?php
function mymodule_custom_theme() {
  if ($criteria_is_true) {
    // Use the machine name of your custom theme
    return 'my_custom_theme';
  }
}