2017-08-16 143 views
0

我想创建一个完整页面自定义模块。通过这个,我的意思是一个不包含在主要Drupal站点中的模块。这里是我的代码:Drupal 7创建整页自定义模块

myapp.module:

function myapp_menu() 
{ 
$result = array(); 
$result['myapp/home'] = array(
    'title' => 'My App Title', // Title of our page 
    'description'=> 'My App Web Site', // Description of our page 
    'page callback' => 'myapp_function', 
    'access arguments' => array('access content'), // permission to access this page 
    'type' => MENU_NORMAL_ITEM, // type of menu item 
); 

return $result; 
} 

function myapp_function(){  
    return theme('my_custom_template'); 
}  

function myapp_theme(){ 
    return array(
    'my_custom_template' => array(   
     'template' => 'myapp-page', 
    ), 
); 
} 

MYAPP-page.tpl.php中

Hello World 

的问题是,在显示页面时,它仍然保持内主要的Drupal站点主要主题。我想使这个页面成为它自己的完整页面网站。任何人都可以帮助做到这一点?

感谢

回答

0

你能砍这样的:

function myapp_function(){  
    print theme('my_custom_template'); 
    exit; 
} 

您也可以使用https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_theme/7.x

参数列出声明选项

数组$现有:现有的数组可以使用 来实现覆盖目的。这主要适用于可能需要检查现有实现以提取数据(如 参数)的主题,以便它可以正确注册其自己的更高优先级的实现。

$ type:是否正在处理主题,模块等。这主要是 有用,以便主题可以判断它们是实际主题 被调用还是父主题。可能是以下之一:

'模块':模块正在检查主题实现。 'base_theme_engine':正在检查主题引擎的主题, 是正在使用的实际主题的父级。 'theme_engine':主题 正在检查正在使用的实际主题。 'base_theme': 正在检查主题实现的基本主题。 '主题': 正在使用的实际主题正在被检查。 $ theme:正在处理的主题,模块等的实际名称 。

$ path:主题或模块的目录路径,以便它不需要查找 。

+0

伟大的工作。但是,你提到这是一个“黑客”。这是不是皱起了眉头?还是有一种“黑客”方法? – jason

+0

我不太确定,但你也可以通过网址创建另一个主题(自定义)和案例https://drupal.stackexchange.com/questions/812/how-do-i-change-a-theme-based- on-the-url,或尝试hook_theme声明中的所有选项。但简单而有效的方法就是这种破解 – Fky