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が生成したキャッシュファイルを削除しておくことを忘れてはいけない。キャッシュが生成された状態では、いくらフィルタを設定しても、新しくコンパイルしなおしてくれないからだ。
これでデザイナにも簡単に作業してもらえる。

日付と時刻をフォーマットする

2007/02/01 | Smarty

Smartyでは出力時に日付や日時を好みのフォーマットに変更できるが、フォーマット文字列の使い方が標準のdate関数などとは違うみたい。だからいつも間違えてしまう。

%a・・・現在のロケールに基づいた曜日名(省略形)。
%A・・・現在のロケールに基づいた曜日名(完全形)。
%b・・・現在のロケールに基づいた月名(省略形)。
%B・・・現在のロケールに基づいた月名(完全形)。
%c・・・現在のロケールに基づいた日時。
%C・・・世紀。00-99。
%d・・・日。01-31。
%D・・・%m/%d/%yと同じ。
%e・・・日。1-31。一桁のときは先頭に空白がはいる。
%h・・・%bと同じ
%H・・・時。00-23。
%I・・・時。01-12。
%j・・・1月1日からの日数。001-366。
%m・・・月。01-12。
%M・・・分。00-59。
%n・・・改行。
%p・・・現在のロケールに基づいたAM・PM表記。
%r・・・時間。12時間表記。
%R・・・時間。24時間表記。
%S・・・秒。00-59。
%t・・・タブ。
%T・・・%H:%M:%Sと同じ。
%u・・・曜日。1(月)-7(日)。
%U・・・1年の何番目の週か。
%V・・・1年の何番目の週か。
%w・・・曜日。0(日)-6(土)
%W・・・1年の何番目の週か。
%x・・・現在のロケールに基づいた日付。
%X・・・現在のロケールに基づいた時刻。
%y・・・年。00-99。
%Y・・・年(4桁)。
%Z・・・タイムゾーン
%%・・・%

ほとんど使わないけど、年月日時分秒だけ覚えとけば問題ない。これくらいはdate関数と同じであって欲しかった。

Serendipityの高機能なプラグインたち

2007/01/31 | SNS/CMS/ブログ

くどいようだがSerendipity。
プラグインを少しのぞいてみた。そのさまざまな機能には驚くばかりだ。単にムーバブルタイプを使っていないからだけかもしれないけれど、こいつはスゲーと感嘆も仕切り。
一例を挙げると「スパム対策」「リンク集」とかは当たり前、「お問合せフォーム」「アルバム機能」「外部POP取得」「バックアップ」「投票」「カレンダー」「ToDo」・・・。ウェブ制作会社に必要な機能はほぼ備えているので、使い方を理解して、あとはデザインができればそれだけでウェブ制作会社ができてしまう(いや、マジで)。
これからはこいつを使って何か始めてみようと思う。当面このネタ、続きます。


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