it-swarm-vi.com

Làm thế nào để chủ đề các hình thức tiếp xúc?

Tôi đã tạo một chế độ xem với một số bộ lọc được hiển thị, nhưng nó trông khá xấu xí.

enter image description here

Tôi muốn cải thiện chủ đề, bao gồm gói toàn bộ trong một bộ trường cũng như nhóm một số yếu tố khác (như ghép nối các đầu vào được xuất bản và cập nhật), nhưng không chắc chắn về cách này.

Tôi đã cố gắng thay đổi biểu mẫu, nhưng nó dường như tồn tại mãi mãi và trình duyệt của tôi bị khóa, vì vậy tôi không thể dễ dàng tìm hiểu bất cứ điều gì về biểu mẫu theo cách đó.

Tôi cũng đã thử đặt biểu mẫu dưới dạng một trường con ở dạng khác, nhưng nhận được tất cả thông tin ID của biểu mẫu và cứ thế chứng tỏ có vấn đề (mặc dù, tôi đã có được kiểu dáng trường).

Bất cứ ai cũng có con trỏ?

Cập nhật:

Tôi đã sao chép mẫu từ mô-đun vào thư mục chủ đề của trang web của mình và bắt đầu.

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

Tôi dường như không thể tìm ra cách ghép nối các trường ngày - Tôi cần sửa đổi bằng cách nào đó các thuộc tính widget để tôi có thể gói chúng trong HTML (sử dụng hook_form_alter không hoạt động vì #prefix và #suffix được thêm vào $widget->widget vì vậy họ phá vỡ đầu ra)

12
HorusKol

Hình thức phơi bày của Theming Views rất khó vì nó không hoạt động giống như hầu hết các hình thức và sử dụng cơ chế nhãn riêng của nó. Vì vậy, bạn không thể đơn giản sử dụng form_alter móc để thêm #prefix#suffix đến các yếu tố. Nhưng sử dụng THEME_preprocess_views_exposed_form, bạn có thể tạo cơ chế hậu tố/tiền tố của riêng bạn:

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

và trong tệp mẫu

<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

Bạn có thể sao chép lượt xem-lộ-form.tpl.php từ trang web/tất cả/mô-đun/lượt xem/chủ đề vào đường dẫn chủ đề của bạn để ghi đè lên mẫu.

7
Adam S

Bạn nên xem xét những gì trong mục form['#theme']. Cách tốt hơn để làm điều này (tốt hơn var_dump()) sẽ sử dụng dsm($form) hoặc thậm chí kpr($form), các chức năng này sẽ có sẵn sau khi bạn cài đặt mô-đun phát (- http://drupal.org/project/devel ). form['#theme'] Phải là một mảng gồm khoảng 7 phần tử. Các phần tử này là tên của các móc chủ đề được gọi khi biểu mẫu này được hiển thị. bạn có thể sử dụng chúng để thực hiện theo cách riêng của bạn về chủ đề biểu mẫu.

Một trong những mục sẽ được gọi là views_exposed_form__VIEW_NAME__DISPLAY_ID.

Trong mô-đun của bạn (nếu bạn có) nên có một triển khai 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

Ngoài ra, hãy xem mô-đun Bộ lọc tiếp xúc tốt hơn . Bạn sẽ cần bản phát hành -dev để có tùy chọn bộ lọc có thể thu gọn, mặc dù tôi hy vọng sẽ sớm có bản phát hành 1.1 phù hợp ...

3
mikeker

Trong các tình huống trước đây, tôi đã sử dụng Hook_form_alter () để thêm tiền tố và hậu tố để tạo thành các phần tử để bọc chúng trong div mà sau đó có thể được tạo kiểu. Không chắc chắn về gói trong mặc dù.

ví dụ.

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

Mô-đun bố cục biểu mẫu hiển thị (D7) sẽ giúp bạn với các chủ đề biểu mẫu hiển thị.

1
skorzh

Sử dụng hook_form_FORM_ID_alter của Drupal để sửa đổi biểu mẫu. Đây là những gì đã giải quyết vấn đề của tôi về tiền tố ký tự £ cho trường giá của tôi (đặt cái này trong mô-đun tùy chỉnh của bạn):

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

trong trang chỉnh sửa của chế độ xem, chúng tôi có thể kiểm tra thông tin chủ đề (góc dưới bên phải). Nó cung cấp thông tin liên quan đến các tệp mẫu được sử dụng bởi Drupal để hiển thị các phần khác nhau của chế độ xem trên màn hình. Theo mặc định, các tệp mẫu được cung cấp bởi mô-đun khung nhìn (trong thư mục chủ đề của nó) được sử dụng, nhưng trong trường hợp, khi chúng tôi muốn sửa đổi cách hiển thị, chúng tôi có thể ghi đè các tệp mẫu đó bằng các tệp mẫu tùy chỉnh mà chúng tôi có thể đặt trong thư mục chủ đề tùy chỉnh của riêng mình (hoặc chủ đề sẽ được sử dụng để hiển thị chế độ xem này)

Thông tin chủ đề này cho chúng ta biết cách đặt tên tệp theo phân cấp (hoặc phạm vi ảnh hưởng của tệp mẫu mà bạn sẽ ghi đè lên các mẫu của chế độ xem.)

Bây giờ, thông tin chủ đề này có thể không hiển thị tất cả các tệp mẫu mà chế độ xem sử dụng để hiển thị chế độ xem cụ thể này.

vì vậy, hãy truy cập trang web/tất cả/mô-đun/lượt xem/chủ đề và sao chép khung nhìn-lộ-form.tpl.php (vì trong trường hợp này chúng tôi muốn ghi đè mặc định cho bộ lọc kết xuất!) và dán nó vào thư mục chủ đề của riêng bạn, bây giờ bạn phải làm theo cùng một phương pháp để kiểm soát hiệu ứng của tệp mẫu ghi đè này mà bạn đã đặt trong thư mục chủ đề của riêng mình bằng cách đổi tên cho phù hợp. ví dụ. lượt xem được hiển thị - biểu mẫu tên khung nhìn của bạn name.tpl.php (bạn sẽ hiểu danh pháp bằng cách xem chủ đề: thông tin trong trang chỉnh sửa của chế độ xem)

bây giờ bạn có thể thêm css vào các widget riêng lẻ (được tạo bởi trình xử lý bộ lọc) trong tệp mẫu này và các cài đặt đó sẽ được áp dụng cho các bộ lọc.

truy cập http://eureka.ykyuen.info/2011/07/25/drupal-theme-the-exposed-filter-in-view/

0
dresh