<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://wflswiki.zelda-110.link/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=240D%3AC010%3A77%3A8%3A0%3A0%3A0%3A9D</id>
	<title>武外梗百科 - 用户贡献 [zh]</title>
	<link rel="self" type="application/atom+xml" href="https://wflswiki.zelda-110.link/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=240D%3AC010%3A77%3A8%3A0%3A0%3A0%3A9D"/>
	<link rel="alternate" type="text/html" href="https://wflswiki.zelda-110.link/wiki/Special:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/240D:C010:77:8:0:0:0:9D"/>
	<updated>2026-07-30T23:57:19Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wflswiki.zelda-110.link/index.php?title=Module:PageSummary&amp;diff=1055</id>
		<title>Module:PageSummary</title>
		<link rel="alternate" type="text/html" href="https://wflswiki.zelda-110.link/index.php?title=Module:PageSummary&amp;diff=1055"/>
		<updated>2026-02-18T05:03:28Z</updated>

		<summary type="html">&lt;p&gt;240D:C010:77:8:0:0:0:9D：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- 实际的逻辑处理函数&lt;br /&gt;
function p.getSummaryAndImage(frame)&lt;br /&gt;
    -- 如果你是通过模板调用，使用 getParent().args；如果是直接调用，使用 args&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local pageTitle = args[1] or frame.args[1] or mw.title.getCurrentTitle().text&lt;br /&gt;
    &lt;br /&gt;
    local entityId = mw.wikibase.getEntityIdForTitle(pageTitle)&lt;br /&gt;
&lt;br /&gt;
    if not entityId then&lt;br /&gt;
        return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;未找到关联的 Wikibase 项目。&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 1. 获取描述&lt;br /&gt;
    local description = mw.wikibase.getDescription(entityId) or &amp;quot;暂无描述&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- 2. 获取图片 (P18)&lt;br /&gt;
    local image = &amp;quot;&amp;quot;&lt;br /&gt;
    local claims = mw.wikibase.getBestStatements(entityId, &#039;P18&#039;)&lt;br /&gt;
    if claims[1] and claims[1].mainsnak.datavalue then&lt;br /&gt;
        image = claims[1].mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 3. 构建简易 HTML&lt;br /&gt;
    local container = mw.html.create(&#039;div&#039;)&lt;br /&gt;
        :cssText(&#039;display: flex; gap: 10px; border: 1px solid #ccc; padding: 10px; border-radius: 4px;&#039;)&lt;br /&gt;
    &lt;br /&gt;
    if image ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        container:tag(&#039;div&#039;):wikitext(string.format(&#039;[[File:%s|80px]]&#039;, image))&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local text = container:tag(&#039;div&#039;)&lt;br /&gt;
    text:tag(&#039;b&#039;):wikitext(pageTitle):done()&lt;br /&gt;
    text:tag(&#039;p&#039;):css(&#039;margin&#039;, &#039;0&#039;):wikitext(description)&lt;br /&gt;
&lt;br /&gt;
    return tostring(container)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 关键：确保导出名称完全一致&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>240D:C010:77:8:0:0:0:9D</name></author>
	</entry>
	<entry>
		<id>https://wflswiki.zelda-110.link/index.php?title=Module:PageSummary&amp;diff=1041</id>
		<title>Module:PageSummary</title>
		<link rel="alternate" type="text/html" href="https://wflswiki.zelda-110.link/index.php?title=Module:PageSummary&amp;diff=1041"/>
		<updated>2026-02-17T16:13:10Z</updated>

		<summary type="html">&lt;p&gt;240D:C010:77:8:0:0:0:9D：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;function p.getSummaryAndImage(frame)&lt;br /&gt;
    local pageName = mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
    if pageName == &amp;quot;&amp;quot; then return &amp;quot;&amp;quot; end&lt;br /&gt;
    &lt;br /&gt;
    local title = mw.title.new(pageName)&lt;br /&gt;
    if not title or not title.exists then return &amp;quot;&amp;quot; end&lt;br /&gt;
    &lt;br /&gt;
    local content = title:getContent()&lt;br /&gt;
    if not content or content == &amp;quot;&amp;quot; then return &amp;quot;&amp;quot; end&lt;br /&gt;
    &lt;br /&gt;
    local rawExcerpt = mw.ustring.sub(content, 1, 600) or &amp;quot;&amp;quot;  -- 再加大范围&lt;br /&gt;
    &lt;br /&gt;
    -- 严格提取图片文件名（只取有效部分）&lt;br /&gt;
    local firstImage = nil&lt;br /&gt;
    for _, prefix in ipairs({&amp;quot;File:&amp;quot;, &amp;quot;文件:&amp;quot;, &amp;quot;Image:&amp;quot;, &amp;quot;图像:&amp;quot;}) do&lt;br /&gt;
        firstImage = mw.ustring.match(rawExcerpt, &amp;quot;%[%[&amp;quot; .. prefix .. &amp;quot;([^|%]]+)%f[|%]]&amp;quot;)&lt;br /&gt;
        if firstImage then break end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- 如果匹配失败，不 fallback 到页面名，保持 nil&lt;br /&gt;
    if firstImage then&lt;br /&gt;
        firstImage = mw.text.trim(firstImage)&lt;br /&gt;
        -- 清理非法字符（防止编码损坏）&lt;br /&gt;
        firstImage = mw.ustring.gsub(firstImage, &amp;quot;[%z%s﻿&amp;lt;&amp;gt;\&amp;quot;]+&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        -- 太短或空字符串视为无效&lt;br /&gt;
        if mw.ustring.len(firstImage) &amp;lt; 5 then&lt;br /&gt;
            firstImage = nil&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local step1     = stripImages(rawExcerpt) or &amp;quot;&amp;quot;&lt;br /&gt;
    local cleanText = cleanFinal(step1) or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local targetLen = 120&lt;br /&gt;
    local summary   = cleanText:sub(1, targetLen * 2) or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local ulen = mw.ustring.len(summary) or 0&lt;br /&gt;
    if ulen &amp;gt; targetLen then&lt;br /&gt;
        summary = mw.ustring.sub(summary, 1, targetLen) or &amp;quot;&amp;quot;&lt;br /&gt;
        &lt;br /&gt;
        local rev = summary:reverse()&lt;br /&gt;
        local lastBreak = rev:find(&amp;quot;[ %s%p，。！？；：,…]&amp;quot;) or 1&lt;br /&gt;
        if lastBreak &amp;gt; 1 and lastBreak &amp;lt; 20 then&lt;br /&gt;
            summary = mw.ustring.sub(summary, 1, #summary - lastBreak + 1) or &amp;quot;&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        summary = mw.text.trim(summary) .. &amp;quot;...&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    summary = mw.text.trim(summary)&lt;br /&gt;
    &lt;br /&gt;
    -- 构建 HTML&lt;br /&gt;
    local container = mw.html.create(&#039;div&#039;)&lt;br /&gt;
        :css(&#039;margin-bottom&#039;, &#039;25px&#039;)&lt;br /&gt;
        :css(&#039;display&#039;, &#039;flow-root&#039;)&lt;br /&gt;
    &lt;br /&gt;
    -- 标题&lt;br /&gt;
    container:tag(&#039;div&#039;)&lt;br /&gt;
        :css(&#039;font-size&#039;, &#039;1.3em&#039;)&lt;br /&gt;
        :css(&#039;font-weight&#039;, &#039;bold&#039;)&lt;br /&gt;
        :css(&#039;margin-bottom&#039;, &#039;6px&#039;)&lt;br /&gt;
        :css(&#039;border-bottom&#039;, &#039;1px solid #eee&#039;)&lt;br /&gt;
        :wikitext(&#039;[[&#039; .. pageName .. &#039;]]&#039;)&lt;br /&gt;
    &lt;br /&gt;
    local textDiv = container:tag(&#039;div&#039;)&lt;br /&gt;
        :css(&#039;line-height&#039;, &#039;1.6&#039;)&lt;br /&gt;
        :css(&#039;color&#039;, &#039;#222&#039;)&lt;br /&gt;
        :css(&#039;font-size&#039;, &#039;14px&#039;)&lt;br /&gt;
    &lt;br /&gt;
    -- 只有当 firstImage 是有效字符串时才添加图片（避免任何泄漏）&lt;br /&gt;
    if firstImage and firstImage ~= &amp;quot;&amp;quot; and mw.ustring.find(firstImage, &amp;quot;:&amp;quot;) then&lt;br /&gt;
        local imgWikitext = &#039;[[&#039; .. firstImage .. &#039;|120px|right|link=&#039; .. pageName .. &#039;]]&#039;&lt;br /&gt;
        textDiv:wikitext(imgWikitext)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    textDiv:wikitext(summary)&lt;br /&gt;
    &lt;br /&gt;
    return tostring(container)&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>240D:C010:77:8:0:0:0:9D</name></author>
	</entry>
</feed>