我为学院的学生协会管理一个基于Drupal 7的网站。其中大部分是标准的静态页面。每年我们都会进行一次房间选票,供人们选择他们的房间,这个过程需要一个应用程序来显示当前房间分配(实时)和维基风格信息,了解不同房间的情况。
我需要能够提供HTML,javascript和css的静态页面;绕过主题模块。我需要html页面中的相对寻址作为应用程序的根目录才能正常工作(例如“javascript / app.js”应该从模块中获取该文件)。然后,我需要使用所有drupal API提供来自php的json数据,以获取权限和数据库访问等。
我在HTML,Javascript等方面有一些经验,在PHP中也有一些经验,但我对Drupal模块开发还不熟悉。
答案 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响应返回。
希望有所帮助