根据页面的最后修订日期,对MediaWiki内部链接进行样式设置。
P粉184747536
P粉184747536 2023-07-20 10:47:09
0
1
362

我有一个庞大的维基百科,有很多页面,其中许多已经过时。我想根据链接页面的年龄为每个链接应用自定义CSS样式。

我一直在研究MediaWiki的源代码,对于每个链接,我可以从LinkTarget开始获取DBKey。在这里可以查看源代码。

我正在寻找一个基本上是这样的过程:

$dbKey = $target->getDBkey(); $page = find_page_by_title($dbKey); $last_revision = get_last_revision($page); // Additional processing based on the date of $last_revision

或者,如果有一种方法可以从API中获取这些信息,我可以添加一个JS代码片段来重新着色链接。

有人可以指引我,查看的资源来完成这个吗?

P粉184747536
P粉184747536

全部回复 (1)
P粉448130258

你可以使用HtmlPageLinkRendererEnd钩子。

https://www.mediawiki.org/wiki/Manual:Hooks/HtmlPageLinkRendererEnd

只需将以下内容添加到您的LocalSettings.php文件中:

$wgHooks['HtmlPageLinkRendererEnd'][] = function($linkRenderer, $target, $isKnown, &$text, &$attribs, &$ret) { $title = Title::newFromLinkTarget($target); $id = $title->getLatestRevID(); $revStore = MediaWikiServices::getInstance()->getRevisionStore(); $date = $revStore->getTimestampFromId( $id ); if ($date > '20230704142055') { $attribs['class'] = "old-page"; } if ($date > '20230704142070') { $attribs['class'] = "newer-page"; } };

只需将'20230704142055'更改为您所需的或当前的日期即可。

您可能还需要将此代码添加到您的php文件的顶部。

use MediaWiki\MediaWikiServices; use Title;
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!