3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

XOOPS Themes and TemplatesAdvent Calendar 2012

Day 14

XOOPSのカスタムブロックを作ってみよう!!

Last updated at Posted at 2012-12-14

=====





さて、皆さん。 今日がなんの日か知ってますでしょうか? そう、マネーデーですね!

そういうわけでマネーデーらしくカスタムブロックを作ってみました。

どんなカスタムブロック?

マネーデー + Webサイトで思い付くものといったら、やっぱりAmazonギフトカードですよね。
貰ってうれしいAmazonギフトカード。しかも簡単に人にプレゼントできる。となったらこれで何か作るしかないですよね。
そんなわけで、サイト管理者にAmazonギフトカードをちょこっとだけ簡単に贈れるようになるカスタムブロックを作ってみました。

カスタムブロック用のプログラムを書く

XOOPSの管理画面から直接ブロックを作成するのは、皆が大好きなVimも使えないし、ちょっとテストしたい時とかに面倒なので、1つフォルダを作ってそこにブロックのプログラムを書いていきます。

まず、作業する為のフォルダとして、XOOPS_ROOT_PATHにblocksというフォルダを作ります。
フォルダ作成

blocksフォルダを作ったら、その中にadvent_day14.phpという名前でファイルを作って、以下のコードをコピペ。

advent_day14.php
<?php

if ( !defined('XOOPS_ROOT_PATH') ) require dirname(dirname(__FILE__)).'/mainfile.php'; // おまじない

$amazon_url = "https://www.amazon.co.jp/gp/gc/order/ref=gc_dp_conv_order?ie=UTF8&casin=BT00DHI8GO&design=a_amazon_09&type=Email";

global $xoopsConfig;
$adminmail = $xoopsConfig['adminmail'];

?>

<a href="<?php echo $amazon_url ?>" onclick="contribute();">管理者にカンパする!</a>

<script type="text/javascript">
function contribute() {
  // IEの場合直接コピーさせる
  if (window.clipboardData && window.clipboardData.setData("Text", "<?php echo $adminmail ?>")) {
    return;
  }

  window.prompt("下のメールアドレスをコピーしてからOKを押して下さい", "<?php echo $adminmail ?>");
}
</script>

コピペして保存できたら、実際にちゃんと動いているか確認しましょう。
以下のように、自分のXOOPSサイトのURLに、/blocks/advent_day14.phpでアクセスして画像と同じようなものが表示されていればOK!
動作チェック

カスタムブロックの作成

ここまでできたらもう終わったも同然ですね。後は実際にXOOPSでカスタムブロックを追加して、さっき書いたadvent_day14.phpを表示させるだけ。

XOOPSの管理画面からカスタムブロックの追加にいって、画像のように設定してあげましょう。
カスタムブロック作成

まあ、自分で自分にかんぱとか必要ないので、確認が終わったらサイト管理者の権限は外しちゃっても良いかもしれませんね。
ちなみに、画像内のコードはこんな感じ。

$file = 'advent_day14.php'; // 作ったファイル名

// 以下おまじない

$path = XOOPS_ROOT_PATH . '/blocks/' . $file; // ファイルの場所を指定

if ( file_exists($path) ) require $path; // ファイルが存在すれば読み込む

デモ

ここのサイトでアドベントカレンダーの期間中は動作確認できます。ギフトカードプレゼントする所までやってみても良いんですよ。

最後に

ちなみに、このブロックの開発手法はXOOPS界で超有名らしい@suinさんの「PHPカスタムブロックの超!賢い作り方 - 株式会社RYUS」を参考にしながら作成しました。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?