2010-05-20 Thu

NP_znItemFieldEX|PHP 5で検索機能を有効にする

Nucleusでサイト構築をする際、もはや無くてはならないプラグイン「NP_znItemFieldEX」。通常「タイトル」「本文」「続き」の3項目しかないNucleusの記事に、独自のフィールドを追加する事ができます。しかもそのフィールドの種類が豊富で、通常のテキストはもちろん、日時や数値だけを扱うことができます。おかげでサイトの多くの要素を記事で管理することができ、サイト構築後のメンテナンスがかなり楽になります。さらに便利なのが、その拡張フィールドの値を検索対象とできる事です。ところがこの機能が原因で、先日トラブルに見舞われました。

あるサイトのPHPが、4から5にバージョンアップされたとのことで、いろいろ動作を調べているとなんと検索機能がおかしい…。まったく検索結果が表示されません。最初は「NP_ExtensibleSearch」の影響かと思ったのですが、標準の検索もひっかからず…ということで、拡張フィールドを検索対象にできるNP_znItemFieldEXのソースを探ってみました。…僕にはかなり手強かったですが、コメントで検索周りの処理を明示してくれたおかげで問題を絞り込む事ができました。

event_PreSearchResults関数内の4行目あたりに

$data['items'] = array_unique(array_merge($data['items'], $array));

があります。この“array_merge”の仕様がPHP 5で変更されたのが原因のようです。

ということで、4行目を

$data['items'] = array_unique(array_merge($data['items'], (array)$array));

とし、変数$arrayを強制的に配列型にすることで無事検索機能が復活しました。

いつも思いますが、PHPのマニュアルってほんとによくできてますね。相当猛烈に助かります。

2010-05-20 Thu by pushman - Category: Nucleus
Keyword: /
Comment: 0 - TrackBack: 0

このページの先頭に戻る

「NP_znItemFieldEX|PHP 5で検索機能を有効にする」へのツイート

「NP_znItemFieldEX|PHP 5で検索機能を有効にする」へのトラックバック

TrackBack URL:

「NP_znItemFieldEX|PHP 5で検索機能を有効にする」へのコメント





このページの先頭に戻る