2011-09-08 33 views
6

im bằng Drupal 7 và tôi muốn thêm bộ lọc mới trong chế độ xem.Thêm bộ lọc tùy chỉnh vào chế độ xem trong Drupal 7

Tôi có bảng "nhấp chuột" tùy chỉnh với hai trường; nid và clicks_left.

Bộ lọc chỉ nên chứa hộp kiểm "Chỉ hiển thị các nút có nhấp chuột trái". Vì vậy, các bộ lọc nên tham gia nút và nhấp chuột vào nid ..

Tôi đã đọc giống như hàng ngàn trang của các bộ lọc tùy chỉnh nhưng không thể lấy nó để làm việc =)

Xin vui lòng, ai đó có thể chỉ cho tôi một ví dụ làm việc quá Tôi hiểu?

Tôi đã đến nay bộ lọc được hiển thị bên dưới bộ lọc nhưng tôi cần phải thêm gì để thực hiện việc tham gia và nhận hộp kiểm? Mã liên quan dưới đây:

FILE clicks_views.inc:

function clicks_views_data() { 
    $data = array(); 

    $data['clicks']['clicks_filter'] = array(
    'group' => t('Clicks'), 
    'title' => t('Clicks left'), 
    'help' => t('Filter any Views based on clicks left'), 
    'filter' => array(
    'field' => 'clicks_left', 
     'handler' => 'clicks_handler_filter', 
    ), 
); 

return $data; 
} 

FILE clicks_handler_filter.inc:

<?php 
    class clicks_handler_filter extends views_handler_filter { 

    ??? 

}; 

Tôi biết cả hai chức năng là sai;)

+0

Tôi tìm thấy giải pháp ở đây: http://oliverhuynh.wordpress.com/2011/06/23/custom-views-handler-drupal-7-template/ – tomasbedrich

Trả lời

0

Trên thực tế, nếu giá trị của bạn trong các bảng của bạn, nhấp chuột là số bạn không cần phải tạo trình xử lý của riêng mình, bạn có thể sử dụng mặc định từ Views views_handler_filter_numeric.

Bạn có thể xem tất cả các trình xử lý đã tồn tại trong Chế độ xem handlers.

+0

Yvan, ok .. nhưng ở đâu/làm cách nào để thêm hộp kiểm của tôi? Khi tôi sử dụng bộ lọc ngay bây giờ, không có gì bật lên .. Và làm cách nào để tôi tham gia? – Per

5

Ok, tôi đã tìm được giải pháp. Đối với bất cứ ai cần nó:

Trong clicks.module

function clicks_views_api() { 
    return array(
    'api' => 2, 
    'path' => drupal_get_path('module', 'clicks') . '/includes' 
); 
} 

Trong clicks.views.inc

function clicks_views_handlers() { 
    return array(
    'info' => array(
     'path' => drupal_get_path('module', 'clicks') . '/includes', // path to view files 
    ), 
    'handlers' => array(
     // register our custom filter, with the class/file name and parent class 
     'clicks_handler_filter' => array(
     'parent' => 'views_handler_filter', 
    ) 
    ), 
); 
} 

function clicks_views_data() { 
    $data = array(); 

    if(module_exists('clicks')) { 
    $data['node']['clicks'] = array(
     'group' => t('Clicks'), 
     'title' => t('Clicks left'), 
     'help' => t('Filter any Views based on clicks left'), 
     'filter' => array(
     'handler' => 'clicks_handler_filter', 
    ), 
    ); 
    } 
    return $data; 
} 

Trong clicks_handler_filter.inc

class clicks_handler_filter extends views_handler_filter { 

    function admin_summary() { } 
    function operator_form() { } 
    function query() { 
    $table = $this->ensure_my_table(); 
    $join = new views_join(); 
    $join->construct('clicks', $this->table_alias, 'nid', 'nid'); 
    $this->query->ensure_table('clicks', $this->relationship, $join); 
    $this->query->add_where($this->options['group'], "clicks.clicks_left", 0, ">"); 
} 

} 

này mang lại cho tôi một khả năng để thêm bộ lọc "nhấp chuột" nếu được bật ẩn tất cả các kết quả không có nhấp chuột trái (clicks_left> 0)

Các vấn đề liên quan