2015-04-27 19 views
7

Làm cách nào để thêm tệp javascript tùy chỉnh (giả sử custom.js) vào cài đặt mediawiki?Cách thêm javascript toàn cầu tùy chỉnh vào mediawiki

Ví dụ: nếu tôi đặt custom.js trong thư mục resources/lib/, làm cách nào để tải nội dung đó trên mỗi trang?

Tôi không cố gắng thực hiện việc này như là một phần của tiện ích và tôi muốn giữ các thay đổi của mình trong LocalSettings.php.

Trả lời

9

Như garryp đã đề xuất, bạn có thể đặt mã JavaScript vào MediaWiki:Common.js. Lưu ý rằng đây là không phải một tệp nhưng chỉ đơn giản là trang bạn có thể chỉnh sửa (với tư cách là quản trị viên) trên wiki của mình. Ví dụ: đây là số MediaWiki:Common.js page on the English Wikipedia.

Mã JavaScript từ Common.js chỉ được tải nếu bật $wgUseSiteJs. Tuy nhiên, đây là thiết lập mặc định, do đó, nó sẽ hoạt động trừ khi bạn cố ý vô hiệu hóa nó bằng cách thêm một dòng như $wgUseSiteJs = false; vào tệp LocalSettings.php của bạn.


Cũng có thể tải mã JavaScript từ tệp bằng cách sử dụng ResourceLoader, nhưng điều này phức tạp hơn một chút. Tuy nhiên, cũng giống như một ví dụ nhanh, nếu bạn đã có, nói, tập tin có tên foo/bar.jsfoo/baz.js trong thư mục MediaWiki chính của bạn, bạn có thể tải chúng bằng cách thêm đoạn mã sau vào tập tin LocalSettings.php của bạn:

// register a ResourceLoader module... 
$wgResourceModules['custom.foo.whatever'] = array(
    'scripts' => array('foo/bar.js', 'foo/baz.js'), 
    // could e.g. add dependencies on core modules here 
); 
// ...and set up a hook to add it to every page 
function addMyCustomScripts(&$out) { 
    $out->addModules('custom.foo.whatever'); 
    return true; 
} 
$wgHooks['BeforePageDisplay'][] = 'addMyCustomScripts'; 

Về cơ bản, phương pháp này chủ yếu là hữu ích cho các tác giả mở rộng, những người có thể sử dụng nó để tải mã CSS và JS khi cần thiết. Xem tài liệu $wgResourceModulesBeforePageDisplay để biết thêm chi tiết, bao gồm các tùy chọn mô-đun bổ sung (và core modules).

+0

Điều này thật tuyệt! Hữu ích hơn nhiều so với tài liệu wiki. Tôi nghĩ rằng bằng cách sử dụng các module tài nguyên và móc khi bạn đang cố gắng để đưa vào thư viện javascript/jquery khác nhau là cần thiết. – MirroredFate

1

Đặt mã kiểm tra vào "MediaWiki: Common.js" trang wiki

http://www.mediawiki.org/wiki/Manual:Interface/JavaScript

bạn cũng thấy thấp xuống trang cho da tùy chỉnh.

+0

Các trang trên Common.js đã bị xóa, và các tài liệu trên trang liên kết của bạn là vô cùng thiếu trong bất kỳ loại ví dụ hữu ích. Tôi chân thành hy vọng bạn sẽ chỉnh sửa câu trả lời của bạn để bao gồm một ví dụ hoặc hai trong số những gì bạn đang nói về. – MirroredFate

+0

Bạn đã thử tìm kiếm hệ thống tệp của mình cho common.js chưa? Nó tồn tại? – garryp

+0

Tôi đã làm. Không có tệp nào có tên "Common.js" hoặc "common.js". – MirroredFate

1

Bạn có thể đặt mã javascript vào trang "MediaWiki: common.js" trong wiki của bạn.

Trên wiki mới, bạn sẽ là tạo trang này. Bởi vì nó nằm trong không gian tên "MediaWiki", bạn có thể nhấn số quyền. Bạn không thể chỉnh sửa trang trừ khi bạn là người dùng quản trị viên. Vào trang "Special: ListUsers/sysop" để xem ai là người dùng quản trị, và chắc chắn rằng bạn đã đăng nhập với tư cách là một trong số họ (can't remember the password?). Khi bạn đã vượt qua những rào cản đó và có thể chỉnh sửa "MediaWiki: common.js" ...

Bạn có thể đặt bất kỳ javascript nào ở đó và nó sẽ tải cho tất cả người dùng bất kể nhóm người dùng hoặc lựa chọn da của họ (do đó tên "chung"). Sau khi thay đổi, hãy nhớ trình duyệt của bạn có thể đang lưu vào bộ nhớ cache mọi thứ. Xem bất kỳ trang wiki nào và làm ctrl + làm mới và javascript mới sẽ bắt đầu.

Nếu bạn có javascript trong tệp bạn muốn tải (được tải lên trong các tệp wiki của bạn hoặc được lưu trữ trên trang web bên ngoài) bạn có thể thực hiện điều này thông qua ResourceLoader. Ilmari Karonen đã giải thích cách làm điều này như một bản chỉnh sửa cho LocalSettings.php của bạn, nhưng cách tiếp cận khác ...

Bạn có thể sử dụng ResourceLoader trong "MediaWiki: common.js" trang. Ví dụ: chỉnh sửa trang và chỉ cần thêm một dòng:

mw.loader.load('https://some.website.com/some-javascript.js'); 

Xem phần 'mw.loader.load' trong mediawiki.org ResourceLoader/Modules docs.

Chúng tôi đã sử dụng một sự kiện addOnloadHook được dự định để làm theo trên từ tải này, vì vậy chúng tôi đã kết thúc làm điều đó một cách jQuery:

jQuery.getScript('https://some.website.com/some-javascript.js', 
    function() { 
    addOnloadHook(function() { 
     someJavaScript.thingToRunOnLoad(); 
    }); 
    }); 
2

Sử dụng Common.js là một ý tưởng tốt.

lựa chọn khác là để xác định nó để tải trong LocalSettings.php:

# Add onBeforePageDisplay function to BeforePageDisplay Hook 
$wgHooks['BeforePageDisplay'][] ='onBeforePageDisplay'; 

function onBeforePageDisplay(OutputPage &$out, Skin &$skin) 
{ 
    $script = '<script type="text/javascript" src="https://example.com/javascript.js"></script>'; 
    $out->addHeadItem("itemName", $script); 
    return true; 
}; 
Các vấn đề liên quan