Служить приложению HTML5 в качестве модуля Drupal - PullRequest
1 голос
/ 24 ноября 2011

Я управляю веб-сайтом на Drupal 7 для Студенческой ассоциации моего колледжа.Большинство из них - стандартные статические страницы.Каждый год мы проводим голосование по комнатам, чтобы люди могли выбирать их комнаты, и для этого процесса потребуется приложение, которое отображает текущее распределение комнат (в реальном времени) и информацию в стиле вики о том, на что похожи разные комнаты.

Мне нужноуметь обслуживать статические страницы HTML, javascript и css;минуя тематический модуль.Мне нужна относительная адресация на html-странице, которая служит корнем приложения для правильной работы (например, «javascript / app.js» должен подобрать этот файл из модуля).Затем мне нужно обработать данные json из php, используя все API-интерфейсы drupal для разрешений, доступа к базе данных и т. Д.

У меня довольно большой опыт работы с HTML, Javascript и т. Д., А некоторые с PHP, но ядовольно новый для разработки модулей Drupal.

1 Ответ

2 голосов
/ 24 ноября 2011

Вам следует создать собственный модуль, как вы предлагаете, и отдельно поместить свое приложение HTML5 в подпапку модуля. При обращении к нему будут использоваться те же относительные пути, которые вы обычно ожидаете, поэтому javascript/app.js будет работать, если файл существует в пути в папке вашего приложения HTML5.

Для данных JSON ваш пользовательский модуль будет выглядеть примерно так:

function mymodule_menu() {
  $items['my/app/data'] = array(
    'page callback' => 'mymodule_ajax_callback',
    'access callback' => TRUE,
    'type' => MENU_CALLBACK
  );

  return $items;
}

function mymodule_ajax_callback() {
  $type = $_POST['type'];

  $nodes = db_query("SELECT nid, title FROM {node} WHERE type = :type", array(':type' => $type))->fetchAllKeyed();

  drupal_json_output($nodes);

  drupal_exit();
}

Этот код определяет путь к меню (используя hook_menu()) в mp/app/data, который использует mymodule_ajax_callback() в качестве обратного вызова страницы.

mymodule_ajax_callback() просто захватывает все узлы из базы данных, которые соответствуют параметру type, переданному в AJAX $_POST, и выводит их идентификатор и заголовок в виде строки JSON на страницу (которая затем будет возвращена как ваш ответ AJAX когда вы запрашиваете /my/app/path).

Надеюсь, что поможет

...