Discuz中DIY功能的實現原理?

來源:互聯網
上載者:User
誰能大體說下Discuz中DIY功能的實現原理,我看了一天沒找到頭緒!!!


回複討論(解決方案)

把每個控制項做成可拖拉,根所你所定的位置,儲存樣式,使用時調用樣式

把每個控制項做成可拖拉,根所你所定的位置,儲存樣式,使用時調用樣式 是不是要滿足下面幾點要求:
1、靜態頁面必須是可修改吧?
2、要diy的位置是固定的,這樣不是很有局限性嗎?
3、每個架構有自己的id,根據這個id調用樣式?
4、這種拖拽是通過javascript實現的嗎?通過jquery?

貼個連結看看?

貼個連結看看? http://www.discuz.net/
登入之後右上方有“DIY”連結

它實現原理是通過標籤實現 利用javascrip和php的混編 把頁面的標籤()中指定的div 替換為資料庫裡面的存放內容. 並生出快取檔案. 資料庫中記錄了頁面的ID(實際頁面並不存在) 模板名 diy的ID 和一個自己的編號. 而css樣式都是通過緩衝.後台更新一次css 就會讀取資料庫裡面設定css的內容並進行組建檔案 這樣就可以有DIV+CSS

樓上說的不錯

看源碼
common_diy.js

擴充了String的方法:property2js
定義了一個函數styleCss,並為styleCss擴充了一些方法
定義了json對象Util
定義了一個匿名函數,包含多個方法,其中Drag、DIY方法比較重要。



portal_diy.js

定義了一個Drag對象。
定義了一個DIY對象:var spaceDiy, 並執行了方法spaceDiy.init(1);

請參考 Discuz 官方文檔有關拖拽模組的部分!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.