Maison > Questions et réponses > le corps du texte
J'ai un énorme Wikipédia avec beaucoup de pages, dont beaucoup sont obsolètes. Je souhaite appliquer des styles CSS personnalisés à chaque lien en fonction de l'âge de la page liée.
J'ai étudié le code source de MediaWiki et pour chaque lien, je peux obtenir la DBKey à partir du LinkTarget. Le code source peut être consulté ici.
Je recherche un processus qui ressemble essentiellement à ceci :
$dbKey = $target->getDBkey(); $page = find_page_by_title($dbKey); $last_revision = get_last_revision($page); // Additional processing based on the date of $last_revision
Alternativement, s'il existe un moyen d'obtenir ces informations à partir de l'API, je pourrais ajouter un extrait JS pour recolorer le lien.
Quelqu'un peut-il m'indiquer des ressources pour y parvenir ?
P粉4481302582023-07-21 09:03:48
Vous pouvez utiliser le hook HtmlPageLinkRendererEnd.
https://www.mediawiki.org/wiki/Manual:Hooks/HtmlPageLinkRendererEnd
Ajoutez simplement ce qui suit à votre fichier 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"; } };
Changez simplement « 20230704142055 » par la date souhaitée ou actuelle.
Vous devrez peut-être également ajouter ce code en haut de votre fichier php.
use MediaWiki\MediaWikiServices; use Title;