2014-11-05 3 views
2

Мне нужно создать настраиваемый модуль, который создает статическую HTML-страницу в определенном пункте меню. Я знаю, как создать элемент меню с помощью меню, но как бы я хотел, чтобы модуль создавал статический html на этой странице меню?Статическая страница HTML в пользовательском модуле Drupal

В принципе, у меня есть статический HTML-сайт, который должен быть включен в модуль. Затем я отправляю модуль кому-то другому, чтобы установить его на свой сайт.

Я должен включить все изображения, css и javascript. Он также должен жить вне текущей темы, так как он имеет другой внешний вид.

ответ

2

Создать свой .html, .css и .js файлов, как вы это обычно (однако, не включают в себя <html>, <head> или <body> тегов в .html файла, поскольку они уже будут включены, когда ваш модуль загружается) , Любой CSS, который вы определяете, переопределит CSS по умолчанию для Drupal.

Затем вы можете использовать элемент формы 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

Спасибо это получил меня близко к тому, что мне было нужно. –