2009-05-23 62 views
4

假设你正在运行一个Django站点,并且有一个遗留的PHP论坛来支持和集成到你的站点,因为当前的Django论坛解决方案还不够成熟。将PHP论坛整合到Django站点的最佳方法?

这样做的最好方法是什么?

目前我有一个简单的视图,它呈现了一个非常简单的模板,它扩展了我的网站的基本模板,内容区域只有一个<IFRAME>,它拥有论坛作为其src。一个小的jQuery函数用于最大化<IFRAME>的高度(一旦完成加载),以包含100%的论坛内容。

但这一切听起来都很尴尬。你会怎么做呢?

回答

5

有几个选项。都不是理想的(但混合两种平台永远是!)

  1. 使用iframe为你推荐(坏在地址栏中的地址始终为Django的页面,如果有人科佩斯关闭链接论坛,它将是PHP论坛,而不是Django持有者)

  2. 使用iframe,而不是一直使用相同的src,解析URL并将相关位附加到iframe的src上。即如果django看到/forum/this-url,请将src设置为http://forum-address/this-url,并确保您的所有链接都以parent为目标。这具有在地址栏中始终显示正确链接的优点(而不是总是/ forum /)。你需要破解你的论坛才能发挥作用。

  3. 对内容进行代理并将其正确注入页面。你需要通过cookies,它可能会变得非常混乱,但大多数情况下,这是整合事物的好方法,因为你的链接永远是正确的。您需要屠杀您的论坛主题,以去除所有内容,包括<body>标签。

  4. 以与Django站点相同的方式为您的论坛提供主题。这样可以获得最佳性能,但是如果您在django模板中使用动态内容,则可能会遇到问题。解决这个问题的一个选择是让django模板将内容缓存到memcache中,并使用php-memcache将它们拉出到您的论坛模板中。

我已经完成了3和4过去。我使用了3个非常简单的表单(因此您不必像处理cookies一样处理会话)。我用4将FluxBB论坛集成到Wordpress安装中。这两个PHP,但它会是超级膨胀加载FluxBB Wordpress。我将动态模板事件缓存到memcache中,并在论坛模板中将其提取出来。

为此,我可能会建议去#4。这是一个痛苦的屁股不得不维护两个主题,但它是迄今为止表现最快的解决方案。

1

当我阅读问题摘要时,我立即想到您需要某种类型的脚本,它可以通过Django中的Dispatcher链接到一个信号,以将用户数据库从Django站点同步到论坛。这将保持对事物的认证方面 - 但你仍然需要做Oli建议的事情之一,使它们看起来一样。

主题可能是最简单的路线,但这并不是说这很容易!