2010-12-08 36 views
4

我目前正在構建一個Web應用程序(在Ruby on Rails上),它可以讓用戶定製他們自己的區域(個人博客頁面),並想知道什麼是最佳方式完成這個?讓用戶爲自定義佈局編寫DB存儲的CSS

我認爲液體模板會很好,但是如何處理樣式?我的目標是讓每個博客都有一個名爲「style」的數據庫字段,它將存儲自定義樣式表,這是最好的方法嗎?

到目前爲止,我使用「sanitize_css」輔助方法嘗試過它,但它只是將「#stylebox」標籤除去,意味着什麼都不顯示。

任何想法?

謝謝。

回答

0

我就老老實實讓你的網頁主題化的元素,然後每個這樣的樣式規則存儲爲字段(或企業集團他們成一個巨大的領域)在數據庫中。執行一些驗證,以確保他們不使用任何有趣的業務(如果他們只編碼特定的div的,他們不應該使用任何大括號。)

然後生成動態CSS 。

原因?如果您想在自己的網站上投放廣告,並且允許他們上傳完整的CSS,則可以輕鬆關閉廣告單元的可見性。

我認爲它是「更安全」來控制他們被允許主題;肯定會有更高級的用戶打勾。但是,你真的想成爲下一個MySpace嗎? ;-)

0

如果代碼太多,則序列化數據並將其作爲文本存儲在數據庫中。 這將會好得多我認爲

3

目前我也在處理幾乎與您相似的需求。我也想創建一個CMS爲用戶添加頁面,他們的風格等。

我的做法如下

每個用戶都會有他/她的子域。 (我使用before_filter獲取當前用戶子域並加載他/她的網站)

關於樣式,我更喜歡將樣式表作爲物理文件。鑑於你的方法將有更多的編輯樣式表的靈活性,我不喜歡在頁面頂部添加表格代碼的想法。 Insted,我允許用戶加載他們的styleshets(使用回形針)

所以當站點加載時,我將從DB獲取css路徑並從路徑加載樣式表。

後來我打算讀取文件並將其加載到textarea,以便用戶可以編輯它們的樣式表,並在保存時覆蓋現有文件;

對於佈局我使用的液體以及

歡呼

sameera

+0

順便說一下我在rails3上:D – sameera207 2010-12-08 17:36:11

+1

感謝您的回覆。沒有包含代碼的上傳文件存在安全風險? – wastedhours 2010-12-10 15:10:03

0

如果您打算允許用戶完全控制CSS的區域,那麼我可能完全避免使用數據庫並使用結構化文件系統方法。您可以爲包含main.css的每個用戶創建一個子域或文件夾。這也讓你可以很好地擴展你的用戶的功能(圖片等)

就是說,正如羅比提到的,你可能想考慮限制用戶可以控制什麼風格。否則,你可能會發現事情很快就會失控。對於這種方法,您可能希望使用數據庫來存儲可修改元素的屬性值。