カテゴリー
コンピュータ

MediaWikiにAdSenseを追加し広告を表示する

動的に広告を挿入する方法と、PHP、テンプレートファイルを編集して広告を挿入する方法を説明します。

このコードは、メイン名前空間で表示、ページ名がメインページとなっている場合は広告が表示されないようにAdSenseスクリプトを追加します。

data-ad-clientdata-ad-slot の値を自分のAdSenseアカウントのものに書き換えてください。

動的に広告を挿入する

MediaWiki:Common.js ページに以下のスクリプトを追加します

injectAdSenseでinsコードを動的に生成しています

/**
 * AdSenseコードを動的に追加する 指定要素の直下に挿入する
 * @param {string} adClient - パブリッシャーID (例: ca-pub-1234567890123456)
 * @param {string} adSlot - 広告ユニットID (例: 1234567890)
 * @param {string} targetId - 広告を挿入する要素のID
 */
function injectAdSense(adClient, adSlot, targetId) {
    let adContainer = document.createElement('ins');
    adContainer.className = 'adsbygoogle';
    adContainer.style.display = 'block';
    adContainer.style.textAlign = 'center';

    adContainer.setAttribute('data-ad-client', adClient);
    adContainer.setAttribute('data-ad-slot', adSlot);
    adContainer.setAttribute('data-ad-format', 'auto');

    let targetElement = document.getElementById(targetId);
    if (targetElement) {
        if (targetElement.firstElementChild) {
            targetElement.insertBefore(adContainer, targetElement.firstElementChild);
        } else {
            targetElement.appendChild(adContainer);
        }
        if (window.adsbygoogle) {
            (adsbygoogle = window.adsbygoogle || []).push({});
        }
    } else {
        console.error('Target element not found: ' + targetId);
    }
}

// AdSenseスクリプトをロードして広告を挿入
mw.loader.getScript('//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js')
.done(function() {
    // AdSenseスクリプトのロード完了
    // ここで挿入したい広告の情報を指定
    const pageName = mw.config.get('wgPageName');
    const namespaceNumber = mw.config.get('wgNamespaceNumber');
    if (namespaceNumber === 0) {
        if (!['メインページ'].includes(pageName)) {
            injectAdSense('ca-pub-1234567890123456', '1234567890', 'bodyContent');
        }
    }
    
})
.fail(function() {
    // AdSenseスクリプトのロード失敗
    console.error('Failed to load AdSense script');
});

Manual:Interface/JavaScript – MediaWiki
レスポンシブ広告コードを修正する方法 – Google AdSense ヘルプ

PHP(MediaWiki)で広告を挿入する

 LocalSettings.php ファイルに以下のコードを追加します。

$wgHooks['BeforePageDisplay'][] = function ( &$out,&$skin  ) {
    $title = $out->getTitle();
    if ( $title->getNamespace() ===  NS_MAIN ) {
        //メインの名前空間である
        if (!in_array($title->getPrefixedText(),["メインページ"])) {
            //メインページ以外の場合
            //Adsenseを追加
            $out->addHeadItem( 'adsbygoogle', '<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>');
        }
    }
};

Manual:Hooks/BeforePageDisplay – MediaWiki

skinのテンプレートを直接書き換えます

Vectorスキンに広告を表示させる場合
skins/Vector/includes/templates/skin.mustache
のメインのテンプレートを開き<div id="bodyContent"直下に広告が入るように使用する広告コードを貼り付けます。 貼り付ける際に既存のコードを消さないように注意してください。

{{>ColumnEnd}}
				<div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container>
					<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-1234567890123456"
     data-ad-slot="1234567890"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
{{>BeforeContent}}

表示例

どちらのコードも #bodyContentの直下投稿タイトルの下記事の上に広告が表示されます。

MediaWiki Adsens
MediaWiki Adsens

コメントを残す