打开/关闭搜索
搜索
打开/关闭菜单
60
73
29
1.1K
武外梗百科
导航
首页
最近更改
随机页面
站务
其他
友链
特殊页面
打开/关闭外观设置菜单
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
讨论
贡献
创建账号
登录
编辑“︁
Module:PageSummary
”︁
武外梗百科 爱国好学自强图新的百科全书
查看
阅读
编辑源代码
查看历史
associated-pages
模块
讨论
更多操作
240d:c010:132:2::5f
(
留言
)
2026年2月18日 (三) 13:29的版本
(
差异
)
←上一版本
|
最后版本
(
差异
) |
下一版本→
(
差异
)
警告:您正在编辑该页面的旧版本。
如果您发布该更改,该版本后的所有更改都会丢失。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
local p = {} -- 精准清理函数:保留加粗和链接,去除表格、模板和正文图片 local function cleanContent(text) if not text then return "" end -- 1. 移除 HTML 注释、脚注、数学公式 text = mw.ustring.gsub(text, "<!%-%-.-%-%->", "") text = mw.ustring.gsub(text, "<ref[^>]*>.-</ref>", "") text = mw.ustring.gsub(text, "<ref[^>]-/>", "") -- 2. 移除表格 {| ... |} -- 处理嵌套表格:从内向外剥离 local prev repeat prev = text text = mw.ustring.gsub(text, "{|[^{}]*|}", "") until text == prev -- 3. 递归移除模板 {{ ... }} (保留正文文字,移除干扰块) local count = 0 repeat prev = text text = mw.ustring.gsub(text, "{{[^{}]-}}", "") count = count + 1 until text == prev or count > 10 -- 4. 【核心】去除正文中的图片/文件,但保留普通链接 -- 逻辑:匹配 [[...]],如果是文件则删掉,如果是链接则原样保留 text = mw.ustring.gsub(text, "%[%[([^%[%]]-)%]%]", function(inner) local low = mw.ustring.lower(inner) -- 识别文件、分类前缀 if low:match("^file:") or low:match("^image:") or low:match("^文件:") or low:match("^图像:") or low:match("^category:") or low:match("^分类:") then return "" -- 移除这些内容 end return "[[" .. inner .. "]]" -- 保留普通链接 end) -- 5. 清理多余的标题符号、换行和空格 text = mw.ustring.gsub(text, "\n==+.-==+", " ") -- 移除标题行 text = mw.ustring.gsub(text, "\n%s*[*#:]+", " ") -- 列表转为空格 text = mw.ustring.gsub(text, "\n+", " ") -- 换行转空格 text = mw.ustring.gsub(text, "%s+", " ") -- 压缩空格 return mw.text.trim(text) end function p.getSummaryAndImage(frame) local pageName = frame.args[1] or "" local title = mw.title.new(pageName) if not title or not title.exists then return "" end -- 读取前 1500 字,保证性能的同时覆盖首段 local rawContent = title:getContent() or "" local limitedContent = mw.ustring.sub(rawContent, 1, 1500) -- 1. 提取缩略图(在清理前先抓取第一张图名) local firstImage = mw.ustring.match(limitedContent, "%[%[%s*[Ff]ile%s*:([^|%]%s]+)") or mw.ustring.match(limitedContent, "%[%[%s*文件%s*:([^|%]%s]+)") or mw.ustring.match(limitedContent, "%[%[%s*[Ii]mage%s*:([^|%]%s]+)") -- 2. 执行清理(保留加粗和链接) local cleanText = cleanContent(limitedContent) -- 3. 截取摘要长度 local targetLen = 180 local summary = mw.ustring.sub(cleanText, 1, targetLen) -- 4. 补全因截断可能破坏的加粗或链接标签 if mw.ustring.len(cleanText) > targetLen then summary = summary .. "..." -- 简单的标签闭合检查(防止截断导致的页面错乱) local _, opens = mw.ustring.gsub(summary, "'''", "") if opens % 2 ~= 0 then summary = summary .. "'''" end end -- 5. 渲染(不加外框,仅保持文字环绕) local res = mw.html.create('div'):css({['display'] = 'flow-root'}) -- 渲染标题 res:tag('div') :css({['font-size'] = '1.2em', ['font-weight'] = 'bold', ['margin-bottom'] = '5px'}) :wikitext('[[' .. pageName .. ']]') -- 渲染图片(缩略图) if firstImage then res:wikitext('[[File:' .. firstImage .. '|120px|right|link=' .. pageName .. ']]') end -- 渲染带加粗和链接的正文 res:wikitext(summary) return tostring(res) end return p
摘要:
请注意,所有对武外梗百科的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
武外梗百科:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
预览使用本模板的页面
该页面使用的模板:
Module:PageSummary/doc
(
编辑
)
编辑“︁
Module:PageSummary
”︁
武外梗百科 爱国好学自强图新的百科全书