2010-12-08 8 views
3

ファセット探索ブロックを。Drupalの:再使用のDrupalにおけるファセット検索モジュールは、(関連する現在の検索、ガイド付き検索、等)それぞれの新しいファセット検索環境のブロックのセットを作成

たとえば、次のようなファセット検索環境を作成する場合は、本は、あなたがbrowse/books/resultsとしてベースパスbrowse/booksスタートページでそれを設定することができます。ファセット検索ブロックを表示するには、その後、「のみ記載されているページに表示する」などのブロックのためのページ固有の表示設定と

browse/books 
browse/books/results* 

質問など、実際のページを設定したい:私は再したいです別のリンク先ページで 'ガイド付き検索'ブロックを使用します。ランディングページには利用可能な検索語句のリスト(sidebar-left)が表示され、残りのページに表示されます。

はこれまでのところ、単に「のみ記載されているページ上のショー」のリストに別のパスを追加しても効果はありません。ほとんど新しいカスタムブロックを追加し、次を使用して実際のブロックを表示しようとすることがあり得ることの

答えて

1

Drupalのベテランは、おそらく私のために、より良い、よりクリーンで正確なソリューションが、次の作品を提供することができるようになります。

$env = faceted_search_env_load ($fs_env_id); 
if (!$env->ready()) 
{ 
    $env->prepare(); 
    $env->execute(); 
} 
faceted_search_ui_add_css(); 
$env->ui_state['stage'] = 'results'; 
print faceted_search_ui_guided_block($env); 

$fs_env_id

は、私は、次のPHPを実行して新しいブロックを追加しましたあなたの設定に依存します。 APIによって生成されるリンクは、実際のファセット検索環境パスにリンクされます。

1

一つの方法:

<?php 
    $block = module_invoke('faceted_search_ui', 'block', 'view', 'xxxxx'); 
    print $block['content']; 
?> 

xxxxxは、例えば、ファセット検索環境のIDです1_guided 。問題は、function faceted_search_ui_block(...)を見ると、これまでのところしか得られないということです。ブロックは、環境が正しい状態にある場合にのみレンダリングされます。これは、関連付けられたパスで実行されている既知のファセット検索環境でない限り、ブロックされません。

これは可能ではないようです。

0

Hmm。私はこれは私がここで

またはnot-探していたものである場合、私が今使っているものですわかりません。私はそれがあなたの探しているものなのかどうかはわかりませんが、適用可能なページにファセットを描画できます。 (ファセットは上で表示するようになっている)

は、私にとってそれは、ビューを経由して、検索結果です。

私は1つのブロック内のすべての私の検索ファセットと、ブロックをレンダリングしています。

<div class="xfacet"> 
Something here 
<?php 
$block = module_invoke('facetapi', 'block_view', 'xxxx'); 
print render($block['content']); 
?> 
</div> 
<div class="xfacet"> 
Something there 
<?php 
$block = module_invoke('facetapi', 'block_view', 'xxxx'); 
print render($block['content']); 
?> 
</div> 

ブロックが表示される場所を制御するだけです。起動後にフォローアップを行います。

関連する問題