Tools 是非官方社区Wiki。社区文档正在编写中,欢迎参与。 Wiki编辑答疑群:717421103
版本250722.2
全站通知:

帮助:解析函数/filepath

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

filepath是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。

filepath

返回文件的URL路径。MediaWiki原生支持。

常用于获取图片的完整URL,支持指定大小。

相比于利用重定向页面(特殊:重定向/file),filepath可以一次解析多次使用。大量图片重定向时,很容易触发BWiki访问频率限制(资源加载请求失败,HTTP状态码514)

语法

{{filepath:文件名|[选项]|[大小]}}

  • 文件名:文件名称,无需包含命名空间
  • 选项(可选):指定 nowiki,以纯文本非链接显示
  • 大小(可选):指定图片尺寸,如 300 、 200x300px

示例

获取图片文件URL

{{filepath: Toolswikilogo.png }}https://patchwiki.biligame.com/images/tools/4/41/fr3pnybxu6c0xtdypvwbfc5z1i1gcgy.png
{{filepath: Toolswikilogo.png | 60 }}https://patchwiki.biligame.com/images/tools/thumb/4/41/fr3pnybxu6c0xtdypvwbfc5z1i1gcgy.png/60px-Toolswikilogo.png


配合CSS用作背景图:

<div class="demo-wiki-logo-type-a"></div>
{{#tag:bstyle|/*{{#tag:pre|*/
.demo-wiki-logo-type-a{
width:120px;
height:25px;
color:red;
background:url('{{filepath:Toolswikilogo.png | 120}}');
}
/*}}*/}}

(其中bstyle标签用于向页面插入CSS,pre标签用于避免css传入bstyle时被当做wikitext解析。)


在页面中显示URL,但不带链接

{{filepath: Toolswikilogo.png | nowiki | 60 }}https://patchwiki.biligame.com/images/tools/thumb/4/41/fr3pnybxu6c0xtdypvwbfc5z1i1gcgy.png/60px-Toolswikilogo.png
{{filepath: Toolswikilogo.png | nowiki }}https://patchwiki.biligame.com/images/tools/4/41/fr3pnybxu6c0xtdypvwbfc5z1i1gcgy.png

底层代码

/** mediawiki-1.37.0\includes\parser\CoreParserFunctions.php
 * Usage {{filepath|300}}, {{filepath|nowiki}}, {{filepath|nowiki|300}}
 * or {{filepath|300|nowiki}} or {{filepath|300px}}, {{filepath|200x300px}},
 * {{filepath|nowiki|200x300px}}, {{filepath|200x300px|nowiki}}.
 *
 * @param Parser $parser
 * @param string $name
 * @param string $argA
 * @param string $argB
 * @return array|string
 */
public static function filepath( $parser, $name = '', $argA = '', $argB = '' ) {
	$file = MediaWikiServices::getInstance()->getRepoGroup()->findFile( $name );

	if ( $argA == 'nowiki' ) {
		// {{filepath: | option [| size] }}
		$isNowiki = true;
		$parsedWidthParam = Parser::parseWidthParam( $argB );
	} else {
		// {{filepath: [| size [|option]] }}
		$parsedWidthParam = Parser::parseWidthParam( $argA );
		$isNowiki = ( $argB == 'nowiki' );
	}

	if ( $file ) {
		$url = $file->getFullUrl();

		// If a size is requested...
		if ( count( $parsedWidthParam ) ) {
			$mto = $file->transform( $parsedWidthParam );
			// ... and we can
			if ( $mto && !$mto->isError() ) {
				// ... change the URL to point to a thumbnail.
				$url = wfExpandUrl( $mto->getUrl(), PROTO_RELATIVE );
			}
		}
		if ( $isNowiki ) {
			return [ $url, 'nowiki' => true ];
		}
		return $url;
	} else {
		return '';
	}
}
代码逻辑:
  • 根据提供的文件名查找媒体文件。
  • 解析可选参数以确定是否生成缩略图以及是否移除链接。
  • 如果指定了缩略图大小且转换成功,返回缩略图的URL。
  • 如果使用了nowiki选项,仅返回URL而不包含链接。
  • 如果未找到文件,返回空字符串。

实际用例

一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考
碧蓝航线 - blhx

原神 - ys

战双帕弥什 - zspms

明日方舟 - arknights

恋与深空 - lysk

崩坏:星穹铁道 - sr

代号鸢 - yuan

赛马娘 - umamusume

第五人格 - dwrg

坎特伯雷公主与骑士唤醒冠军之剑的奇幻冒险 - gt