ping送信先

2007/02/06 | SNS/CMS/ブログ

Serendipityの更新ping送信は、プラグインをインストールすることで実現できる、というのは以前に書いた。インストールするとデフォルトでいくつかのping送信先が設定してある。この設定のうち必要ないものを削除したり、常に利用したい送信先がある場合は、設定ファイルに記述しておくと楽になる。
設定ファイルは以下の場所にある。

(インストールしたディレクトリ)/plugins/serendipity_event_weblogping/

この中のservicesdb_ja.inc.phpというファイルに配列形式で記述されているので、これを適宜修正すればよい。使用言語によってファイルが分けられているんだ・・・。

テンプレート内で現在の日時

2007/02/05 | Smarty

Smartyテンプレート内での現在の日時の取得は{$smarty.now}でOK。
{$smarty.now|date_format:”%Y/%m/%d %H:%I:%S”}なんて感じでフォーマットして出力して使えばよさそう。これも時々忘れてしまうのでメモ。

Serendipityのメディア(画像)の管理について

2007/02/04 | SNS/CMS/ブログ

画像の保存方法はデータベースかも、と書いたが試してみるとサーバ上にファイルとして保存されていた。何か条件によってはデータベースに書き込まれるのかもしれない。これは調べてみる必要がありそうだ。
画像に関する機能も結構便利。まず・・・。

○サブディレクトリを作って、ディレクトリごとに画像の管理ができる。
 やっぱり視覚的にもこういうのは便利だ。
○他サーバの画像も管理できる。
 外部で公開されている画像も、Serendipityで管理できる。管理といっても画像そのものをどうこうするというわけではなく、リンクのURLを管理してくれるわけだ。
○外部の画像をもってくる!?
 他サーバの画像へのリンクを管理するだけでなく、場合によってはその画像を取得して自サーバ内に保存して、ローカルファイルとして扱うこともできる。すご。

あと複数画像も一度にアップロードできるし(これはPHPの設定如何によるはず)、アップロードした画像にコメントとかいろいろプロパティを追加することができる。

これだけ高機能だと、あとはデザインテンプレートだけの問題になってくる。せっかく自社ウェブに取り込んだりもしたので、このテンプレートを公開できるよう整理してみるのも面白い。
単なる偏見だけど、なんとなくムーバブルタイプって好きになれない(すごくとっつきにくかった印象がある)。できれば一矢報いたい(笑)。

Cache_Liteのオプションのことで

2007/02/03 | その他PEAR全般

Cache_Liteが簡単で便利なので、最近は多用するようになった(多用したい衝動に駆られるようになったというほうがあってる・・・つまりまだ多用はしていない)。
今までは「PHPで一つのスクリプトを走らせるのに、こんなにSQLをいくつも発行するのって気に食わないなぁ」と思っていた部分がたくさんあるので、これで少し不満が解消されそうだ。ともあれ、キャッシュを全てのプログラムに埋め込む時間もないので、とりあえず今の受注案件に組み込んでみた。
やっていてわかったことだけど、Cache_Liteは特に何も設定しないと、文字列しかキャッシュできない。つまり文字列でない場合は、その都度serializeするなどして文字列に変換しなくてはいけないのだ。しかしこれは面倒。
Cache_Liteを初期化する際に、コンストラクタへの引数として便利なオプションがあるようだ。「automaticSerialization」。
このオプションをtrueに設定しておくと、毎回自動でserializeしてくれるようだ(デフォルトはfalse)。マニュアルには「動作が遅くなる」と書いてあるが、毎回SQLを呼ぶよりはずいぶんましだと思うので、迷わずtrueに設定した。これまた便利になった。

シフトJISで記述されたテンプレートファイルを使うために

2007/02/02 | Smarty

Smartyではテンプレートファイルとして、EUC-JPまたはUTF-8で記述されたテンプレートを使用することになっている。Shift_JISで記述されたテンプレートファイルは文字化けする。これはおそらく、元来PHPがShift_JISをサポートしていないためだろう。もちろんPHPでも変数内にShift_JISの文字列を格納することはできる。Smartyの場合はテンプレートファイルからPHPの実行形式のファイルを生成する(テンプレートファイルをコンパイルして使うので)。これはつまり、テンプレートファイルに書かれたことがそのままPHPで実行して表示される、と考えるべきだろう。つまりテンプレートファイルをShift_JISで記述するということは、PHPプログラムをShift_JISで記述することと同義なのだ。これでは文字化けして当然だ。
で、どうするか。
Smartyのプレフィルタという機能を使う。これによりテンプレートファイル読み込み時にいったんファイルを内部文字エンコードに変換してしまうのだ。では、どうするか。
まずSmartyのプラグインディレクトリに、以下のような関数ファイルを設置しておく(ファイル名prefilter.sjis2euc.php)。

<?php
function smarty_prefilter_sjis2euc($buff,&$smarty)
{
return mb_convert_encoding($buff,’EUC-JP’,’SJIS’);
}
?>

これを以下のように呼び出す。

$smarty->load_filter(‘pre’,’sjis2euc’);

これでShift_JISで書かれたテンプレートを使うことができるようになる。ちなみにテストをするときは、その都度Smartyが生成したキャッシュファイルを削除しておくことを忘れてはいけない。キャッシュが生成された状態では、いくらフィルタを設定しても、新しくコンパイルしなおしてくれないからだ。
これでデザイナにも簡単に作業してもらえる。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net