Mô đun:Cite
| Mô đun Lua này được sử dụng ở rất nhiều trang, vì thế những thay đổi đến nó sẽ hiện ra rõ ràng. Vui lòng thử nghiệm các thay đổi ở trang con /sandbox, /testcases của mô đun, hoặc ở chỗ thử mô đun. Cân nhắc thảo luận các thay đổi tại trang thảo luận trước khi áp dụng sửa đổi. |
Mô đun này chỉ nên được sử dụng trong các bài viết gần đạt đến giới hạn kích thước nhúng sau khi mở rộng (PEIS limit), nhằm ngăn chặn việc vượt quá giới hạn này. Trừ khi có nhu cầu kỹ thuật cấp thiết, hãy sử dụng các bản mẫu CS1 và {{Chú thích}} thích hợp. |
| Mô đun này phụ thuộc vào các mô đun sau: |
| {{Chú thích arXiv}} | bản in arXiv |
|---|---|
| {{Chú thích video}} | phương tiện nghe nhìn |
| {{Chú thích ghi chú album}} | ghi chú bên lề phương tiện nghe nhìn |
| {{Chú thích bioRxiv}} | bản in bioRxiv |
| {{Chú thích sách}} | sách và chương sách |
| {{Chú thích CiteSeerX}} | văn bản giấy CiteSeerX |
| {{Chú thích hội thảo}} | văn bản hội thảo |
| {{Chú thích tài liệu}} | tài liệu ngắn, độc lập và ngoại tuyến |
| {{Chú thích bách khoa toàn thư}} | thông tin sưu tầm được biên tập |
| {{Chú thích phần chương trình}} | số phát thanh hoặc tập phim truyền hình |
| {{Chú thích phỏng vấn}} | phỏng vấn |
| {{Chú thích tập san học thuật}} | bài đăng học thuật |
| {{Chú thích tạp chí}} | tạp chí, ấn bản định kỳ |
| {{Chú thích danh sách thư}} | danh sách thư công khai |
| {{Chú thích bản đồ}} | bản đồ |
| {{Chú thích medRxiv}} | bản in medRxiv |
| {{Chú thích báo}} | bài đăng báo |
| {{Chú thích nhóm tin}} | nhóm tin trực tuyến |
| {{Chú thích podcast}} | podcast |
| {{Chú thích thông cáo báo chí}} | thông cáo báo chí |
| {{Chú thích báo cáo}} | bản báo cáo |
| {{Chú thích loạt chương trình}} | loạt phương tiện nghe nhìn |
| {{Chú thích bảng thông tin}} | biển báo, bảng hiệu |
| {{Chú thích diễn văn}} | bài phát biểu |
| {{Chú thích SSRN}} | văn bản giấy SSRN |
| {{Chú thích báo cáo kỹ thuật}} | báo cáo kỹ thuật |
| {{Chú thích luận văn}} | luận văn |
| {{Chú thích web}} | nguồn web không thuộc thể loại trên |
| Xem thêm | Bản mẫu nguồn cụ thể |
Cách sử dụng Mô đun:Cite
Mô đun này có thể được sử dụng để thay thế bất kỳ bản mẫu CS1/CS2 nào trong các bài viết đang tiến gần đến giới hạn kích thước nhúng sau khi mở rộng. Việc sử dụng như vậy chỉ nên thực hiện để ngăn bài viết vượt quá giới hạn PEIS. Nếu cần thiết, mô đun này có thể được sử dụng trong các bản mẫu bọc ngoài một bản mẫu CS1/CS2.
Ví dụ
Mô đun này không yêu cầu tham số cấu hình nhưng yêu cầu tên chính danh (canonical name) của một bản mẫu CS1 mà không có tiền tố cite (hoặc chú thích): cite book → book, cite web → web. Để thay thế các bản mẫu {{citation}}, hãy sử dụng citation.
Cấu trúc gọi mô đun như sau:
{{#invoke:Cite |<tên bản mẫu>|<các tham số cs1>}}
Trong đó:
#invoke:Cite– gọi đến mô đun này: Mô đun:Cite.|<tên bản mẫu>– là tên chính danh của bản mẫu (tiếng Anh) mà không có tiền tốcite; đây là lệnh gọi hàm#invoke:; không phân biệt hoa thường (ví dụ:news,web,book,journal).|<các tham số cs1>– là tất cả các tham số được yêu cầu bởi{{cite <tên bản mẫu>}}(ví dụ:|title=... |url=...).
Để chuyển đổi từ {{Chú thích sách}} (tương đương ):{{Chú thích sách}}: Chú thích trống (trợ giúp)
{{cite book |author=EB Green |date=1915 |title=Title |publisher=PseudoRandom}}- EB Green (1915). Title. PseudoRandom.
Viết thành:
{{#invoke:cite |book |author=EB Green |date=1915 |title=Title |publisher=PseudoRandom}}- EB Green (1915). Title. PseudoRandom.
Lưu ý kỹ thuật tại Wikipedia tiếng Việt
Tại Wikipedia tiếng Việt, mô đun này hoạt động như một cầu nối (wrapper). Nó giả lập một khung (frame) để gọi đến mô đun lõi Mô đun:Citation/CS1. Điều này cho phép bạn sao chép mã nguồn từ Wikipedia tiếng Anh (thường dùng #invoke:cite) và dán trực tiếp vào bài viết tiếng Việt mà không bị lỗi.
require ('strict');local cfg = mw.loadData ('Mô đun:Cite/config');local function substitute (message, data_t) return data_t and mw.message.newRawMessage (message, data_t):plain() or message;endlocal function make_error_msg (frame, msg) local module_name = frame:getTitle(); local namespace = mw.title.getCurrentTitle().namespace; local category_link = (0 == namespace) and substitute ('[[Thể loại:$1]]', {cfg.settings_t.err_category}) or ''; return substitute ('<span style="color:#d33">Lỗi: {{[[$1|#invoke:$2]]}}: $3 ([[:$4|$5]])</span>$6', { module_name, module_name:gsub ('Mô đun:', ''), msg, cfg.settings_t.help_text_link, cfg.settings_t.help, category_link })endlocal function cite (frame, template) template = template:lower(); -- Kiểm tra tên bản mẫu if not cfg.known_templates_t[template] then return make_error_msg (frame, substitute (cfg.settings_t.unknown_name, {template})); end -- Lấy tên Class của CS1 local citation_class = cfg.citation_classes_t[template] or template; -- 1. Chuẩn bị dữ liệu args local config_args = { CitationClass = citation_class } local data_args = {} for k, v in pairs(frame.args) do if k ~= 1 then -- Bỏ tham số đầu tiên là tên lệnh (vd: 'news', 'web') data_args[k] = v end end -- 2. Tạo KHUNG GIẢ (Fake Frame) với các hàm được map thủ công -- Điều này tránh lỗi "invalid frame object" khi gọi hàm gốc local fake_frame = {} -- Giả lập args của #invoke (chứa cấu hình) fake_frame.args = config_args -- Giả lập args của template mẹ (chứa dữ liệu bài viết) fake_frame.getParent = function() return { args = data_args } end -- Wrapper cho getTitle: Gọi frame gốc nhưng dùng đúng ngữ cảnh fake_frame.getTitle = function() return frame:getTitle() end -- Wrapper cho các hàm xử lý khác (chuyển tiếp về frame gốc) fake_frame.preprocess = function(_, text) return frame:preprocess(text) end fake_frame.extensionTag = function(_, name, content, args) return frame:extensionTag(name, content, args) end fake_frame.callParserFunction = function(_, name, args) return frame:callParserFunction(name, args) end -- 3. Gọi Mô đun gốc với khung giả return require ('Mô đun:Citation/CS1').citation(fake_frame);endreturn setmetatable({}, {__index = function(_, template) return function (frame) return cite (frame, template) end; end})