2010-02-12 3 views
0

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

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

ответ

6

Добавить блок с 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; ?> 
+0

Как бы это реализовать, хотя если у меня уже есть существующие блоки, генерируемые 'echo $ left;'? Как я уже говорил, я хочу это между блоками. Насколько я знаю, я не могу встроить серверную часть в блоки. –

+0

Создайте (добавьте) новый блок! и введите код ... – Nikit

+0

Ну, похоже, он не генерирует его, потому что он, вероятно, не определен в этот момент времени. –

-1

Редактировать модули модуля/search/search.module funcion 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; 
    } 
} 
+2

Никогда не редактируйте модули, используйте крючки, темы и т. Д. Если вы не можете исправить ошибку, загрузите ее на patup drupal.org - рекомендуется, но не в текущем вопросе. – Nikit

0

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

+0

Какой модуль это? –

3

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

<?php print render(drupal_get_form('search_block_form')); ?> 
0

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

  • Включение "PHP фильтр" на "Все модули" страницы
  • Создайте блок в панели администратора.
  • Вставить в модуль кузова.

    $ form_search = drupal_get_form ('search_block_form');
    print render ($ 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; ?> 
Смежные вопросы