具有不同主题的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(甚至是页眉、页脚等)
自定义模块
如果上述解决方案对您不起作用,您将不得不:
- 创建自定义模块
- 创建自定义主题
在自定义模块中,您可以像这样添加一个新路径:
<?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';
}
}
我被要求通过自定义模块构建现有 Drupal 7 站点的自定义登录页面/部分,但该部分需要具有与父站点完全不同的设计。它只是一个完整尺寸的背景图片,没有导航,没有页脚,没有页眉,还有一个新表单。
能否通过自定义模块从 'page' 中删除所有基本站点主题以便创建自定义设计?
简短回答:是的,你可以!这需要很多工作,但你可以。
长答案:如果对来自自定义模块的解决方案的要求很严格,则跳到此答案的最后一部分。否则欢迎您完整阅读。
我会做什么
如果custom module
的要求不严格,可以直接新建一个页面,添加自定义模板即可。看看Template (theme hook) suggestions
即创建一个名为 My custom page
的页面,假设节点 ID 为 23,那么您可以在当前主题中创建一个名为 page--node--23.tpl.php
的文件。
在该页面中,您可以修改所有需要的 html(甚至是页眉、页脚等)
自定义模块
如果上述解决方案对您不起作用,您将不得不:
- 创建自定义模块
- 创建自定义主题
在自定义模块中,您可以像这样添加一个新路径:
<?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';
}
}