web-dev-qa-db-ja.com

ファセットAPI-コールバック関数を介してファセットアイテムを書き換えます

Apache Solrファセットブロックのリンクテキストを書き直そうとしています。具体的には、バンドル/コンテンツタイプでドリルダウンします。デフォルトでは、ブロックには人間が読めるコンテンツタイプの名前が表示されます。名前を編集するだけでサイトの他のものが影響を受けるので、避けたいです。

そのため、ブロックでは、「article」コンテンツタイプの「Article」ではなく、「Music Videos」などのカスタムテキストを使用します。

ファセットAPIボーナス によって作成されたフックを使用して、コールバック関数を介してファセットアイテムを書き換えたいと思っていましたが、コードを機能させるのに苦労しています。

here の資料とFacet APIボーナスモジュールのreadmeに基づいて、私が持っているものを以下に示します。

function custom_module_facet_items_alter(&$build, &$settings)
 {
  if ($settings->facet == "apachesolr@solr:block:bundle") {
   {
    foreach ($build as $key => $item)
     {
      switch ($key)
      {
        case 'article':
          $build['article']['#markup'] = 'Music Videos';
          break;
      }
     }
   }
 }

Drupal 7.27、Facet API 7.x-1.5およびFacet API Bonus 7.x-1.1を使用しています。

助けてくれてありがとう。

3
brutal-digital
  1. ファセットに対してこのフィルターが選択されていることを確認してください: "コールバック関数を介してファセット項目を書き換えます" admin/config/search/apachesolr/settings>ファセット>あなたのファセット>フィルターを構成> [x]コールバック関数を介してファセット項目を書き換えます
  2. フックが実装されていることを確認するには、drushおよびdevelモジュールを使用します。
 drushフックfacet_items_alter 
表示するフック実装の番号を入力してください。
 [0]:キャンセル
 [1]:my_module_name 

上記のようなものが表示されたら、フックが実装されています。実装コードを表示するには、数値(この例では1)を入力します。

1
Soroush Zo