Moodleに広告(GoogleAdsense)用プラグイン(ブロック)をインストールする

Pocket

Moodleに広告(Google Adsense)を入れたかったので、プラグイン(ブロック)をインストールしてみました。
ブロックというのはプラグインの種類で、広告をブロックするという意味ではありません。
手さぐりで色々やって、命名規則や何やらでひっかかりましたが、インストールは無事に成功しました

とはいえ、最終的に広告表示のところまで辿り着きましたが、出力される広告タグにslotが設定できなかったり、広告タグはこっちで作ってはいけないという規約もある様子。

後日、自分でプラグイン作ろうと思います。。。。とりあえず今回、ZIPファイルのプラグインをインストールする方法が分かったので、備忘として以下に残します。インストール手順は以下です。

まずはMoodle本体(PHPファイル等)を編集して対応するのは大変なので、誰かが作ったプラグイン/独自ブロックを探してみます。

以下が目的の機能を持っているような感じです。
Google Adsense block
→Google Adsenseブロック作成・表示用のプラグイン

対応Moodleバージョン(プラグインバージョン)
・Moodle 2.4(バージョン1.0beta2)
・Moodle 2.0, 2.1(バージョン1.0beta1/バージョン1)

リンク先に行き、「Source control URL」リンクを選択。

e_01_plugin_google_1

GitHubに遷移するので、右側の「Download ZIP」ボタンを押下。

e_02_plugin_google_1

ダウンロードしたファイルは「moodle-block_google_adsense-master.zip」で、なんかバージョンが1.0beta3っぽいです。とりあえず「README.TXT」に書いてある内容はざっくり以下。
・/blocksディレクトリに/google_adsenseディレクトリを入れる
・管理者でログインし、自動インストールとデータベースの変更を待ちます
・ブラウザに広告ブロックをインストールしていないか確認してください
・このバージョンはMoodle2.4で動作するように特別に設計されました
・テキスト広告を中心に設計しており、グラフィカルな広告でうまくいかない?

Moodleにプラグイン(ブロック含む)をインストールする場合、自分でファイルを直接サーバーに配置する事もできる(と思う)のですが、今回失敗しました。成功したのは、Moodleのブラウザ画面からのZIPを使ったインストールです。備忘として記事には対応手順を載せていますので、お急ぎの方はブラウザからインストールした辺りまで読み飛ばして下さい。

—-(ここから読み飛ばして良い)———-
ダウンロードしたファイルを展開し、Moodleのサーバーに転送します。とりあえずは適当なユーザーのホームディレクトリに配置しました。SSHでログインし、コマンドでコピー等行います。

まずは転送したファイルをコピー。

sudo mv ~/moodle-block_google_adsense-master /var/www/html/moodle/blocks/

※解答した際に「moodle-block_google_adsense-master/moodle-block_google_adsense-master/…」のように二重にファイル名のディレクトリになっている場合、直下にREADME.TXTがある形でディレクトリをコピーする

所有ユーザ変更。

cd /var/www/html/moodle/blocks
sudo chown -R root moodle-block_google_adsense-master

moodle直下のディレクトリが全て、とあるGIDの所有グループになっていたので、一応所有グループも変更。

sudo chgrp -R GID(グループID) moodle-block_google_adsense-master

Moodleサイトに管理者でログインし、設定->サイト管理->通知にアクセスしましたが、アドオンがインストールされましたというメッセージが表示されず。設定->サイト管理->プラグイン->ブロック->ブロック管理に表示される一覧にもAdSenseっぽいのが見つかりません。

Moodle Docsのプラグインのインストールで調べてみると、問題があるときの対応は以下。
(1)パーミッションの確認。ウェブサーバがプラグインファイルを読み込むことができるようにする必要があります。
(2)正しい場所に解凍またはインストールしたか。
(3)ディレクトリ名が正しいか。新しいプラグインのアーカイブファイルを置いたままだったり、フォルダ名を変更していないか。
(4)デバッグを有効にし、エラーメッセージを確認。
(5)フォーラムでの質問。

まず「(1)パーミッションの確認」から。
とりあえず他のmoodle/blocks内のブロックと比較してみると、トップディレクトリは問題なさそうですが、中身を見るとPHPファイルの実行権限がありません。

実行権限付与。(数は多くないのでディレクトリごとでPHPファイルを指定)

cd /var/www/html/moodle/blocks/moodle-block_google_adsense-master
sudo chmod a+x *.php
cd lang/en
sudo chmod a+x *.php
cd ../it
sudo chmod a+x *.php
cd ../../db
sudo chmod a+x *.php

再度Moodleに管理者でログインし、設定->サイト管理->通知にアクセスしましたが、どうもインストールされていない様子。「(2)配置場所が正しいか」と「(3)ディレクトリ名が正しいか」は問題ないものとして、「(4)デバッグを有効にしてエラーメッセージを確認」を行っています。

Moodleに管理者ログインした状態で管理->サイト管理->開発->デバッグを選択。
・デバッグメッセージ:ALL:すべての妥当なPHPデバッグメッセージを表示する
・メッセージを表示する:チェックを入れる
上記を設定し、「変更を保存する」ボタン押下。
再度、設定->サイト管理->通知にアクセスしましたが、特にエラーは出ません。。。

とりあえず配置したディレクトリ配下全ファイルを退避し、ブラウザからZIPファイルを使ってインストールしてみることにします。

sudo mv /var/www/html/moodle/blocks/moodle-block_google_adsense-master ~/

—-(ここからブラウザ上で対応)———-
Moodleサイトの管理->サイト管理->プラグイン->プラグインをインストールするから、ZIPファイル「moodle-block_google_adsense-master.zip」をアップロードし、「ZIPファイルからプラグインをインストールする」ボタン押下。

「無効なプラグイン名です。」と表示され、インストールできません。ヒントのボタン(?マーク)を押下すると、「ZIPパッケージのルートディレクトリ名が形式的構文の要件に違反しています。(中略)。プラグイン名に合致するようルートディレクトリ名をリネームする必要があります」と出ます。

他のプラグイン(ブロック)はどういった名前なのか確認してみます。Moodleで管理->サイト管理->プラグイン->プラグイン概要を選択。一覧を辿っていくとブロックの項に表示された名前は全て「block_○○」となっています。

とりあえずZIPファイル名を「block_google_adsense-master.zip」にリネームして再度、サイト上からアップロード。同じく「無効なプラグイン名です。」と表示されます。

ZIPを解凍し、中身のフォルダ名を「block_google_adsense-master」として自分で圧縮したものをアップロードしてみましたが、結果は同じ。

あとはハイフンがダメなのかなと思い、「block_google_adsense_master」としてZIPファイルを作成してアップロード。

エラーメッセージが変わり、「プラグイン宣言名は「 google_adsense 」ですが、ルートディレクトリ名と合致しません。」と表示されます。

「block_google_adsense_master/各種ファイル」としてZIPファイルに圧縮していたので、「block_google_adsense_master/block_google_adsense_master/各種ファイル」の構成にして再度ZIPファイルを作成。

アップロードすると、今度は「プラグインタイプを検出できませんでした。プラグインタイプを手動で選択して下さい。」と表示されたので、プラグインタイプを「ブロック(block)」とします。

「プラグインタイプロケーション「/var/www/html/moodle/blocks」が書き込み可能ではありません。」と表示されたので、一時的に権限を変更。

sudo chmod 777 /var/www/html/moodle/blocks

今度は「ファイル「version.php」がありません。」と表示されます。これは恐らくファイル構成が違うと推察されます。

もしかすると圧縮ファイル名称は「block_google_adsense_master.ZIP」として、圧縮するファイルの構成は「google_adsense_master/各種ファイル」としないといけないのでは。。。

解凍したプラグインのルートのディレクトリ名を「google_adsense_master」として直下に各種ファイル(version.php等)がある状態にします。その状態で圧縮して作成したファイル「google_adsense_master.zip」をリネームして「block_google_adsense_master.zip」とします。アップロード。

「プラグイン宣言名は「 google_adsense 」ですが、ルートディレクトリ名と合致しません。」と表示されたので、どうやら圧縮前のフォルダ名が違う様子。

ルートのディレクトリ名を「google_adsense」として直下に各種ファイル(version.php等)がある状態にします。その状態で圧縮して作成したファイル「google_adsense.zip」をリネームして「block_google_adsense.zip」とします。アップロード。

インストールできた!

次の画面で「Moodleデータベースを更新する」ボタン押下。

「成功」と表示されたら「続ける」ボタン押下。

再度、「ZIPファイルからプラグインをインストールする」ボタン押下。

デフォルトのAdsense Publisher ID入力が要求されるので、自分のGoogle Adsense publisher IDを入力し、「変更を保存」ボタン押下。

一応、Moodleから管理->サイト管理->プラグイン->ブロック->ブロック管理を見て、一覧に「Google Adsense block」が存在する事を確認しておきましょう。

後始末として、デバッグの設定を元に戻します。
Moodleから管理->サイト管理->開発->デバッグを開き、以下を設定して「変更を保存する」ボタン押下。
・デバッグメッセージ:NONE:デバッグ情報を表示しない
・デバックメッセージを表示する:チェックを外す

変更したblocksディレクトリのパーミッションを元に戻す。

chmod 755

【結論】
・プラグインをMoodle(ブラウザ)からインストールする場合、プラグインの種類に応じた名前のZIPファイルにする
・ZIPファイル解凍後にできあがるフォルダ名は先に設定したプラグインの種類部分を削った名前になる必要がある

思ったより結構手間がかかりましたが、以降は色々トラブルに対応できそうです。

最後に、このプラグイン(ブロック)を使う際に注意点があります。
・設定の画面がおかしい
このブロックの設定は以下の2つで行えます。
(1)Moodleの管理->サイト管理->プラグイン->ブロック->Google Adsense blockを選択し、Publisher IDを入力する。
(2)ブロックとして実際に「AdSense Google」を設置し、「広告ブロックを設定する」から必要な値を入力する。

問題は恐らく(2)にあって、以下のようにformatの箇所に不自然な空欄があるのですが、プログラムを見ると「Publisher ID」扱いになっており、その他で設定したPublisher IDが上書きされていると思われます。
e_03_plugin_google_1

とりあえず上記の画面ではformatの右側にある空欄に「Publisher ID」を設定しましょう。

ちなみに実際に表示される広告用のタグは以下の内容です。

<script type="text/javascript"><!--
google_ad_client="設定画面の[Publisher ID(formatの直前の空欄)]値";
google_ad_width=設定画面の[width]値;
google_ad_height=設定画面の[height]値;
google_ad_format="設定画面の[format]値";
google_ad_type="設定画面の[type]値";
google_ad_channel="設定画面の[channel]値";
google_color_border = "設定画面の[border color]値";
google_color_bg="設定画面の[bg color]値";
google_color_link="設定画面の[link color]値";
google_color_text="設定画面の値";
google_color_url="設定画面の[url color]値";
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

もし表示されない場合は、上記のとおり出力されることを前提に設定値を考えればよいと思います。

広告

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です