将 HTML5 应用程序作为 Drupal 模块提供服务
我为我学院的学生会管理一个基于 Drupal 7 的网站。其中大部分是标准静态页面。每年我们都会进行一次房间投票,让人们选择他们的房间,这个过程需要一个应用程序来显示当前的房间分配(实时)以及有关不同房间的维基风格信息。
我需要能够提供 HTML、javascript 和 css 的静态页面;绕过主题模块。我需要 html 页面中的相对寻址作为应用程序的根才能正常工作(例如“javascript/app.js”应该从模块内获取该文件)。然后,我需要使用所有用于权限和数据库访问等的 drupal API 来从 php 提供 json 数据。
我在 HTML、Javascript 等方面有相当多的经验,在 PHP 方面也有一些经验,但我对 Drupal 模块开发相当陌生。
I manage a Drupal 7 based website for my College's Student's Association. Most of it is standard static pages. Each year we run a room ballot for people to choose their rooms and this process will need an application to display current room allocations (in real time) and wiki style information about what the different rooms are like.
I need to be able to serve up static pages of HTML, javascript and css; bypassing the theming module. I need the relative addressing in the html page which serves as the root of the application to work properly (e.g. "javascript/app.js" should pick up that file from within the module). I then need to serve up json data from php using all the drupal APIs for permissions and database access etc.
I have a fair bit of experience in HTML, Javascript etc. and some in PHP, but I'm fairly new to Drupal module development.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该按照您的建议创建一个自定义模块,并将您的 HTML5 应用程序单独放入该模块的子文件夹中。当它被访问时,它将使用与您通常期望的相同的相对路径,因此如果该文件存在于您的 HTML5 应用文件夹下的路径中,
javascript/app.js
将起作用。对于 JSON 数据,您的自定义模块将如下所示:
该代码定义了一个菜单路径(使用
hook_menu()
) 在mp/app/data
使用mymodule_ajax_callback()
因为它是页面回调。mymodule_ajax_callback()
只是从数据库中获取与 AJAX$_POST
中传递的type
参数相匹配的所有节点,并将它们的 id 和 title 输出到一个发送到页面的 JSON 字符串(当您请求/my/app/path
时,该字符串将作为 AJAX 响应返回)。希望有帮助
You should create a custom module as you suggest, and separately put your HTML5 application in a sub-folder of the module. When it's accessed it will use the same relative paths as you'd normally expect so
javascript/app.js
will work if the file exists in the path under your HTML5 app's folder.For the JSON data your custom module will look something like this:
That code defines a menu path (using
hook_menu()
) atmp/app/data
which usesmymodule_ajax_callback()
as it's page callback.mymodule_ajax_callback()
simply grabs all nodes from the database that match thetype
parameter passed in the AJAX$_POST
and outputs their id and title in a JSON string to the page (which will then be returned as your AJAX response when you request/my/app/path
).Hope that helps