![](/img/trans.png)
[英]How to Install Semantic Wiki Extension on Mediawiki Running in Azure Web Site
[英]Installing TabView extension in a MediaWiki site
我目前正在嘗試在MediaWiki網站上安裝TabView擴展。 我從此頁面下載了php文件,並將其放在擴展文件夾中,如下所示:... / extensions / TabView / TabView.php
將以下行添加到LocalSettings.php文件:
require_once("$IP/extensions/TabView/TabView.php");
不知何故,當我嘗試使用頁面上的標記時,出現此錯誤:
致命錯誤:在第107行的/var/www/html/camnang.vysajp.org/public/extensions/TabView/TabView.php中找不到類'F'
有沒有什么辦法解決這一問題?
您鏈接到的TabView擴展似乎取決於Wikia Nirvana框架 ,尤其是取決於WikiaSuperFactory類 (該類的“ F”是其虛擬子類)。 通過該框架,它從Wikia JSSnippets擴展實例化一個JSSnippets對象。
簡而言之,該擴展程序的JS端似乎利用了一堆特定於Wikia的代碼。 您可以嘗試將所有依賴項添加到Wiki,但是使用標准MediaWiki功能復制功能可能會更容易。
具體來說,查看JSSnippets類文檔(請參見上面的鏈接), addToStack()
調用的作用是告訴瀏覽器異步加載兩個鏈接的JS文件,然后在文件加載后調用JS函數TabView.init()
和命名的參數id
並selected
(作為通用對象的屬性傳遞,例如JSON)。
使用標准MediaWiki ResourceLoader進行相同的操作應該不難。 首先,我們需要定義一個ResourceLoader模塊來加載所需的腳本(警告:未經測試的代碼!):
$wgResourceModules['ext.TabView'] = array(
'scripts' => array( 'js/mustache.js', 'js/TabView.js' ),
'localBasePath' => __DIR__,
'remoteExtPath' => 'TabView',
);
將其插入到擴展代碼頂部附近的函數定義之外的位置。 您還需要將mustache.js庫復制到TabView/js
子目錄。
(我相信 ,即使使用ResourceLoader的范圍設定特性 ,也可以像這樣將兩個JS文件一起加載。當然,如果我們有幾個使用mustache.js庫的擴展,將其作為一個單獨的模塊可以更有效,更優雅。本身,但隨后它需要一個膠粘腳本,該腳本執行類似於window.Mustache = Mustache;
)
然后在hook函數中,我們需要告訴MediaWiki加載此模塊並調用TabView.init()
函數,如下所示:
$opts = array( 'id' => "flytabs_$id", 'selected' => $optionsIndex );
$opts = json_encode( $opts );
$js = "mw.loader.using( 'ext.TabView', function () { TabView.init($opts) } );";
$out .= "<script type='text/javascript'>$js</script>";
PS。 TabView.js文件說它“ [d]出現在skins / oasis / js / tab.js上”。 我找不到與維基的回購該名稱的任何文件,但有一個皮/綠洲/ JS /片S 9 .js文件 ,你可能還需要復制到TabView/js
子目錄,並添加到模塊定義一起小胡子。 JS。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.