php-検索結果に言語フィルターを強制するために、hook_search_infoと_executeをどこに実装しますか?
現時点では、node_search_executeに渡されたオプションのリストに「現在の言語」を強制しようとしています。残念ながら、関数フックを配置する適切な場所を見つけるのに苦労しています。おそらく私は何か簡単なものが欠けています。
これをどのように実装するかについて、2つの基本的な可能性にたどり着きました。
(1) hook_search_info
とhook_search_execute
この場合、コードを node_search_execute
からコピーし、検索クエリに「AND Language='$current_language'」を追加する行を追加します。< / p>
テーマフォルダに、関数 mythemename_search_info
とmythemename_search_execute
を追加しようとしましたが実行されません。実行時。
function mythemename_search_info(){
配列を返す
'タイトル'=>'コンテンツ'、
'パス'=>'ノード'、
'conditions_callback' =>'mythemename_search_execute'、
);
}
関数{-コード-5}($ keys = NULL、$ conditions = NULL){
array();を返します。
}
この例では、オーバーライドが実行されていることを確認できるように「結果なし」を取得したいので、完全な検索機能を実装します。
(2) hook_search_preprocess()
mythemename_search_preprocess()
function mythemename_search_preprocess($text) {
// Do processing on $text
echo $text; die();
$text = "french";
return $text;
}
しかし、期待どおりの結果が得られません(テキストが少し入った白いページ)
つまり、私が何をしていても、これらの検索フックは検出されません。
何が欠けていますか?それらはおそらくモジュールに含まれている必要がありますか?
答え :
解決策:
はい、モジュール内にある必要があります。ほとんどのフックはモジュールに対してのみ呼び出され、テーマに対しては呼び出されません。これに対する最も注目すべき例外は、両方に呼び出されるテーマ/前処理フックです。
カスタムモジュールを作成するのが非常に簡単になる前に作成したことがない場合は、ここに貴重なガイドがあります。
答え :
解決策:
hook_search_info()
、 hook_search_execute()
、{-code-3を使用しましたカスタムモジュールの}
。 「フック」をモジュール名に置き換えました。 hook_search_info()
の「title」で作成されたタブを取得できました。
そして、hook_search_executeの結果配列を渡しました。これにより、検索ページのタブの下に結果が表示され始めました。したがって、新しいモジュールを確実に作成すると、新しい検索タブを含めるのに役立ちます。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。