2011-11-22 20 views
1

我正在開發基於另一個擴展(內部開發)的Mediawiki的擴展,該擴展在版本高於1.16.5的Mediawiki安裝時不能在上面使用。我需要在屬於特定命名空間的頁面中包含JavaScript,並且我不能使用ResourceLoaderhttp://www.mediawiki.org/wiki/ResourceLoadermediawiki 1.16.5:爲特定命名空間加載javascript

有人知道有沒有簡單的做到這一點?我需要包含JQuery和Datatables來自定義呈現屬於該名稱空間的頁面。

回答

2

至少有三種方法可以解決這個問題。

的第一個方法是編輯魔頁MediaWiki:Common.js,並添加這樣的:

if(wgNamespaceNumber == 0) { // NS_MAIN 
    importScript('MediaWiki:MyScript.js'); 
} 

您可以將任意JavaScript中的塊中,importScript位有執行JavaScript的存儲在一個Wiki頁面,但還有其他方法可以將JS動態加入(例如,參見this question)。請參閱Manual:Interface/JavaScript瞭解MediaWiki方面的細節。

第二種方法是破解生成MediaWiki頁面的PHP,以根據當前名稱空間注入<script>標籤,但這有點更爲複雜:您需要構建自定義擴展並將其掛接到某些適當的點。 ParserAfterTidy鉤子看起來合適,請參閱Hooks

第三種方法是簡單地編輯皮膚並加載維基中每個頁面的JS - 是否有一個原因,你不想爲每個頁面做這個?無論如何它們都被緩存了,所以這只是一次性打擊。

+0

謝謝。這是我正在尋找的那種答案。我將採用「MediaWiki:Common.js」方法。感謝您的鏈接! –