NP_znItemFieldEX|URLエンコードを追加
NP_znItemFieldEX|URLエンコードを追加
- Author : pushman|Nucleus|2007-10-28 Sun 15:20
-
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> -
-
Tag(s): NP_znItemFieldEX

