2010-02-12 6 views
0

Je veux dupliquer le champ de recherche par défaut et le placer entre quelques blocs sur ma barre latérale gauche: il apparaîtrait donc deux fois sur chaque page (haut là où il est déjà et dans la barre latérale gauche).Drupal: Dupliquer le bloc de recherche?

Existe-t-il un moyen facile de le cloner et de s'assurer que les ID ne sont pas dupliqués?

Répondre

6

bloc Ajouter avec filtre php:

print drupal_get_form('search_block_form'); 


ou imprimer dans page.tpl.php, exemple du thème Zen:

<?php if ($search_box): ?> 
    <div id="search-box"> 
    <?php print $search_box; ?> 
    </div> <!-- /#search-box --> 
<?php endif; ?> 
+0

Comment pourrais-je implémenter ceci si j'ai déjà des blocs existants générés par 'echo $ left;'? Comme indiqué précédemment, je le veux entre les blocs. Autant que je sache, je ne peux pas intégrer le côté serveur dans les blocs. –

+0

Créer (ajouter) un nouveau bloc! et insérer le code ... – Nikit

+0

Eh bien, il ne semble pas le générer car il n'est probablement pas défini à ce moment-là. –

-1

éditez le module modules/search/search.module le funcion search_block. ajouter tout autant blocs de recherche que vous voulez .: à la place:

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

Je pense que cela fonctionnerait:

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

Ne jamais éditer des modules, utiliser des crochets, des thèmes, etc ... Si aucun moyen de résoudre le problème, téléchargez sur les correctifs drupal.org - il est recommandé, mais pas dans la question actuelle. – Nikit

0

J'ai dû utiliser un autre module pour cela et l'activer.

+0

De quel module s'agit-il? –

3

Pour Drupal 7, utilisez:

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

Cette méthode est pas très sûr, mais très rapide

  • Passer à la page "filtre PHP" sur "Tous les modules"
  • Créer un bloc dans le panneau d'administration.
  • Insérer dans le module de carrosserie.

    $ form_search = drupal_get_form ('search_block_form');
    impression rendu ($ form_search);

méthode correcte Plus:

1) initialiser une variable dans 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) Modification page.tpl dans votre thème. Ajout:

<?php if ($search_box): ?> 
    <div id="search-box"> 
    <?php print $search_box; ?> 
    </div> <!-- /#search-box --> 
<?php endif; ?>