動的に広告を挿入する方法と、PHP、テンプレートファイルを編集して広告を挿入する方法を説明します。
このコードは、メイン名前空間で表示、ページ名がメインページとなっている場合は広告が表示されないようにAdSenseスクリプトを追加します。
data-ad-client
と data-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
の直下投稿タイトルの下記事の上に広告が表示されます。