非互換対応再び

閲覧数: 1(1)

サイトのお守りというのは、言い換えれば「それらを構成するソフトウェア群とそれらが稼働するハードウェア環境の相互関係上の非互換」をいかに回避するか、に尽きると言える。ハードウェアはソフトウェアの命令で動くが、命令の記述が許容されない場合にはエラーを返す、ソフトウェアはソフトウェアにも命令する、それらが一体となって人間が目にする機能が実現されている、やっている側からすれば奇跡に近いが、使う側は知ってか知らずか、常に完璧を求めがちになる。

ウキペディアの元になっているMediawikiのバージョンが1.36へメジャーアップしました。2020年9月のメジャーアップから約8ヶ月、前々回からは少し長かった感じ。今回は、1.35までと言われていた非互換機能が予告通りバッサリ切られたので、多少の改修が必要となりました。

一番影響を受けたのが「HitCounters」という拡張機能で、これは元々はMediawiki本体に含まれていて、各ページがどのぐらい閲覧されたのかをカウントしていたものが、バージョン1.25から本体では削除されてしまい、その時に同じ機能を復元するために登場した拡張機能です。ページの左下に閲覧数を表示するものですが、その際に利用していた「SkinTemplateOutputPageBeforeExec」が削除されてしまったため、対応バージョン (0.3.2.3)が用意されたのですが、1.36対応ではさらに改修が必要でした。

オリジナルのソースを見てみると、コンテンツの言語を取得する部分($wgContLang)が「Fatal Error」を起こしているようです。1.36では「$this->getContentLanguage()」とする必要があるようです。

        $link = Linker::linkKnown(
            $title,
            $wgContLang->convert( htmlspecialchars( $title->getPrefixedText() ) )
        );

正しい取得方法へ変更します。「$wgContLangから$this->getContentLanguage()へ」

        $link = Linker::linkKnown(
            $title,
            $this->getContentLanguage()->convert( htmlspecialchars( $title->getPrefixedText() ) )
        );

この変更を行なった「HitCounters」を使えば、Mediawiki 1.36で閲覧数を左下に表示することが可能です。ややこしいのは正式な1.36対応版は「閲覧数表示」には非対応で、「閲覧数表示対応版 (0.3.2.3)」を1.36対応へ改修したということです。もちろん自己責任となります。同じく「SkinTemplateOutputPageBeforeExec」関連で言えば、フッターに「お問い合わせ」を(Googleの規約で)表示していますが、これも変更が必要でした。

$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function( &$skin, &$tpl ) {
    $contactusLink = Html::rawelement( 'a', [ 'href' => 'mailto:webmaster@setakinoko.es' ], 'お問い合せ' );
    $tpl->set( 'contact', $contactusLink );
    $tpl->data['footerlinks']['places'][] = 'contact';
    return true;
};

なんとなく似てるけど、ちょっと書き方が変わっていて少し悩んだ(笑)

$wgHooks['SkinAddFooterLinks'][] = function( &$skin, &$key, &$footerlinks ) {
    if ( $key === 'places' ) {
        $footerlinks['contact'] = Html::rawelement( 'a', [ 'href' => 'mailto:webmaster@setakinoko.es' ], 'お問い合せ' );
        return true;
    }
};

頻繁な変更が面倒なら、長期サポート版を使う手もあるけれど、長い間今回のようなメンテナンス(非互換対応)をしないでいると、目利きが鈍るというか、技量を保つことが出来なくなる恐れもあり、この程度の頻度なら、その時は多少面倒だなと思っても、非互換対応を続ける方が得策かなぁなんて思いながらコンソールに向かっておりました。

カテゴリーIT閑話, 公開タグ, ,
Zabbix 5.0を導入する

もうね、完全にネタ切れw、ITネタで突っ走るしかない。今回は久しぶりのZABBIXネタと、それが稼働  続きを読む

緊急事態宣言で外出自粛になり...
blank

せっかくのゴールデンウィークなのに、2年連続で緊急事態宣言下となり、外出自粛中。暇なので小ネタで遊ぶ  続きを読む

閃きは大事だw
blank

このサイトは、あくまでもCMSであるWordPressの構築やクラウドであるAWSの運用ノウハウ取得  続きを読む

タイトルを抜粋する
blank

関連記事プラグインを使って、記事本文の下に「関連記事」を表示している。情報としては、タイトル、画像、  続きを読む

ページナビのテキスト
blank

記事ページの下部に前後の記事(投稿)へのリンクが表示される仕様なのだが、「カテゴリーに制限」をかけて  続きを読む

ElasticPress 3.5.6
blank

マイナーバージョンアップにも関わらず、検索スコアリングのパラメータが微調整された結果、期待する検索結  続きを読む

スポンサーリンク

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください