Maruz kalan formun teması nasıl?


12

Bir dizi açık filtrelerle bir görünüm oluşturdum, ancak oldukça çirkin görünüyor.

resim açıklamasını buraya girin

Temayı iyileştirmek, her şeyi bir alan kümesine kaydırmak ve diğer bazı öğeleri gruplamak da dahil olmak üzere (yayınlanan ve güncellenen girdileri eşleştirmek gibi), ancak bunun nasıl yapılacağından emin değilim.

Formu var_dump yapmaya çalıştım, ancak sonsuza kadar devam ediyor gibi görünüyor ve tarayıcım kilitleniyor, bu yüzden form hakkında hiçbir şey bu şekilde kolayca öğrenemiyorum.

Ayrıca, formu başka bir biçimde bir alan kümesi çocuğu olarak koymaya çalıştım, ancak tüm form kimliği bilgilerini alıp, sorunlu olduğunu kanıtladım (ancak, alan kümesi stilini aldım).

Kimsenin işaretçisi var mı?

Güncelleme:

Şablondan modülden sitemin tema dizinine kopyaladım ve bir başlangıç ​​yaptım.

<fieldset>
    <legend>Filters</legend>

    <div class="views-exposed-form">
        <div class="views-exposed-widgets clear-block">
            <?php foreach($widgets as $id => $widget): ?>
                <div class="views-exposed-widget">
                    <?php if (!empty($widget->label)): ?>
                        <label for="<?php print $widget->id; ?>">
                            <?php print $widget->label; ?>
                        </label>
                    <?php endif; ?>
                    <?php if (!empty($widget->operator)): ?>
                        <div class="views-operator">
                            <?php print $widget->operator; ?>
                        </div>
                    <?php endif; ?>
                    <div class="views-widget">
                        <?php print $widget->widget; ?>
                    </div>
                </div>
            <?php endforeach; ?>
            <div class="views-exposed-widget">
                <?php print $button ?>
            </div>
        </div>
    </div>
</fieldset>

Nasıl tarih alanları eşleştirmek için anlamaya görünmüyor - Ben bir şekilde HTML özelliklerini sarmak için widget özelliklerini değiştirmek gerekiyor (hook_form_alter kullanarak çalışmıyor çünkü #prefix ve #suffix $widget->widgetböylece eklendi çıkışı kes)

Yanıtlar:


22

Tema Görünümlerinin açıkta kalan formu zordur çünkü çoğu form gibi davranmaz ve kendi etiket mekanizmasını kullanmaz. Yani, eleman form_altereklemek #prefixve #suffixelemanlara kanca takmak yeterli değildir . Ancak kullanarak THEME_preprocess_views_exposed_form, kendi sonek / önek mekanizmanızı oluşturabilirsiniz:

function THEME_preprocess_views_exposed_form(&$variables) {
  if ($variables['form']['#id'] == 'views-exposed-form-VIEWNAME-DISPLAYID') {
    foreach ($variables['widgets'] as $id => &$widget) {
      switch ($id) {
        case 'first_date_id':
          $widget->prefix = '<div class="date-widgets-wrapper">';
          break;
        case 'last_date_id':
          $widget->suffix = '</div>';
          break;
      }
    }
  }
}

ve şablon dosyasında

<fieldset>
    <legend>Filters</legend>

    <div class="views-exposed-form">
        <div class="views-exposed-widgets clear-block">
            <?php foreach($widgets as $id => $widget): ?>
                <?php if (!empty($widget->prefix)) print $widget->prefix; ?>
                <div class="views-exposed-widget">
                    <?php if (!empty($widget->label)): ?>
                        <label for="<?php print $widget->id; ?>">
                            <?php print $widget->label; ?>
                        </label>
                    <?php endif; ?>
                    <?php if (!empty($widget->operator)): ?>
                        <div class="views-operator">
                            <?php print $widget->operator; ?>
                        </div>
                    <?php endif; ?>
                    <div class="views-widget">
                        <?php print $widget->widget; ?>
                    </div>
                </div>
                <?php if (!empty($widget->suffix)) print $widget->suffix; ?>
            <?php endforeach; ?>
            <div class="views-exposed-widget">
                <?php print $button ?>
            </div>
        </div>
    </div>
</fieldset>

7

Şablonları geçersiz kılmak için views-exposed-form.tpl.php dosyasını sitesinden / all / module / views / temasından tema yolunuza kopyalayabilirsiniz.


Ayrıca sadece gibi desenleri ile belirli görünümleri için geçersiz kılabilirler views-exposed-form--view_id.tpl.phpya views-exposed-form--view_id--display_id.tpl.php, fazla bilgi
user56reinstatemonica8

3

Daha İyi Açık Filtreler modülüne de göz atın . Daraltılabilir filtreler seçeneğini almak için -dev sürümüne ihtiyacınız olacak, ancak yakında uygun bir 1.1 sürümü almayı umuyorum ...


3

Öğede neler olduğuna bakmalısınız form['#theme']. Bunu yapmanın daha iyi bir yolu (daha iyi var_dump()) kullanmak olabilir , dsm($form)hatta kpr($form)devel modülünü ( http://drupal.org/project/devel ) kurduktan sonra bu işlevler kullanılabilir olacaktır . form['#theme']yaklaşık 7 öğeden oluşan bir dizi olmalıdır. Bu öğeler, bu form oluşturulurken çağrılan tema kancalarının adlarıdır. bunları bir form teması için kendi yönteminizi uygulamak üzere kullanabilirsiniz.

Öğelerden biri aranacak views_exposed_form__VIEW_NAME__DISPLAY_ID.

Modülünüzde (varsa) hook_theme () uygulaması olmalıdır

function MYMODULE_theme($existing, $type, $theme, $path) {
  return array(
    'views_exposed_form__VIEW_NAME__DISPLAY_ID' => array(
      'function' => 'my_exposed_form_theme_function',
      'render element' => 'form',
    )
  );
}

// somwhere later in code

function my_exposed_form_theme_function($vaiables) {
  //$vaiables['form'] contains a form array
  //to display a form element call drupal_render($vaiables['form']['some element'])
  //don't forget to call drupal_render($form) 
  //after you are done with rendering individual elements
  //
  //you can use template_preprocess_views_exposed_form() from 
  // views/theme/theme.inc as an example

  return "concatenated results of multiple drupal_render() calls";
}

2

Önceki durumlarda, daha sonra stilize edilebilir div öğeleri sarmak için öğeleri oluşturmak için önek ve sonek eklemek için Hook_form_alter () kullandım. Alan kümelerinde kaydırma konusunda emin değilim.

Örneğin.

$form['submitted']['full_name']['#prefix'] = '<div class="background">';        
$form['submitted']['message']['#suffix'] = '</div>';

1

Formu değiştirmek için Drupal'ın hook_form_FORM_ID_alter komutunu kullanın. Fiyat alanına bir £ karakteri önek ekleme sorunumu çözen şey budur (bunu özel modülünüze koyun):

function THEME_form_views_exposed_form_alter(&$form, &$form_state, $form_id) {
   // check this is the right form
   if ($form['#theme'][0] == 'REPLACE_THIS') {
      // add the prefix
      $form['price']['min']['#prefix'] = "£";
   }
}


0

görünümün düzenleme sayfasında tema bilgilerini kontrol edebiliriz (sağ alt köşe). Drupal tarafından görünümün farklı bölümlerini ekranda görüntülemek için kullanılan şablon dosyaları hakkında bilgi verir. Varsayılan olarak, görünümler modülü tarafından sağlanan şablon dosyaları (tema klasörünün içinde) kullanılır, ancak bir görünümün görüntülenme biçimini değiştirmek istediğimiz durumda, bu şablon dosyalarını, kendi özel tema klasörünüz (veya bu görünümü görüntülemek için kullanılacak tema)

Bu tema bilgileri bize bir dosyanın hiyerarşiye (veya görünümlerin kendi şablonlarını geçersiz kılacağınız şablon dosyasının etkisi kapsamına) göre nasıl adlandırılacağını gösterir.

Artık bu tema bilgileri, görünümün bu belirli görünümü oluşturmak için kullandığı tüm şablon dosyalarını göstermeyebilir.

bu nedenle, sites / all / modules / views / temasına gidin ve views-exposed-form.tpl.php dosyasını kopyalayın (çünkü bu durumda filtreleri oluşturmak için varsayılanı geçersiz kılmak istiyoruz!) ve kendi tema klasörünüze yapıştırın, şimdi, kendi tema klasörünüze koyduğunuz bu geçersiz kılma şablon dosyasının etkisini buna göre yeniden adlandırarak kontrol etmek için aynı yöntemi izlemelisiniz. Örneğin, görünümler-maruz bırakılmış form - görünümünüzün ad bölmesi adı.tpl.php (temayı inceleyerek adlandırmayı anlayacaksınız: görünümün düzenleme sayfasındaki bilgiler)

artık bu şablon dosyasındaki ayrı pencere öğelerine (filtre işleyicileri tarafından oluşturulan) css ekleyebilirsiniz; bu ayarlar filtrelere uygulanır.

http://eureka.ykyuen.info/2011/07/25/drupal-theme-the-exposed-filter-in-views/ adresini ziyaret edin

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.