2014-11-05 102 views
2

我需要创建一个自定义模块,以在特定菜单项上生成静态HTML页面。我知道如何使用菜单钩子来创建菜单项,但是如何让模块在该菜单页上生成静态html?自定义Drupal模块中的静态HTML页面

基本上我有一个静态的HTML网站创建,我需要被纳入模块。然后,我将模块发送给其他人在他们的网站上安装。

我必须包含所有的图像,CSS和JavaScript。它还需要生活在当前主题之外,因为它具有不同的外观和感觉。

回答

2

创建的.html,的.css和.js文件就像你通常会(但不包括在.html文件<html><head>,或者<body>的标签,当加载你的模块,这些都已经包括在内) 。你定义的任何CSS都会覆盖Drupal的默认CSS。

然后,您可以使用Form API的item元素导入您的静态HTML页面。

static_page.module

/** 
* Implements hook_menu(). 
*/ 
function static_page_menu() { 
    $items = array(); 
    $items['staticpage'] = array(
    'title' => t('My Static Page'), 
    'page callback' => 'drupal_get_form', 
    'page arguments' => array('static_page_form'), 
    'access arguments' => array('access content'), 
    'type' => MENU_NORMAL_ITEM, 
); 
    return $items; 
} 

/** 
* Implements hook_form(). 
*/ 
function static_page_form($form, &$form_state) { 
    // Add CSS and JS 
    drupal_add_css(drupal_get_path('module', 'static_page') . '/static_page.css'); 
    drupal_add_js(drupal_get_path('module', 'static_page') .'/static_page.js'); 
    // Import your static HTML page 
    $form['html'] = array(
    '#type' => 'item', 
    '#markup' => file_get_contents(drupal_get_path('module', 'static_page') .'/static_page.html'), 
); 
    return $form; 
} 

如果你不希望你的静态页面就包含了标准的头,面包屑,即显示该网站的其余侧边栏和页脚,您可以使用CSS隐藏它们。

static_page.css

#header, 
#breadcrumb, 
.sidebar, 
#footer-wrapper { 
    display: none !important; 
} 
+0

谢谢这已经得到了我接近我所需要的。 – 2014-11-06 16:04:12