Bagaimana saya bisa memasukkan kotak pencarian di page.tpl?


27

Bagaimana saya bisa memasukkan kotak pencarian (blok pencarian) di tema saya secara terprogram?

Jawaban:


39

Menurut tag Anda, Anda mencari solusi D7. The Drupal 7 page.tpl.php tidak memiliki variabel search_box $ lagi. Namun Anda dapat menambahkannya dalam fungsi preproses di template.php Anda:

<?php
/*
 *  Preprocess page.tpl.php to inject the $search_box variable back into D7.
 */
function MYTHEME_preprocess_page(&$variables){
  $search_box = drupal_render(drupal_get_form('search_form'));
  $variables['search_box'] = $search_box;
}

Maka Anda hanya perlu mencetak variabel di page.tpl.php Anda:

<?php print $search_box; ?>

Anda juga bisa menggunakan module_invoke, tetapi Anda seharusnya tidak memiliki logika php dalam file templat:

<?php
  $block = module_invoke('search', 'block_view', 'search');
  print render($block); 
?>

Terima kasih, Di mana saya harus meletakkan blok kode ketiga? (Langsung di page.tpl.php ATAU di template.php dan kemudian mengaksesnya dari page.tpl?)
Nick.h

1
Blok ketiga harus ditempatkan di page.tpl.php. Sebagai steno, Anda juga dapat menggunakan: "print render (module_invoke ('search', 'block_view', 'search'));"
Bala Clark

2
Untuk menghindari "Peringatan ketat: Hanya variabel yang harus dilewatkan dengan referensi di [theme-name] _preprocess_page () (baris xx dari [theme-name] /template.php)." peringatan theme_preprocess_page Anda harus sebagai berikut: / * * Menerapkan theme_preprocess_page (). * / function [theme-name] _preprocess_page (& $ variabel) {$ search_form = drupal_get_form ('search_form'); $ search_box = drupal_render ($ search_form); $ variable ['search_box'] = $ search_box; }
kbrinner

7

Sebaliknya, lakukan dengan cara yang benar dan gunakan blok.
Elemen hardcoding di dalam page.tpl, adalah IMHO salah satu hal yang masih mengambang sejak "masa lalu yang indah."

Gunakan sistem blok sebagai gantinya; itu memberi Anda jauh lebih banyak fleksibilitas di ujung jalan. Anda mungkin juga ingin memeriksa modul Blockify .

Modul ini memperlihatkan sejumlah elemen Drupal inti sebagai blok.



1

Anda juga dapat menggunakan sistem blok dan menambahkan blok formulir pencarian ke halaman di

Admin> Struktur> Blok: Formulir pencarian

mis. untuk menempatkan di menu navigasi, letakkan blok di wilayah tersebut

"Navigasi"

lalu sejajarkan dengan CSS.

mis. untuk meletakkan di sebelah kanan menu navigasi:

#navigation #block-search-form{
  position: absolute;
  right: 10px;
  top: 0;
}

Ini akan berhasil, tetapi pertanyaannya merujuk pada solusi yang terprogram.
timofey.com
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.