Page.tpl içine nasıl arama kutusu ekleyebilirim?


27

Temamıma arama kutusu (arama bloğu) programlı olarak nasıl ekleyebilirim?

Yanıtlar:


39

Etikete göre, bir D7 çözümü arıyorsun. Drupal 7 page.tpl.php artık $ search_box değişkeni yoktur. Bununla birlikte, template.php dosyasındaki ön işleme işlevine ekleyebilirsiniz:

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

O zaman değişkeni page.tpl.php dosyasında yazdırmanız yeterlidir:

<?php print $search_box; ?>

Module_invoke öğesini de kullanabilirsiniz, ancak şablon dosyalarında php mantığı olmamalıdır:

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

Teşekkürler, Üçüncü kod bloğunu nereye yerleştirmeliyim? (Doğrudan page.tpl.php VEYA template.php içinde ve daha sonra page.tpl adresinden erişmeliyim?)
Nick.h

1
Üçüncü blok, page.tpl.php içine yerleştirilmelidir. Kısaca, şunu da kullanabilirsiniz: "print render (module_invoke ('search', 'block_view', 'search'));"
Bala Clark

2
"Sıkı uyarı: Yalnızca değişkenler [tema-adı] _preprocess_page () içindeki referansla iletilmelidir ([tema-adı] /template.php'nin xx satırı)." senin theme_preprocess_page uyarısı aşağıdaki gibi olmalı: / * * theme_preprocess_page () öğesini uygular. * / function [tema adı] _preprocess_page (& $ değişkenleri) {$ search_form = drupal_get_form ('search_form'); $ search_box = drupal_render ($ search_form); $ değişkenleri ['search_box'] = $ search_box; }
kbrinner

7

Bunun yerine doğru şekilde yapın ve bloğu kullanın.
Page.tpl içindeki hardcoding unsurları IMHO, "eski güzel günlerden" beri hala yüzen şeylerden biri.

Bunun yerine blok sistemini kullanın; yol boyunca daha fazla esneklik sağlar. Blockify modülünü de kontrol etmek isteyebilirsiniz .

Bu modül bir takım çekirdek Drupal elemanlarını blok olarak ortaya koymaktadır.



1

Ayrıca blok sistemini kullanabilir ve arama formu bloğunu sayfadaki sayfaya ekleyebilirsiniz.

Yönetici> Yapı> Bloklar: Arama formu

örneğin, navigasyon menüsüne yerleştirmek için bloğu bölgeye yerleştirin.

"Navigasyon"

ve sonra CSS ile hizalayın.

örneğin navigasyon menüsünün sağına koymak için:

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

Bu işe yarayacak, ancak soru programlı bir çözüme atıfta bulunmaktı.
timofey.com
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.