Drupal: дублирующий поисковый блок? - PullRequest
0 голосов
/ 12 февраля 2010

Я хочу продублировать окно поиска по умолчанию и поместить его между несколькими блоками на левой боковой панели: чтобы оно отображалось на каждой странице дважды (сверху, где оно уже есть, и на левой средней боковой панели).

Есть ли простой способ клонировать его, а затем убедиться, что идентификаторы не являются дубликатами?

Ответы [ 5 ]

6 голосов
/ 12 февраля 2010

Добавить блок с php фильтром:

print drupal_get_form('search_block_form');


или распечатайте его в page.tpl.php, пример из темы Zen:

<?php if ($search_box): ?>
  <div id="search-box">
  <?php print $search_box; ?>
  </div> <!-- /#search-box -->
<?php endif; ?>
3 голосов
/ 27 октября 2011

Для Drupal 7 используйте:

<?php print render(drupal_get_form('search_block_form')); ?>
0 голосов
/ 05 декабря 2016

Этот метод не очень безопасный, но очень быстрый

  • Включить «Фильтр PHP» на странице «Все модули»
  • Создать блок в админ-панели.
  • Вставить в корпус модуля.

    $ form_search = drupal_get_form ('search_block_form');
    печать визуализации ($ form_search);

Более правильный метод:

1) инициализировать переменную в template.php

<?php
function MYTHEME_preprocess_page(&$vars){
  $search_form = drupal_get_form('search_form');
  $search_form_box = drupal_render($search_form);
  $vars['search_box'] = $search_form_box;
} ?>

2) Редактирование page.tpl в вашей теме. Добавление:

<?php if ($search_box): ?>
  <div id="search-box">
  <?php print $search_box; ?>
  </div> <!-- /#search-box -->
<?php endif; ?>
0 голосов
/ 12 февраля 2010

Мне пришлось использовать другой модуль для этого и включить его.

0 голосов
/ 12 февраля 2010

редактировать модуль modules / search / search.module функция search_block. просто добавьте столько блоков поиска, сколько хотите. вместо:

function search_block($op = 'list', $delta = 0) {
  if ($op == 'list') {
    $blocks[0]['info'] = t('Search form');
    // Not worth caching.
    $blocks[0]['cache'] = BLOCK_NO_CACHE;
    return $blocks;
  }
  else if ($op == 'view' && user_access('search content')) {
    $block['content'] = drupal_get_form('search_block_form');
    $block['subject'] = t('Search');
    return $block;
  }
}

Я думаю, что это будет работать:

function search_block($op = 'list', $delta = 0) {
  if ($op == 'list') {
    $blocks[0]['info'] = t('Search form');
    // Not worth caching.
    $blocks[0]['cache'] = BLOCK_NO_CACHE;
    $blocks[1]['info'] = t('Search form');
    $blocks[1]['cache'] = BLOCK_NO_CACHE;
    return $blocks;
  }
  else if ($op == 'view' && user_access('search content')) {
    $block['content'] = drupal_get_form('search_block_form');
    $block['subject'] = t('Search');
    return $block;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...