自定义Drupal模块中的静态HTML页面

时间:2014-11-05 21:16:25

标签: html drupal drupal-7

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

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

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

1 个答案:

答案 0 :(得分: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;
}