Gestalten Sie interne MediaWiki-Links basierend auf dem letzten Überarbeitungsdatum der Seite.
P粉184747536
P粉184747536 2023-07-20 10:47:09
0
1
455

Ich habe eine riesige Wikipedia mit vielen Seiten, viele davon veraltet. Ich möchte auf jeden Link benutzerdefinierte CSS-Stile anwenden, basierend auf dem Alter der verlinkten Seite.

Ich habe mir den Quellcode von MediaWiki angesehen und für jeden Link kann ich den DBKey ausgehend vom LinkTarget erhalten. Der Quellcode kann hier eingesehen werden.

Ich suche einen Prozess, der im Grunde so aussieht:

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

Wenn es alternativ eine Möglichkeit gibt, diese Informationen von der API abzurufen, könnte ich ein JS-Snippet hinzufügen, um den Link neu einzufärben.

Kann mir jemand Ressourcen nennen, um dies zu erreichen?

P粉184747536
P粉184747536

Antworte allen(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;
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage