Searchapi、facetapi、およびentityapiを使用するファセット検索機能があります。これを開発したのは私ではありませんが、Drupalでの経験はあります。現在、ナビゲーションは選択にリンクを使用しており、以下のようになります(箇条書きの最初のレベルはリンクではありません)。ミキシングを選択すると、サウンドデザインと構成が期待どおりに消えます。
クライアントが望んでいるのは、ユーザーがドリルダウンしても(何も返さない場合でも)すべてのアイテムが表示され、選択可能なままであることです。一度に選択できるのは、カテゴリごとに1つのアイテムだけですが、ユーザーは「前に戻る」ことなくそれを行います。
アドバイスは大歓迎です。
admin/config/search/search_api
の下で、検索インデックスの[編集]をクリックし、[ファセット]を選択します。次に、アイテムの説明された動作が必要なすべてのファセットについて、次の手順に従います。
0
(ゼロ)に変更します。間違いなく、この入力フィールドは「最小ファセットアイテム数」と呼ばれるべきです…これで、一致しないすべてのファセットアイテムがファセットリストに残ります(カウントは0)。すでに述べたように、このようなファセットアイテムをクリックしても、検索結果は返されません。
このコメント の解決策はあなたの問題の解決策だと思います。 template.phpで、theme_facetapi_link_inactive
-関数:
function theme_facetapi_link_inactive($variables) {
// Builds accessible markup.
$accessible_vars = array(
'text' => $variables['text'],
'active' => FALSE,
);
$accessible_markup = theme('facetapi_accessible_markup', $accessible_vars);
// Sanitizes the link text if necessary.
$sanitize = empty($variables['options']['html']);
$variables['text'] = ($sanitize) ? check_plain($variables['text']) : $variables['text'];
// Adds count to link if one was passed.
if (isset($variables['count'])) {
$variables['text'] .= ' ' . theme('facetapi_count', $variables);
}
// Add functionality requested in #1669600.
if (!$variables['count'] && isset($variables['options']['query']['f'])) {
// We should be getting this from the url processor plugin, however we are
// making an assumption since this is in our custom theme.
$params = &$variables['options']['query']['f'];
// Capture the filter associated with this link and find the field alias.
$filter = end($params);
$field_alias = substr($filter, 0, strpos($filter, ':')) . ':';
// Iterate over params and strip out items that are using the same field
// alias as this filter. Do not strip out this filter.
foreach ($params as $key => $param) {
if (0 === strpos($param, $field_alias) && $param != $filter) {
unset($params[$key]);
}
}
}
// Resets link text, sets to options to HTML since we already sanitized the
// link text and are providing additional markup for accessibility.
$variables['text'] .= $accessible_markup;
$variables['options']['html'] = TRUE;
return theme_link($variables);
}
すべてのアイテムが表示され、選択可能なままであることを確認するには、グローバル設定検索が「OR」に設定されていることを確認してください。管理メニューから、[設定]> [検索API]> [インデックスの名前]の[編集]リンク>ファセット(タブ)> [ファセットの名前]の[ディスプレイの構成]リンクに移動し、[グローバル設定]で[演算子]または[OR]を選択します。 (「最小ファセット数」を1に維持)
すべてのファセットブロックが表示されたままになるようにするには、各ファセットブロックの構成ページで、ファセットが指定されたページに表示されていることを確認してください。 [構造]> [ブロック]> [ファセットブロックの名前]の[構成]リンクに移動します。例えば:
サービス
サービス/ *
ユーザーはドリルダウンできます。前に戻ることなく、ユーザーはファセットアイテムの選択を解除するだけで済みます。オプション「1つのアクティブなアイテムに制限する」は、私の経験に基づいて、現在設定されているとうまく機能しません。
これがこの問題に対する私の回避策です。コーディングは必要ありません。
検索がアクティブになっているので、他のファセットブロックもどこにでもあります。必要に応じて、作成したブロックをcssで非表示にできます。
grts
フレデリックwbase