̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

sbtext_formatの改造 その2

こちらでちょっとお騒がせしてしまいましたので、罪滅ぼしも兼ねて(?)先日の改造に次ぐ第二弾。(改造の元になっているのは、そのお騒がせしたサイトのコメント欄にてリンクが張られている、sbの作者Takkyunさんご自身が改良された0.04というバージョンのものです)

  • 引用したときに上下のスペースを小さくする
  • Amazonリンクで自分のIDを使えるようにする
  • Amazonリンクで商品名を書けるようにする
  • コロンをエスケープできるようにする(大括弧の中にコロンが中に入っていてもリンクにしたくない場合に使う)

改造の方法は以下の通りです。

以下の作業をする場合には、念のために現在正常に稼働しているsbtext_format.plをどこかにバックアップしておいてください。

  • 引用したときに上下のスペースを小さくする

これはスクリプトの改造ではなくスタイルシートの変更になります。スタイルシートの blockquote p { と書かれている部分を探し、以下のようにします。もし blockquote { (pなし)しか見つからない場合は、その下に以下のブロックを追加します。

blockquote p {
margin:0px;
padding:0px;
}

あと、これもテンプレート次第だと思いますが、引用ブロック直後のリスト表示が空行なしにすぐ下にくっついてしまう場合は以下のようにします。

/* 記事中のリスト */
div.entry ul{
margin:20px 0px 0px 20px;
padding:0px;
}

marginの第一引数(上記では20px)を0pxにすると、引用ブロック直後ではリスト表示が引用ブロックのすぐ下にくっついてしまって不格好になってしまうようです。

  • Amazonリンクで自分のIDを使えるようにする

267行目付近の 『if ($name =~ /ASIN/i) { # Amazon』 という行を探してください。その行と次の行を以下のように書き換えます。(3行に見えるかもしれませんが、2行目が長くて折り返されているだけです。あしからず)

if ($name =~ /^ASIN$/i) { # Amazon
$text =~ s/\[(.*?):(.*?)\]/<a href=\"$amazon$2\/$gData{'user'}[$gEnv{'currentuser'}]{'aws'}\"$interlink>$1:$2<\/a>/;

  • Amazonリンクで商品名を書けるようにする

上記の 『$text =~ ・・・・ $1:$2<\/a>/;』 のすぐ下に以下の2行を挿入。(これも3行に見えるかもしれませんが2行です)

} elsif ($check =~ /^\w+$/i) { # Amazon
$text =~ s/\[([^\[\]]*):(\w*)\]/<a href=\"$amazon$2\/$gData{'user'}[$gEnv{'currentuser'}]{'aws'}\"$interlink>$1<\/a>/i;

記事に記述するときの書式は以下のようになります。

[商品名:ASIN番号]
例:[MySQLクックブック〈VOLUME1〉:4873111552] と書くと MySQLクックブック〈VOLUME1〉 となります。

このように指定してください。なお、[ASIN:ASIN番号]という以前の書式だとそのまま以前と同じように表示されます。

ところで、今回の改造で書き方の条件を少し厳しくしました。それは、'[' と '] の間には '[' も ']' も書けなくしたということです。下記の改造に加えて、大括弧もエスケープできるようにすれば、この制限を外すことも可能ですが、今回はあえてそのような制限を設けました。もしも商品名に大括弧が使われていたらいわゆる全角文字に置き換えてください。

  • コロンをエスケープできるようにする(大括弧の中にコロンが中に入っていてもリンクにしたくない場合に使う)

これは、上記のように説明に使いたいときなどにリンクさせないようにするために、大括弧に挟まれているコロンを \: と書くことでエスケープできるようにする改造です。

309行目付近に 『sub _sbtxt_spchar { # 特殊記号の変換/復帰』 という行があると思いますのでそこを見つけます。そして、if ($dir) ブロックに3行ありますが、その直下に以下の1行を挿入します。

$text =~ s/\\\:/&jlspa;/g;

次に、elseブロックの3行の直下に以下の1行を挿入します。

$text =~ s/\&jlspa;/:/g;

この改造をしておけば、'[' と ']' の中にコロンがあってリンクにしたくない場合でも、'\:' と書くことで解決できます。

※注意※
このスクリプトを使って書いた以前の記事の中に \: という部分がある場合、再構築をするとその部分が : だけになってしまいますので注意してください。

'\:' という組み合わせは普通あまり使われないとは思いますが、上記の注意内容を間違いなく防ぐには、別名にしたプラグインとして使えばいいでしょう。
私の場合、sbtext_format_a.pl として、70行目付近の『'name' => 'sbtext',』の定義を変更して使っています。(例:'name' => 'sbtext_a',) そして、その別名のスクリプトをアップロードして、環境設定でそれを有効にすれば、記事編集画面の「フォーマット」のところに新しい名前(たとえばsbtext_a)がリストアップされているはずですのでそれを選択します。
 

jollyspace | sb(プラグイン) | コメント (0) | トラックバック (0)
∴page top