Extension:VariablesExtension/vi
From MediaWiki.org
|
VariablesExtension Trạng thái phát hành: ổn định |
|
|---|---|
| Cài đặt | Parser function |
| Mô tả | Định nghĩa biến phạm vi trang |
| Tác giả | Rob Adams |
| Download | xem bên dưới |
Variables là một phần mở rộng rất đơn giản cho phép bạn định nghĩa một biến trong một trang viết, sử dụng nó sau vẫn trong trang đó, thay đổi giá trị của nó chẳng hạn, một giá trị trả về từ một biểu thức.
Nó rất giống một tiêu bản, có điều rất nhẹ và chỉ tồn tại trong một trang đơn lẻ, vì thế bạn có thể dùng rất nhiều biến trong một trang mà không lo làm ngập lụt wiki với số lượng khổng lồ các tiêu bản. Ngoài ra biến cũng có thể được sử dụng để đánh dấu trạng thái của một phần nào đó trong trang. Kết hợp với các hàm phân tích cú pháp để đạt kết quả cao nhất.
Phần mở rộng đơn giản "chết người" ;-) này được viết bởi Rob Adams, sau đó được phát hành trong phạm vi công cộng và được nhập khẩu vào MediaWiki phiên bản 1.8 bởi Hempel, phiên bản 1.10 bởi Rob Adams.
Chú ý: Các ví dụ sau đã được Việt hoá, để chạy thành công, xin hãy sử dụng đoạn mã Việt hoá như hướng dẫn ở đây hoặc xem trang tiếng Anh
Contents |
[edit] Gán giá trị cho biến
{{#gán:tên biến|giá trị}}
Gán một giá trị giá trị cho biến tên biến (đã tồn tại hoặc định nghĩa mới).
[edit] Lấy giá trị của một biến
Giá trị của biến tên biến được trả về bằng lệnh:
{{#biến:tên biến}}
Nếu chưa được định nghĩa, nó trả về một xâu rỗng mà không báo lỗi.
[edit] Ví dụ
- Lưu ý rằng phần mở rộng ParserFunctions cũng cần thiết để sử dụng #expr
Tính 2*a + b:
{{#expr:2*{{#biến:a}}+{{#biến:b}}}}
Cộng 1 vào n:
{{#gán:n|{{#expr:{{#biến:n}}+1}}}}
[edit] Biến và các hàm điều kiện
[edit] ParserFunctions
Cần chú ý rằng mọi thứ trong các hàm điều kiện như #ifexpr đều được thực hiện (mặc dù chỉ một kết quả được trả về), bất chấp mọi điều kiện, xem m:ParserFunctions#Code_execution. Điều này cũng áp dụng với #gán. Thế nên:
{{#ifexpr:..|
{{#gán:a|b}}|
{{#gán:a|c}}
}}
trước tiên gán vào a giá trị 'b', sau đó là 'c' (kết quả là a chứa 'c'), bất kể điều kiện, trong khi
{{#gán:a | {{#ifexpr:..|b|c}} }}
chỉ gán giá trị phù hợp.
Tương tự,
{{#ifexpr:..| {{#gán:a|b}}|}}
gán 'b' bất kể điều kiện, trong khi
{{#gán:a | {{#ifexpr:..|b|{{#biến:a}} }} }}
gán giá trị 'b' tuỳ theo điều kiện (nếu điều kiện '...' không thoả mãn thì gán lại chính giá trị của a).
[edit] Control Structure Functions
Một cách khác để tránh hạn chế vừa đề cập là sử dụng phần mở rộng Control Structure Functions, cho phép trì hoãn sự phân tích cú pháp wiki thông qua việc sử dụng character escape sequences. Như vậy ví dụ đầu tiên ở trên trở thành::
{{#ifexpr:..|
\o#gán:a\pb\c|
\o#gán:a\pc\c
}}
Một cách khác, phần mở rộng Character Escapes có thể được sử dụng để tự động hoá chuỗi thoát:
{{#ifexpr:..|
<esc>{{#gán:a|b}}</esc>|
<esc>{{#gán:a|c}}</esc>
}}
Control Structure Functions cũng cho phép vòng lặp hỗ trợ chuỗi thoát. Mã lệnh là:
{{ #gán: i | 0 }}{{
#while: expr
| <esc>{{ #biến: i }} < 3</esc>
| <esc>
* {{ #biến: i }}{{ #gán: i | {{ #expr: {{ #biến: i }} + 1 }} }}</esc>
}}
cho kết quả:
- 0
- 1
- 2
[edit] Cài đặt
Chép đoạn này vào tệp $mediwikipath/extensions/Variables/Variables.php:
<?php if ( !defined( 'MEDIAWIKI' ) ) { die( 'This file is a MediaWiki extension, it is not a valid entry point' ); } $wgExtensionFunctions[] = 'wfSetupVariables'; $wgExtensionCredits['parserhook'][] = array( 'name' => 'Variables', 'url' => 'http://www.mediawiki.org/wiki/Extension:VariablesExtension', 'author' => 'Rob Adams', 'description' => 'Define page-scoped variables' ); $wgHooks['LanguageGetMagic'][] = 'wfVariablesLanguageGetMagic'; class ExtVariables { var $mVariables; function vardefine( &$parser, $expr = '', $value = '' ) { $this->mVariables[$expr] = $value; return ''; } function varf( &$parser, $expr = '' ) { return $this->mVariables[$expr]; } } function wfSetupVariables() { global $wgParser, $wgMessageCache, $wgExtVariables, $wgMessageCache, $wgHooks; $wgExtVariables = new ExtVariables; $wgParser->setFunctionHook( 'vardefine', array( &$wgExtVariables, 'vardefine' ) ); $wgParser->setFunctionHook( 'var', array( &$wgExtVariables, 'varf' ) ); } function wfVariablesLanguageGetMagic( &$magicWords, $langCode = 0 ) { require_once( dirname( __FILE__ ) . '/Variables.i18n.php' ); foreach( efVariablesWords( $langCode ) as $word => $trans ) $magicWords[$word] = $trans; return true; }
Chép đoạn này vào tệp $mediwikipath/extensions/Variables/Variables.i18n.php (đã được Việt hoá):
<?php /** * Get translated magic words, if available * * @param string $lang Language code * @return array */ function efVariablesWords( $lang ) { $words = array(); /** * English */ $words['en'] = array( 'var' => array( 0, 'var' ), 'vardefine' => array( 0, 'vardefine' ), ); /** * Tiếng Việt */ $words['vi'] = array( 'var' => array( 0, 'biến' ), 'vardefine' => array( 0, 'gán' ), ); # English is used as a fallback, and the English synonyms are # used if a translation has not been provided for a given word return ( $lang == 'en' || !isset( $words[$lang] ) ) ? $words['en'] : array_merge( $words['en'], $words[$lang] ); }
Sau đó chèn
require_once( "$IP/extensions/Variables/Variables.php" );
vào cuối tệp LocalSettings.php.
[edit] Đọc thêm
- Extension:DynamicFunctions##arg:
- bugzilla:7865 - Bật VariablesExtension trên các wiki của Wikimedia (trạng thái: wontfix)
- Extension:Variables - tạo biến mới trên MediaWiki.
- Extension:Control Structure Functions - ParserFunctions
- Extension:Loops