2011-07-14 20 views
0

私はDrupalで構築しているWebサイトの1つでカスタム検索を行っています。検索は完全に正常に動作します。「すべてのページにテーマレジストリを再構築」チェックボックスがテーマ設定ページで選択されています。しかし、私はそれを(生産のために)チェックを外すと、検索はもはや機能しません、同じページは検索ボタンを押すと再びリロードします。最近のログエントリを見ると、エラーが見つかりました: preg_match()は、パラメータ2が文字列であることを期待しています。配列は/var/www/devel_sites/SITENAME/docroot/modules/docroot/modules/search/search.moduleの671行にあります。Drupal - preg_matchエラーを表示する検索

誰かが私の検索がテーマレジストリに依存する理由とこれを修正する方法を知りましたか?私は検索のためのカスタムモジュールを持っており、機能の一部はtemplate.phpにあります。

ご協力いただきありがとうございます。

+0

、それらを無効にし、私は彼らがインストールされていませんでしたし、それがエラーを示した再 – Laxman13

+0

を試してみてください。以下に上記を交換すると、私のためにそれを解決しました。実際には、私はちょうど私がそれらからいくつかの助けを得ることができると思ったが、これまで運がなかった – Navneet

答えて

0

私は(最後に)問題を解決することができました。他の誰かが同じように直面した場合は、以下の解決策を投稿しています。

template.phpからすべての機能ロジックを私のカスタムモジュールに移動することから始めました(とにかくそれをやったことが問題のようでした)が、解決できませんでした。私はカスタムモジュールコードを掘り下げなければなりませんでした。それが問題の原因を見つけました。私は、入力されたキーワードを取得するには、以下を使用していた。

$form_state['values']['processed_keys']

それは再構築テーマレジストリオプションをオフにすると、上記の配列値をテーマレジストリによって上書きされ、空に置き換えられている、判明しますしたがって、配列ではなく、第2引数として文字列を期待している検索モジュールの行671にエラーが発生します。あなたがテーマの開発者やdevelのが有効になっている場合は

$form['basic']['inline']['processed_keys']['#post']['keys']

0

コードはありません(コードはカスタムなので、誰もあなたの質問に満足に答えることはできません)。ただし、モジュールコードを変更しても構わない場合は、行番号671の前にis_arrayを条件付きで入力し、そうであればimplodeという用語を(または検査して不要なものを取り除いて)行使してください。

+0

チップのおかげで、私は実際にテスト目的のためにそのルートを行った。私はprint_r($ keys)($ keysは671行目のpreg_matchの2番目の引数です)、実際は空の配列です。だから、 'Rebuild Theme Registry to every page'オプションがオフになっているときだけ、$ keys変数は壊れて空の配列として渡されます。オプションがONになっていると、$ keysは型付き検索を返しますキーワードとすべての問題はありません。たぶん、私はテーマレジストリに依存して検索を除外することができるいくつかの方法がありますか? – Navneet

+0

'$ keys'はどこから来ますか?テーマレジストリのどこかに '$ keys'という変数がありますか? '$ keys'は何とか上書きされています。 – wanovak

+0

$ keysはsearch.moduleで使用される変数で、カスタム検索モジュールからその値を取得しています(そのように見えます)。 develモジュール(/ devel/theme/registryページにあります)を使用してテーマレジストリをチェックしましたが、$ keys変数/配列は表示されません。それは基本的に何が起きているのですか?私のカスタムモジュールの検索値は上書きされています。空の配列で置き換えられていて、何とかテーマレジストリに関連しています。671行目($ keys)で参照されます。 /それがどこで起こっているかをより重要なことを確認しますか? – Navneet

関連する問題