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

帮助:解析函数/revisionid

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

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

REVISIONID

获取指定页面的最新修订版本ID。修订ID是MediaWiki为每次编辑分配的唯一数字标识,数值越大代表编辑时间越新。MediaWiki原生支持。

注意,由于wikitext有缓存,本函数的结果会被缓存(暂时保存)。即使其他页面更新(最新修订ID变化),其缓存结果也不会自动刷新。


语法

  • {{REVISIONID}} - 当前页面的修订ID
  • {{REVISIONID:页面名称}} - 指定页面的修订ID(高开销

示例

  • {{REVISIONID}}52085
  • {{REVISIONID:首页}}52495
  • {{REVISIONID:不存在的页面}}

底层代码

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

/** mediawiki-1.37.0\includes\parser\CoreParserFunctions.php
 * Get the id from the last revision of a specified page.
 * @param Parser $parser
 * @param string|null $title Title to get the id from
 * @return int|null|string
 * @since 1.23
 */
public static function revisionid( $parser, $title = null ) {
	$t = Title::newFromText( $title );
	if ( $t === null ) {
		return '';
	}

	$services = MediaWikiServices::getInstance();
	if (
		$t->equals( $parser->getTitle() ) &&
		$services->getMainConfig()->get( 'MiserMode' ) &&
		!$parser->getOptions()->getInterfaceMessage() &&
		// @TODO: disallow this word on all namespaces (T235957)
		$services->getNamespaceInfo()->isSubject( $t->getNamespace() )
	) {
		// Use a stub result instead of the actual revision ID in order to avoid
		// double parses on page save but still allow preview detection (T137900)
		if ( $parser->getRevisionId() || $parser->getOptions()->getSpeculativeRevId() ) {
			return '-';
		} else {
			$parser->getOutput()->setFlag( 'vary-revision-exists' );
			return '';
		}
	}
	// fetch revision from cache/database and return the value
	$rev = self::getCachedRevisionObject( $parser, $t, 'vary-revision-id' );
	return $rev ? $rev->getId() : '';
}

实际用例

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