2007-10-28 Sun
NP_znItemFieldEXは標準で「タイトル」「本文」「続き」しかないNucleusのアイテム項目に、任意の項目を拡張してくれます。この機能のおかげでNucleusの使い方が猛烈自由になります。個人的にいちばんお世話になっているプラグインですね。
某サイトでこのNP_znItemFieldEXで追加した「Text」タイプの値を表示して、その値の検索結果のページへリンクをさせたかったのですが、WindowsのIEだけ、IEだけが、見事に文字化けしてしまいました。いろいろ調べたのですが、URLエンコードさせないと回避できそうになかったので、オプション項目を追加して対応してみました。
NP_znItemFieldEXの「Textarea」タイプには「removeBreaks」「htmlspecialchars」「removeBreaks_htmlspecialchars」と指定することで、改行処理をいろいろ変更してくれます。この処理を参考に「Text」タイプにもオプション項目「urlencode」を追加しました。
「DispEachType」関数内の1008行目あたりからはじまるswitch文でフィールドタイプの判別を行っているようです。いずれのタイプでも「$rdata」という変数にフィールドの値を渡して表示させている気がします。そこで、その直前に「urlencode」の処理を追加し、「Text」タイプの処理を以下のように修正しました。
case "Text":
if ($rdata == '') return;
//$query$expression
// 追加開始
switch ($format)
{
case 'urlencode':
$rdata = urlencode($rdata);
break;
}
// 追加終り
$rdata = (!$itemid and $query) ? highlight($rdata, $expression, $this->highlight) : $rdata;
$putData = array('fieldex' => $rdata);
break;
あとはテンプレートに、
<%znItemFieldEX(fieldName,urlencode)%>
記述すれば、めでたくURLエンコードされた日本語が表示されます。実際にはこんな感じで使ってます。
<a href="サイトのURL?amount=0&blogid=ブログID&query=<%znItemFieldEX(fieldName,urlencode)%>"><%znItemFieldEX(fieldName)%></a>
2007-10-28 Sun by pushman - Category: Nucleus
Keyword: NP_znItemFieldEX
Comment: 0 - TrackBack: 0
« Old 2007-10-28
NP_ExtensibleSearch|検索HIT数を表示
2007-11-15 New »
NP_TimeLimit|表示・非表示を指定