2010-06-15 27 views
1

我想要定制一个Drupal 6.x模块。原始模块不会对数据库进行任何调用,但自定义版本需要从数据库中提取一些数据。查询应该通过AJAX调用进行。所以我试图让数据提供者接收调用,查询数据库并返回结果(某些json)。在Drupal中访问数据库

对于数据提供者,我需要一个链接到数据库,但我不想在脚本中创建链接,而是想要查找存储数据库连接值的脚本并包含该文件。但我似乎没有找到该文件的任何成功。它位于典型的Drupal安装位置?

P.S.我不想让它成为Drupal模块,并遵循所有约定来创建_hook()函数。我想让它直线前进,老派。

+0

没有使用钩子,模块的代码没有机会从Drupal中调用。至少,模块应该定义'hook_menu()',它定义了模块所具有的菜单回调(换句话说,它暴露了模块使用的菜单)。 用户不能使用没有菜单的模块;没有钩子的模块不会被Drupal调用。 – kiamlaluno 2010-06-15 19:47:35

+0

如果你想做oldschool,而不是使用drupal框架,你最好使用'php'和'ajax'标签而不是drupal标签。毕竟,如果你要去上学,那么这个网站是否基于drupal并不重要。 – 2010-06-15 19:49:21

+0

@barraponto - 那么drupal标签就是为了引起那些熟悉drupal的人的注意。我的问题不是如何对查询进行编码,我知道我在问的是在drupal安装中可以找到哪些特定信息。 – 2010-06-15 19:54:26

回答

0

数据库设置应该在sites/default/settings.php

+0

谢谢。看起来他们不能直接做任何事情,现在我应该从URL中获取值! – 2010-06-15 19:46:51

+0

如果你问我,你坚持以这种方式做到这一点很困难,这就是为什么事情似乎并不简单。 – ceejayoz 2010-06-15 20:09:43

2

“P.S.我不想把它做成一个Drupal模块,并遵循所有的约定来创建_hook()函数,我想让它变得简单和老派。

为什么?这是最简单的方法,您仍然可以在其中定义外部数据库连接并使用Drupal数据库层,并且您可以从您正在定制的模块中执行此操作。

如果您不使用外部数据库(不是Drupal),那么您可以使用数据库API。

http://api.drupal.org/api/group/database/6

其他设置可以存储在settings.php配置,但由于要自定义模块,我将有它的模块内的权利,使您不必以后打猎下来。

+0

如果您已经具备框架的工作知识,那么可能会最简单。我对它并不熟悉,我试图达到的是相当微不足道的。 – 2010-06-15 19:49:29

7

一个简单的方法,如果你直接调用这个文件是引导Drupal。例如,你可以做到以下几点:

<?php 
// Bootstrap Drupal 
require 'includes/bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 
?> 

这将允许您访问的全方位的Drupal的API包括db_query()。为了您的使用,您可能只想将DRUPAL_BOOTSTRAP_DATABASE而不是DRUPAL_BOOTSTRAP_FULL转换为drupal_boostrap()。请参阅http://api.drupal.org/api/function/drupal_bootstrap/6以供参考。

+0

这看起来很简单,我会尝试。谢谢。 – 2010-06-15 19:51:14

+0

代码需要放在Drupal根目录下的PHP文件中;如果将它放在不同的目录中,则需要更改用于引导文件的路径。 然后需要独立于Drupal调用该文件。 – kiamlaluno 2010-06-15 20:15:37