it-swarm-id.com

Bagaimana cara tema tampilan terbuka?

Saya telah membuat tampilan dengan sejumlah filter terbuka, tetapi terlihat sangat jelek.

enter image description here

Saya ingin memperbaiki tema, termasuk membungkus semuanya dalam suatu fieldset serta mengelompokkan beberapa elemen lainnya (seperti memasangkan input yang diterbitkan dan diperbarui), tetapi tidak yakin bagaimana caranya.

Saya mencoba var_dump formulir, tetapi tampaknya berjalan selamanya dan browser saya terkunci, jadi saya tidak dapat dengan mudah mempelajari apa pun tentang formulir itu.

Saya juga mencoba meletakkan formulir sebagai anak fieldset di formulir lain, tetapi mendapatkan semua informasi ID formulir dan sebagainya terbukti bermasalah (walaupun, saya memang mendapatkan style fieldset).

Adakah yang punya petunjuk?

Memperbarui:

Saya menyalin template dari modul ke direktori tema situs saya, dan memulai.

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

Saya tidak bisa menemukan cara memasangkan bidang tanggal - Saya perlu memodifikasi properti widget agar saya dapat membungkusnya dalam HTML (menggunakan hook_form_alter tidak berfungsi karena #prefix dan #suffix ditambahkan ke $widget->widget sehingga mereka merusak output)

12
HorusKol

Bentuk terbuka Tampilan Mereka sulit karena tidak berperilaku seperti kebanyakan bentuk dan menggunakan mekanisme label sendiri. Jadi, Anda tidak bisa hanya menggunakan form_alter kait untuk menambahkan #prefix dan #suffix ke elemen. Tetapi menggunakan THEME_preprocess_views_exposed_form, Anda dapat membuat mekanisme akhiran/awalan sendiri:

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

dan di file template

<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>
22
Pierre Buyle

Anda dapat menyalin views-exposed-form.tpl.php dari situs/semua/modul/tampilan/tema ke jalur tema Anda untuk mengganti template.

7
Adam S

Anda harus melihat apa yang ada dalam item form['#theme']. Cara yang lebih baik untuk melakukan ini (lebih baik daripada var_dump()) akan menggunakan dsm($form) atau bahkan kpr($form), fungsi-fungsi ini akan tersedia setelah Anda menginstal modul devel (- http://drupal.org/project/devel ). form['#theme'] Harus berupa array dengan sekitar 7 elemen. Elemen-elemen ini adalah nama-nama kait tema yang dipanggil saat formulir ini diberikan. Anda dapat menggunakannya untuk menerapkan cara Anda sendiri untuk menentukan tema suatu formulir.

Salah satu item akan disebut views_exposed_form__VIEW_NAME__DISPLAY_ID.

Dalam modul Anda (jika Anda memilikinya) harus ada implementasi hook_theme ()

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";
}
3
ihor marusyk

Lihat juga modul Better Exposed Filters . Anda akan memerlukan rilis -dev untuk mendapatkan opsi filter yang dapat dilipat, meskipun saya berharap untuk mendapatkan rilis 1.1 yang tepat segera ...

3
mikeker

Dalam situasi sebelumnya saya telah menggunakan Hook_form_alter () untuk menambahkan awalan dan akhiran untuk membentuk elemen untuk membungkusnya dalam div yang kemudian dapat ditata. Namun tidak yakin tentang pembungkus di fieldsets.

misalnya.

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

Tampilan tata letak formulir terbuka (D7) modul akan membantu Anda dengan tampilan tema bentuk terbuka.

1
skorzh

Gunakan hook_form_FORM_ID_alter Drupal untuk memodifikasi formulir. Inilah yang memecahkan masalah saya tentang awalan karakter £ ke bidang harga saya (taruh ini di modul khusus Anda):

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'] = "£";
   }
}
1
jackocnr

di halaman edit tampilan kita dapat memeriksa informasi tema (sudut kanan bawah). Ini memberikan informasi mengenai file template yang digunakan oleh Drupal untuk membuat bagian-bagian berbeda dari tampilan di layar. Secara default file template yang disediakan oleh modul views (di dalam folder temanya) digunakan, tetapi jika kami ingin mengubah cara tampilan ditampilkan, kami dapat mengganti file template tersebut dengan file template khusus yang dapat kami tempatkan di dalam folder tema khusus kami (atau tema yang akan digunakan untuk menampilkan tampilan ini)

Informasi tema ini menunjukkan kepada kita bagaimana memberi nama file sesuai dengan hierarki (atau cakupan efek file templat yang akan Anda timpa templat templat tampilan sendiri.)

Sekarang, informasi tema ini mungkin tidak memperlihatkan semua file templat yang digunakan tampilan untuk merender tampilan spesifik ini.

jadi, buka situs/semua/modul/tampilan/tema dan salin views-exposed-form.tpl.php (karena dalam hal ini kami ingin mengganti default untuk rendering filter!) dan tempel di dalam folder tema Anda sendiri, sekarang Anda harus mengikuti metode yang sama untuk mengontrol efek dari file template utama ini yang telah Anda masukkan ke dalam folder tema Anda sendiri dengan mengganti nama sesuai. misalnya views-exposed-form - view name-pane name.tpl.php (Anda akan memahami nomenklatur dengan melihat tema: informasi di halaman edit tampilan)

sekarang Anda dapat menambahkan css ke masing-masing widget (dihasilkan oleh penangan filter) dalam file template ini dan pengaturan itu akan diterapkan pada filter.

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

0
dresh