[72] 記事本文に短縮コマンドを埋め込む(ISBNコードなど)
<%isbn(ISBN4-88474-629-5)%>
と書くだけで、ページ表示時にamazonへのリンクとかを自動的に展開する方法。
仕組みは簡単で、記事を表示する際にこのコードを見つけて自動的に文字置換を行うだけのものです。
<%media(***.zip|)%>と書いたら勝手にファイルリンクタグを表示してくれるのと一緒。
1)BLOG.phpの編集
◆function getDefinedActions()内のarrayにある、
'image',
'popup',
という行を
'image',
'popup',
'isbn',
という具合に、'isbn'要素を追加。
◆function parse_image()と、
function parse_popup()との間に、function追加
function parse_Isbn() {
// image/popup calls have arguments separated by |
$args = func_get_args();
$args = explode('|',implode($args,', '));
call_user_func_array(array(&$this,'createIsbnCode'),$args);
}
◆function highlightAndParse(&$data)内の
$this->parser->actions = array('image','media','popup');
を以下のように修正。
$this->parser->actions = array('image','isbn','media','popup');
順序はどこでも良いと思います。
◆function createImageCodeとfunction createMediaCodeとの間にfunction追加。
==============
function createIsbnCode($isbn, $width, $height, $text = '') {
global $CONF;
$isbncode = str_replace(array("-","ISBN"),"",$isbn);
$vars['text'] = htmlspecialchars($isbn);
$vars['isbncode'] = htmlspecialchars($isbncode);
$vars['link'] = htmlspecialchars($CONF['MediaURL']. $isbncode);
$vars['image'] = '<img src="' . $vars['link'] . '" width="' . $width . '" height="' . $height . '" alt="' . $vars['text'] . '" />';
echo TEMPLATE::fill($this->template['ISBN_CODE'],$vars);;
}
==============
余計なコードがいっぱい入っているのはご容赦下さい。
2) ADMIN.phpの編集
◆$this->_templateEditRow($template, _TEMPLATE_MCODE, 'MEDIA_CODE', '', 260);
という行の下に次の1行追加
==============
$this->_templateEditRow($template, _TEMPLATE_ISBNCODE, 'ISBN_CODE', '', 250001);
==============
◆$this->addToTemplate($templateid, 'IMAGE_CODE', postVar('IMAGE_CODE'));
という行の下に1行追加
==============
$this->addToTemplate($templateid, 'ISBN_CODE', postVar('ISBN_CODE'));
==============
3)japanese.phpの編集
4)テンプレート編集
ここまでやったら、管理エリアでテンプレートの編集に入ってこのISBNテンプレートの中身を記述します。
例えば、
=============
<%text%>
<br />
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/<%isbncode%>/□□□□□/">amazon</a>
<br />
<a href="
http://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?GUSR=&RECNO=1&HITCNT=10&W-ISBN=<%isbncode%>" target="_blank">紀伊国屋</a>
=============
と書けば、ISBNコードと、このISBNで検索されるamazonサイト、紀伊国屋サイトへのリンクが生成されます。□□□□□部分は、自分のアフリエイトIDを書きます。(なくてもいいけど)
ここまでの作業で、自分で手動で記事本文に
<%isbn(ISBN4-88474-629-5)%>
と書いたらちゃんと展開するかどうか、確認してみてください。
さて、次は、ISBNボタンを記事エディタにつけてみましょう。
1)edit.jsの編集 2003-12-26修正
の次の行に
function isbnThis() { insertAroundCaret('<%isbn(',')%>'); }
を挿入
◆function ahrefThis()の次に、以下のfunctionを追加
=============
function isbnThis() {
if (document.selection)
strSelection = document.selection.createRange().text;
else
strSelection = '';
strHref = prompt("ISBNコード:","ISBN");
if (strHref == null) return;
var textpre = "<%isbn(" + strHref ;
insertAroundCaret(textpre, ")%>\n");
}
=============
以下はエラーが出る場合があるので、取り消しました。
=============
if (document.selection)
strSelection = document.selection.createRange().text;
else
strSelection = '';
strHref = prompt("ISBNコード入力\nISBNからはじめてください","ISBN");
if (strHref == null) return;
strHrefto = strHref.replace(/ISBN/g, '').replace(/-/g, '');
var textpre = "<%isbn(";
var textpost = ")%>";
var textEl = lastSelected;
var caretPos = textEl.caretPos;
caretPos.text = textpre + strHref + textpost;
updAllPreviews();
}
=============
2)PAGEFACTORY.phpの編集
◆$this->_jsbutton('link',"ahrefThis()",_ADD_HREF_TT ." (Ctrl + Shift + A)");
の次に
$this->_jsbutton('isbn',"isbnThis()","ISBN生成");
という1行を挿入
保存の際は、文字コードに気をつけてください。自分のサイトの文字コードで保存してください。
3)ボタンの画像をサーバに置く
↑この画像を
nucleus/images ディレクトリに
button-isbn.gif
という名前で転送してください。
これで、おしまい。
Posted 11/06/03 by nakahara21 | Filed under: Tips
Comments
Add Comment