桜恋唄
幽遊白書・黒鵺×蔵馬中心、桜枝真央の同人的創作の館

RSS0.91 | RSS2.0 || 桜恋唄 (HOME) » 桜恋唄構築話 » NP_ContactMail on スペシャルスキンパーツ

NP_ContactMail on スペシャルスキンパーツ

Contents

Writer:
桜枝真央
Category:
桜恋唄構築話
Posted on:
2008-12-19 21:32

 需要低そうですがスペシャルスキンパーツで複数ブログ (別スキン使用) ごとに NP_ContactMail を使い分ける方法を御紹介します。前の記事と重複していますがスキン準備しただけでは不十分だったので…。同じことを考える人 (いるのか?) の参考になればと思います。

表示するブログとスキン名
  • 主ブログ『桜恋唄』(http://sakurae.jp)
    ブログID「1」、スキン名「second」
  • 従ブログ『Mao's Secret』(http://mao.sakurae.jp)
    ブログID「5」、スキン名「secret2」
使用方法
両スキンについてスペシャルスキンパーツを作り、そこから送信。当然『桜恋唄』と『Mao's Secret』では各々のスキンで表示。
改造手順1:スキンパーツの準備
1. NP_ContactMail 送信用スペシャルスキンパーツを作る
 スキン「second」及び「secret2」両方に「contact」というスペシャルスキンパーツを作る。他の名前でもいいけど共通の名前をつける。
2. アクセス用のファイル準備 (桜恋唄)
「http://sakurae.jp/contact」というアドレスでアクセスするためのファイルを用意する。ホームディレクトリ直下に「contact」(拡張子なし) というファイルを作り、 <?php
// This file will generate and return the main page of the site
$CONF = array();
$CONF['Self'] = '.';

include('./fancyurls.config.php');
include('./config.php');

$_REQUEST['special'] = 'contact';
selector();
?>
と記述。
3. アクセス用のファイル準備 (Mao's Secret)
 同様に「http://mao.sakurae.jp/contact」というアドレスでアクセスするためのファイルを準備する。中身は前の記事参照。ここで selectBlog() にブログ名、selectSkin() にスキン名を入れておくのがポイント!
4. .htaccess に明記
 今準備した「contact」というファイルが PHP として認識されるようにする。.htaccess 内に <FilesMatch "^contact$">
    ForceType application/x-httpd-php
</FilesMatch>
と追加。
改造手順2:プラグインの改造
1. インクルードファイル改造
 home/nucleus/plugins/contactmail 中の createMail_class.php, invalidMail_class.php, confirmMail_class.php, sendMailMail_class.php の4つのファイルの function display()、最初の方に global $blogid$skinid//added を、同様に $template_header = str_replace("<%actionuri%>"$actionuri$template_header); の下に $template_header = str_replace("<%post_skinid%>""<input type=\"hidden\" name=\"skinid\" value=\"" . $skinid . "\" /><input type=\"hidden\" name=\"blogid\" value=\"" . $blogid . "\" />"$template_header); //added を入れる。4つのファイル全部に行う。
2. プラグイン本体改造
/home/nucleus/plugins/NP_ContactMail.php の function doAction、 $blogid = $NPCM_CONF['bname'];
if (!$blogid)
$blogid = $CONF['DefaultBlog'];
$b =& $manager->getBlog($blogid);
$blog = $b;
$query = 'SELECT b.sdname as currentskin FROM  '. sql_table('blog') .' a, '. sql_table('skin_desc') .' b WHERE b.sdnumber=a.bdefskin and a.bnumber='.$blogid;
の部分を下に置き換え。 // $blogid = $NPCM_CONF['bname'];
if (!$blogid)
$blogid = $CONF['DefaultBlog'];
$b =& $manager->getBlog($blogid);
$blog = $b;
// $query = 'SELECT b.sdname as currentskin FROM  '. sql_table('blog') .' a, '. sql_table('skin_desc') .' b WHERE b.sdnumber=a.bdefskin and a.bnumber='.$blogid;
$skinid = postVar('skinid'); //added
$query = 'SELECT sdname as currentskin FROM '. sql_table('skin_desc') .' WHERE sdnumber='.$skinid//added
更に、数行下の $skin->parse('index'); をコメントアウトして代わりに $skin->parse('contact'); を入れる。括弧の中は手順1で作ったスペシャルスキンパーツの名前。
改造手順3:テンプレートの設定
 プラグイン管理画面の「テンプレート」でテンプレートを編集。4つのヘッダ部分各々に input type="hidden" がいくつか並んでいるので、そのすぐ下に <%post_skinid%> を書いておく。

 これにてやっと複数ブログ複数スキンの各スペシャルスキンパーツにおいて送信画面が意図通りの表示になりました。要するに $blogid と $skinid を hidden で送信するようにしただけですが、どうやってこの2つの変数を取得するかがポイントです。実は改造手順1-3で用意した「contact」ファイルに直接書き込んだものが使われるんですね。

 こんな面倒なことしなくてもこのプラグインの正当な使い方に則り、専用ブログと専用スキンを用意してその中だけで呼び出せば話は早いんです。私がそれをしなかったのは2つのサイト用にスキンを使い分けたかったのと、あとメールフォームだけのためにブログ1つ作るのに抵抗があったから。スキン内でプラグインを呼び出す際、<%ContactMail(blogid,skinid,template)%> みたいな感じでブログID、スキンID、テンプレートの使い分けが出来るといいのにな…と、妄想だけはしてみます。私にはそこまでの技量はないので改造に留めておきます (^^;

||

コメント

まだコメントはありません。

このアイテムは閲覧専用です。コメントの投稿、投票はできません。

桜恋唄について | 管理人について | サークル情報 | サイトマップ