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

帮助:解析函数/pageid

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

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

PAGEID

获取页面ID。MediaWiki原生支持。

页面ID是一个数字,是页面的唯一标识符。

语法

  • {{PAGEID}}
    • 获取当前页面ID
  • {{PAGEID:页面名称}}
    • 获取指定页面ID

示例

  • {{PAGEID}} → 3318
  • {{PAGEID:首页}} → 1
  • {{PAGEID:帮助:解析函数}} → 2216
  • {{PAGEID:特殊:最近更改}} → 0
  • 构造页面链接 https://wiki.biligame.com/tools/?curid={{PAGEID}}https://wiki.biligame.com/tools/?curid=3318
    • 注意,BWiki针对此类URL的缓存约半小时

底层代码

来自MediaWiki及其扩展的源代码,运行在服务端。此处仅供快速查阅,便于更充分的挖掘其"特性"。

/** mediawiki-1.37.0\includes\parser\CoreParserFunctions.php
 * Get the pageid of a specified page
 * @param Parser $parser
 * @param string|null $title Title to get the pageid from
 * @return int|null|string
 * @since 1.23
 */
public static function pageid( $parser, $title = null ) {
	$t = Title::newFromText( $title );
	if ( !$t ) {
		return '';
	} elseif ( !$t->canExist() || $t->isExternal() ) {
		return 0; // e.g. special page or interwiki link
	}

	$parserOutput = $parser->getOutput();

	if ( $t->equals( $parser->getTitle() ) ) {
		// Revision is for the same title that is currently being parsed.
		// Use the title from Parser in case a new page ID was injected into it.
		$parserOutput->setFlag( 'vary-page-id' );
		$id = $parser->getTitle()->getArticleID();
		if ( $id ) {
			$parserOutput->setSpeculativePageIdUsed( $id );
		}

		return $id;
	}

	// Check the link cache for the title
	$linkCache = MediaWikiServices::getInstance()->getLinkCache();
	$pdbk = $t->getPrefixedDBkey();
	$id = $linkCache->getGoodLinkID( $pdbk );
	if ( $id != 0 || $linkCache->isBadLink( $pdbk ) ) {
		$parserOutput->addLink( $t, $id );

		return $id;
	}

	// We need to load it from the DB, so mark expensive
	if ( $parser->incrementExpensiveFunctionCount() ) {
		$id = $t->getArticleID();
		$parserOutput->addLink( $t, $id );

		return $id;
	}

	return null;
}
代码逻辑:
  • 对于特殊页面和跨wiki链接,返回0
  • 对于当前页面直接返回所在页面ID
  • 获取指定页面ID,先查找缓存,再查数据库。

实际用例

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

恋与深空 - lysk

第五人格 - dwrg

深空之眼 - dhmmr