桜恋唄
幽遊白書・黒鵺×蔵馬中心、桜枝真央の同人的創作の館

RSS0.91 | RSS2.0 || 桜恋唄 (HOME) » 桜恋唄構築話 » 検索機能少し改善

検索機能少し改善

Contents

Writer:
桜枝真央
Category:
桜恋唄構築話
Posted on:
2009-11-06 23:04

 今日はやたらアクセス不能状態が続いて申し訳ございませんでした。「桜恋唄」と「Mao's Secret」の検索、今まで半角カナを入力されてしまった場合検索出来ずにいましたが (あと携帯から検索すると2ページ目以降で文字化けが出ていたのですが)、裏技的に改善してみました…多分。半角カナでも全角カナでも検索出来るはずです。

 そもそも Nucleus に「半角カナで検索」という概念はなかったと思います。私が半角カナで書いてない記事はヒットしません。なので、検索フォームに半角カナを入力されてしまった場合、検索処理の前に一旦全角カナに変換する必要があります。

 実はここでドツボに嵌ったわけです…。最初は軽く「mb_convert_kana でいいじゃん」と思ってたのですが、単純にこの処理をすると NP_MobileWithSinglePage (うちは 2.1.0 beta) で表示させた携帯用スキンで文字化けします (PCで半角カナ検索できるようになるので半分は解決ですが)。どうやら携帯から検索したときは文字コードを SJIS に指定して変換しないといけないみたい (PCの場合は変換先の文字コードは _CHARSET で可)。

 では携帯からのアクセスと PC からのアクセスをどう見分けるか。当初は Nucleus 内部機能だけで片付けたいと思い、$skinid で処理できないかと悪戦苦闘していました。携帯用スキンからの検索と PC 用スキンからの検索で振り分けられると思ったんです。が! NP_MobileWithSinglePage って出力をいじるだけなので $skinid は PC と同じ物がセットされてるみたいなんです…。結局、NP_MobileWithSinglePage と同じ (UAで携帯アクセスかどうか判別する) 方法で処理したら一発で成功しました。コア改造に外部ライブラリ使いたくなかったんだけどな…。

 NP_MobileWithSinglePage をお使いで、携帯でカタカナ検索の結果表示 (ページ送り有) に悩む方は他にもいらっしゃると思いますので改造方法載せておきます。汚いので実はあまりお見せしたくないのですが…。globalfunctions.php の 990行目付近から始まる「switch(strtolower(_CHARSET))」の節が終わった直後 (1010行前後) に以下のコードを挿入してください。NP_MobileWithSinglePage の判定コードを参考 (パクリとも言う) にしております。

//added start for NP_MobileWithSinglePage
if ($manager->pluginInstalled('NP_MobileWithSinglePage')) {
$userAgent = serverVar('HTTP_USER_AGENT');
require_once('/(home)/nucleus/plugins/sharedlibs/Net/UserAgent/Mobile.php');
$objUAMobile =& Net_UserAgent_Mobile::factory($userAgent);
if (!$objUAMobile->isNonMobile() && !$objUAMobile->isError()) {
$isMobile = true;
}
}
if ($isMobile) {
$query = mb_convert_kana($query"KV""SJIS"); 
else {
$query = mb_convert_kana($query"KV", _CHARSET);
}
//added end

||

コメント

まだコメントはありません。

このアイテムは閲覧専用です。コメントの投稿、投票はできません。

桜恋唄について | 管理人について | サークル情報 | サイトマップ