2012-02-06 56 views
0

我目前正在建立一个Drupal网站,它的本地化工作非常好。但是今天我面临着一个我看不到明确解决方案的局面。我一直在谷歌搜索,通过Drupal论坛嗅探,找到解决这种情况的正确方法,但我找不到一个可靠的解决方案。在Drupal中处理几个PHP页面

在我的网站上,我有一个包含搜索表单的页面,用户可以输入一个邮政编码或一只狗/猫的品种。但关于它的困难之处在于数据需要来自外部服务。所以,没有花哨的Drupal CCK数据类型,视图或任何。

所以我想知道正确的方法是实现一些自定义的PHP代码。我的意思是:我需要实现几个已经由别人编程的php脚本。像这样想一想:当用户点击搜索按钮时,某人制作了一个带有html格式的php文件,您将被重定向到results.php,该搜索按钮显示列表中的搜索查询结果。

所以,我想知道什么是最好的方式是实现这样的自定义代码而不重写整个事情(这比我在这里谈论的剥离下来的情况要复杂得多,因此完整的重写不是'目前是解决方案)。

我应该制作一个自定义的内容类型,并将php代码放在一个单独的.tpl.php文件中吗? 我应该启用PHP模块并开始在页面的正文字段中放置php代码吗?但是如何在数页上传输数据呢?等等, ... ?

谢谢你的答案。

回答

1

我会用下面去:

  • 从PHP脚本建立一个新的搜索模块
  • 建立第二个模块覆盖默认搜索表单所以搜索是通过你的模块,没有处理核心搜索

对于一个很好的起点,看看在Apache Solr的搜索模块从Drupal.org http://drupal.org/project/apachesolr

使用Ajax进行“实时”搜索的奖励积分 http://drupal.org/project/apachesolr_ajax

+0

我打算为您的解决方案进行投票,因为它可能是最干净的,但开发时间会更长,我目前没有。除此之外,我还需要包含其他不需要执行搜索功能的php脚本。意思是说,我需要一个更通用的方法来嵌入自定义的php/sql。我读了一些关于使用特定节点ID制作.tpl.php文件的内容? – polyclick 2012-02-06 15:44:08

+0

添加特定于node-id的.tpl文件是一个非常糟糕的主意。如果不知道你正在谈论的脚本的具体情况,我无法给你一个很好的答案。但是一般来说,如果你想在不使用Drupal方式(模块)的情况下集成外部应用程序,那么也许你应该考虑通过Ajax来做到这一点。这样你只需要让你的脚本返回JSON,并且所有的接口都可以通过JavaScript来完成,而JavaScript通过drupal_add_js调用很容易注入。从那时起,您可以操纵DOM,而不必惹Drupal。 – 2012-02-06 16:00:52