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


12

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

nhập mô tả hình ảnh ở đây

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->widgetchúng phá vỡ đầu ra)

Câu trả lời:


22

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 một form_altercái móc để thêm #prefix#suffixcác yếu tố. Nhưng bằng cách 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>

7

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.


Bạn cũng có thể ghi đè cho các chế độ xem cụ thể chỉ bằng các mẫu như views-exposed-form--view_id.tpl.phphoặc views-exposed-form--view_id--display_id.tpl.php, thông tin thêm
user56reinstatemonica8

3

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 đóng mở, mặc dù tôi hy vọng sẽ sớm có bản phát hành 1.1 phù hợp ...


3

Bạn nên xem xét những gì trong các form['#theme']mục. Cách tốt hơn để làm điều này (tốt hơn var_dump()) sẽ được 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']nên là một mảng gồm khoảng 7 yếu 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 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";
}

2

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

1

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


0

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 Drupal sử dụng để 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 (bê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 đè lên 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 bên trong thư mục chủ đề tùy chỉnh của riêng bạn (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ụ: dạng xem được hiển thị - khung nhìn tên khung của bạn.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/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.