将HTML5应用程序用作Drupal模块

时间:2011-11-24 16:15:15

标签: php html5 drupal drupal-7 drupal-modules

我为学院的学生协会管理一个基于Drupal 7的网站。其中大部分是标准的静态页面。每年我们都会进行一次房间选票,供人们选择他们的房间,这个过程需要一个应用程序来显示当前房间分配(实时)和维基风格信息,了解不同房间的情况。

我需要能够提供HTML,javascript和css的静态页面;绕过主题模块。我需要html页面中的相对寻址作为应用程序的根目录才能正常工作(例如“javascript / app.js”应该从模块中获取该文件)。然后,我需要使用所有drupal API提供来自php的json数据,以获取权限和数据库访问等。

我在HTML,Javascript等方面有一些经验,在PHP中也有一些经验,但我对Drupal模块开发还不熟悉。

1 个答案:

答案 0 :(得分:2)

您应该按照建议创建自定义模块,并将HTML5应用程序单独放在模块的子文件夹中。当它被访问时,它将使用与您通常期望的相同的相对路径,因此如果文件存在于HTML5应用程序文件夹下的路径中,javascript/app.js将起作用。

对于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();
}

该代码在mp/app/data定义了一个菜单路径(使用hook_menu()),该路径使用mymodule_ajax_callback()作为页面回调。

mymodule_ajax_callback()只是从数据库中抓取与AJAX type中传递的$_POST参数匹配的所有节点,并将其ID和标题输出到页面中(这将是当您请求/my/app/path)时,将作为您的AJAX响应返回。

希望有所帮助