2009-05-23 63 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建議的事情之一,使它們看起來一樣。

主題可能是最簡單的路線,但這並不是說這很容易!