首頁  >  問答  >  主體

根據頁面的最後修訂日期,對MediaWiki內部連結進行樣式設定。

我有一個龐大的維基百科,有很多頁面,其中許多已經過時。我想根據連結頁面的年齡為每個連結應用自訂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粉184747536P粉184747536479 天前436

全部回覆(1)我來回復

  • P粉448130258

    P粉4481302582023-07-21 09:03:48

    你可以使用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;

    回覆
    0
  • 取消回覆