如何在Drupal的创建内容页面中挂钩?

时间:2010-07-19 16:04:32

标签: ajax forms drupal cck

我正在从drupal的Array Shift安装配置文件中构建一个构思捕获网站,并且我正在尝试为用户开始创建新构思时创建类似的条目查找。当用户在创建新构思表单(我在cck中创建的新内容类型)的标题字段中键入文本时,我是否有一种方法可以检测到然后使用ajax创建所有其他发布的想法的动态下拉列表基于我创建的自定义SQL查询是类似的?我已经在许多第三方COTS工具中看到了这个想法捕获,更不用说在Stackoverflow中了,我希望在drupal中做同样的事情。现在,我能想到的唯一方法是破解cck模块,我知道这不是一个好主意,或以某种方式以某种方式挂钩到那个形式。我不知道该怎么做。我使用hook_form_alter()吗?我正在使用drupal 6.16和CCK 6.x-2.7。感谢。

3 个答案:

答案 0 :(得分:1)

Drupal中有一个非常好的autocomplete system,但是如果你想完全走出人迹罕至的地方,那就不是很好了。

我已经充分利用了Autocomplete Widgets模块。您使用此窗口小部件创建专用CCK文本字段,然后使用PHP片段设置允许的值。允许的值用于生成自动完成选项。

我只是在代码段区域中删除了一个PHP函数调用。我在自定义模块中定义的PHP函数,查询了一个远程数据库,并使用drupal_json()返回结果。

答案 1 :(得分:1)

我解决了自己的问题。这是我做的:

  • 为标题文本字段
  • 设置onchange的drupal.behavior
  • 在onchange handler
  • 中进行了一次ajax调用
  • 将ajax调用连接到与我在自定义模块中创建的回调函数相对应的路径
  • 严重:我必须禁用然后重新启用该自定义模块才能调用回调函数(在hook_menu()中定义的那个)
  • 在回调函数中创建了一个sql查询,在db
  • 中查找类似的想法
  • 将结果打印在我放置在标题文本字段下方的标记元素中。我将结果包装在链接到各自想法页面的标签中。

瞧,它现在就像一个魅力!我不得不拼凑了大约10个教程来解决这个问题。

答案 2 :(得分:0)

不知道这是否与您想要的相似,但您可以使用带有自由文本输入的CCK字段打开AJAX生成的“下拉”字段,其中包含可能的匹配项。 AFAIK这只适用于节点,分类法和其他一些Drupal集成类型。无法使用自定义查询。

如果您需要自己创建一些内容,请查看源代码中此“freetext”字段的来源,并根据您的需要进行调整,并/或为此特殊类型创建自定义CCK字段。