【发布时间】:2019-08-05 21:17:13
【问题描述】:
我被要求通过自定义模块构建现有 Drupal 7 站点的自定义登录页面/部分,但该部分的设计需要与父站点的设计完全不同。它只是一个全尺寸的背景图片,没有导航、没有页脚、没有页眉和一个新表单。
您能否通过自定义模块从“页面”中删除所有基本站点主题,以便创建自定义设计?
【问题讨论】:
标签: drupal drupal-7 drupal-modules drupal-theming
我被要求通过自定义模块构建现有 Drupal 7 站点的自定义登录页面/部分,但该部分的设计需要与父站点的设计完全不同。它只是一个全尺寸的背景图片,没有导航、没有页脚、没有页眉和一个新表单。
您能否通过自定义模块从“页面”中删除所有基本站点主题,以便创建自定义设计?
【问题讨论】:
标签: drupal drupal-7 drupal-modules drupal-theming
简答:可以!这需要很多工作,但你可以。
长答案:如果对来自自定义模块的解决方案的要求很严格,请跳到此答案的最后一部分。否则,欢迎您完整阅读。
我会做什么
如果对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';
}
}
【讨论】: