Drupal: повторное использование граненых блоков поиска - PullRequest
3 голосов
/ 08 декабря 2010

Модуль фасетного поиска в Drupal создает набор блоков для каждой новой среды фасетного поиска (текущий поиск, управляемый поиск, связанный и т. Д.).

Если бы вы создали многогранную среду поиска, например, для книги, вы можете настроить его с базовым путем browse/books и стартовой страницей как browse/books/results. Чтобы отобразить ограненные блоки поиска, вы должны установить параметры видимости страницы для блока как «Показывать только на перечисленных страницах», а фактические страницы - как

.
browse/books
browse/books/results*

Вопрос : Я хотел бы повторно использовать блок «управляемого поиска» на другой целевой странице. На целевой странице должен отображаться список доступных условий поиска (sidebar-left) и показываться остальная часть страницы.

Пока просто добавление другого пути в список «показывать только на перечисленных страницах» не имеет никакого эффекта.

Ответы [ 3 ]

1 голос
/ 10 декабря 2010

Ветераны Drupal, скорее всего, смогут предложить лучшие, более чистые и правильные решения, но мне подходит следующее:

Я добавил новый блок, который запускает следующий PHP:

$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 зависит от вашей настройки. Как и ожидалось, сгенерированные API ссылки будут ссылаться на фактические пути среды поискового поиска.

1 голос
/ 09 декабря 2010

Один из способов почти получить это - добавить новый пользовательский блок, а затем попытаться отобразить фактический блок, используя следующую команду:

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

Где xxxxx - идентификатор среды граненого поиска,например 1_guided.Проблема в том, что взгляд на function faceted_search_ui_block(...) только покажет вам.Блок будет отображаться только в том случае, если среда находится в правильном состоянии, а это не так, если только это не известная многогранная среда поиска, предположительно работающая по связанному пути, то это не так.возможно.

0 голосов
/ 27 апреля 2014

Хм.Я не уверен, что это то, что я искал или нет -

Вот что я сейчас использую.Я не знаю, если это именно то, что вы ищете, но вы можете отобразить фасеты на любой странице, которая применима.(фасеты должны отображаться)

Для меня это результаты поиска по представлениям.

Я рендеринг блока, все мои фасеты поиска в одном блоке.

<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>

Я просто контролирую, где отображается блок. После запуска я получу ссылку.

...