Điểm:-1

Mối quan hệ thuật ngữ phân loại

lá cờ cn

Tôi có 3 thuật ngữ phân loại mà tôi muốn hiển thị dưới dạng bộ lọc nhưng tôi muốn sử dụng JavaScript để tắt bộ lọc khi bạn thực hiện lựa chọn trong các bộ lọc hiển thị có liên quan khác. Ví dụ:

phong cách Làm cho người mẫu
ô tô xe BMW 750i
xe tải Ford F-150

Nếu bạn chọn "Ô tô" thì "Sản xuất - Ford" và "Mẫu - F-150" sẽ bị tắt. Tôi hiện có mỗi mục được gán một lớp CSS thích hợp cho các móc nhưng tôi cần tìm cách thêm một lớp CSS cho từng mục "Tạo" và mục "Mô hình" sẽ khả dụng nếu người dùng chọn "Kiểu - Ô tô".

Tôi cần thực hiện việc này khi thay đổi trường biểu mẫu và không cần làm mới trang. Điều này có thể không?

Cảm ơn nhiều trong nâng cao.

beltouche avatar
lá cờ cn
Bạn có thể muốn xem xét một trong các mô-đun sau: https://www.drupal.org/project/cshs hoặc https://www.drupal.org/project/shs
Điểm:0
lá cờ cn

@beltouche, cảm ơn vì ý tưởng mô-đun. Cuối cùng, tôi đã đi theo một lộ trình khác vì tôi cần các bộ lọc cập nhật khi mỗi bộ lọc thay đổi. Về cơ bản, giống như một khía cạnh nhưng không cần tải lại trang. Tôi chắc rằng có một số cách để giải quyết vấn đề này và có thể là cách hiệu quả hơn nhưng đối với số lượng mặt hàng và chức năng tôi cần, cách này có vẻ hoạt động khá tốt.

Đối với bất kỳ ai khác đang muốn thử và đạt được điều tương tự, đây là các bước tôi đã thực hiện để đạt được những gì tôi cần.

  1. Tôi có một loại nội dung gọi là "khoảng không quảng cáo" chứa khoảng 700 mục nhập
  2. Có 3 trường trong "khoảng không quảng cáo" mà tôi muốn sử dụng để lọc theo
  3. Tôi đã tạo chế độ xem hiển thị nội dung thuộc loại "hàng tồn kho"
  4. Đặt tên cho chế độ xem "Tìm kiếm nhanh tùy chỉnh"
  5. Kiểm tra để "tạo một khối"
  6. Đặt chế độ xem thành "hiển thị Trường"
  7. Thêm 3 trường, style, make, model
  8. Đặt các mục trên mỗi trang thành "tất cả"
  9. Tạo các mẫu xem tùy chỉnh:
  10. lượt xem-xem-không được định dạng--tùy chỉnh-tìm kiếm nhanh
  11. lượt xem-xem-trường--tùy chỉnh-tìm kiếm nhanh
  12. lượt xem-xem-trường--kiểu trường
  13. lượt xem-xem-trường--trường-tạo
  14. view-view-field--field-model

Mã cho mỗi như sau: lượt xem-xem-không được định dạng--tùy chỉnh-tìm kiếm nhanh

{% cho hàng trong hàng %}
  {% nếu hàng|render|trim không trống %}
    {{ row.content }}
  {% endif %}
{% endfor %}

lượt xem-xem-trường--tùy chỉnh-tìm kiếm nhanh

{% set category_name = field.field_category.content|striptags %}
{% set category_id = field.field_category.content|preg_replace('(<a href="/taxonomy/term/)','$1') %}
{% set category_id = category_id|preg_replace('(" hreflang="vi">.*)','$1') %}

{% set make_name = field.field_make.content|striptags %}
{% set make_id = field.field_make.content|preg_replace('(<a href="/taxonomy/term/)','$1') %}
{% set make_id = make_id|preg_replace('(" hreflang="vi">.*)','$1') %}

{% set model_name = field.field_model.content|striptags %}
{% set model_id = field.field_model.content|preg_replace('(<a href="/taxonomy/term/)','$1') %}
{% set model_id = model_id|preg_replace('(" hreflang="vi">.*)','$1') %}

<div class="item" style="display: none;" data-category="{{ category_name|clean_class }}" data-make="{{ make_name|clean_class }}" data-model="{{ model_name|clean_class }}">

  <div class="-styles" data-category="{{category_name|clean_class }}">
    <label for="{{ category_name|clean_class }}" data-category="{{ category_name|clean_class }}" data-make="{{ make_name|clean_class }}" data-model="{{ model_name|clean_class } }">
      <input type="checkbox" name="{{category_name|trim }}" value="{{category_id|trim }}" class="{{category_name|trim|clean_class }}" id="{{category_name|trim |clean_class }}" />
    {{category_name|trim}}</label>
  </div>

  <div class="-makes" data-category="{{ category_name|clean_class }}" data-make="{{ make_name|clean_class }}">
    <label for="{{ make_name|clean_class }}" data-category="{{ category_name|clean_class }}" data-make="{{ make_name|clean_class }}" data-model="{{ model_name|clean_class } }">
      <input type="checkbox" name="{{ make_name|trim }}" value="{{ make_id|trim }}" class="{{ make_name|trim|clean_class }}" id="{{ make_name|trim |clean_class }}" />
    {{ make_name|trim }}</label>
  </div>

  <div class="-models" data-category="{{ category_name|clean_class }}" data-make="{{ make_name|clean_class }}" data-model="{{ model_name|clean_class }}">
    <label for="{{ model_name|clean_class }}" data-category="{{ category_name|clean_class }}" data-make="{{ make_name|clean_class }}" data-model="{{ model_name|clean_class } }">
      <input type="checkbox" name="{{ model_name|trim }}" value="{{ model_id|trim }}" class="{{ model_name|trim|clean_class }}" id="{{ model_name|trim |clean_class }}" />
    {{ model_name|trim }}</label>
  </div>

</div>

lượt xem-xem-trường--kiểu trường lượt xem-xem-trường--trường-tạo view-view-field--field-model

{{ đầu ra }}

Đặt khối trên một trang được bọc trong phần sau:

<div class="quickSearch hidden">
    <div class="quickSearch__content">
        <div class="quickSearch__filters">
            <div class="filters-widget -styles">
                <div class="filters-widget__items">
                    <div class="filters-widget__item">
                    <div class="filters-widget__header">
                        <h4>Styles</h4>
                        <i class="fas fa-expand-alt"></i>
                        <i class="far fa-compress-alt"></i>
                    </div>
                    <div class="filters-widget__copy">
                    </div>
                    </div>
                </div>
            </div>

            <div class="filters-widget -makes">
                <div class="filters-widget__items">
                    <div class="filters-widget__item">
                    <div class="filters-widget__header">
                        <h4>Makes</h4>
                        <i class="fas fa-expand-alt"></i>
                        <i class="far fa-compress-alt"></i>
                    </div>
                    <div class="filters-widget__copy">
                    </div>
                    </div>
                </div>
            </div>

            <div class="filters-widget -models">
                <div class="filters-widget__items">
                    <div class="filters-widget__item">
                    <div class="filters-widget__header">
                        <h4>Models</h4>
                        <i class="fas fa-expand-alt"></i>
                        <i class="far fa-compress-alt"></i>
                    </div>
                    <div class="filters-widget__copy">
                    </div>
                    </div>
                </div>
            </div>

            <div class="unsorted__styles" style="display: none;"></div>
            <div class="unsorted__makes" style="display: none;"></div>
            <div class="unsorted__models" style="display: none;"></div>

            <div data-drupal-selector="edit-actions" class="form-actions js-form-wrapper form-wrapper" id="edit-actions">
            <input data-drupal-selector="edit-submit-custom-search-inventory" type="submit" id="edit-submit-custom-search-inventory" value="Search" class="button js-form-submit form-submit -brand-01">
            </div>
            {{ drupal_entity('block', 'views_block__custom_quick_search_block_quick_search', check_access=false) }}
        </div>
        <div class="quickSearch__links">
            {{ drupal_entity('block_content', '8') }}
        </div>
    </div>
</div>

Phần còn lại của mã là JavaScript hoán đổi các trường

/**
     * Xóa vô hiệu hóa khỏi nhãn hiệu và kiểu máy trên trang nhất
     * Clone biến thành unsorted
     * Xóa các mục trùng lặp
     * Sắp xếp lại thành alpha desc và chuyển sang danh sách thả xuống
     */
 hàm loadMakes(show_styles){
  console.log(show_styles);
  nếu (show_styles == 'tất cả') {
    jQuery('.quickSearch .item .-makes').clone().prependTo('.quickSearch .unsorted__makes');
  }
  khác{
    jQuery('.quickSearch .item .-makes[data-category="'+show_styles+'"]').clone().prependTo('.quickSearch .unsorted__makes');
  }
  //
  // Loại bỏ các mục trùng lặp khỏi danh sách thả xuống.
  var làm = {};
  jQuery('.unsorted__makes .-makes').each(function() {
    var make = jQuery(this).attr('data-make');
    nếu (làm [làm])
      jQuery(this).remove();
    khác
      make[make] = true;
  });
  // Sắp xếp lại alpha và di chuyển xuống danh sách thả xuống.
  jQuery(hàm(){
    jQuery('.unsorted__makes .-makes').sort(sort_makes).clone().prependTo('.filters-widget.-makes .filters-widget__copy');
    hàm sort_makes(a, b){
      return(jQuery(b).data('make')) < (jQuery(a).data('make')) ? 1 : -1;
    }
  });
}

/**
 *
 * Sao chép các mô hình vào chưa sắp xếp
 * Xóa các mục trùng lặp
 * Sắp xếp lại thành alpha desc và chuyển sang danh sách thả xuống
 */
hàm loadModels(show_styles,show_makes){
  nếu (show_makes == 'tất cả') {
    jQuery('.quickSearch .item .-models').clone().prependTo('.quickSearch .unsorted__models');
  }
  khác{
    jQuery('.quickSearch .item .-models[data-category="'+show_styles+'"][data-make="'+show_makes+'"]').clone().prependTo('.quickSearch .unsorted__models') ;
  }
  //
  // Xóa các bản sao khỏi danh sách mô hình thả xuống.
  mô hình var = {};
  jQuery('.unsorted__models .-models').each(function() {
    var model = jQuery(this).attr('data-model');
    nếu (mô hình[mô hình])
      jQuery(this).remove();
    khác
      mô hình [mô hình] = true;
  });
  // Sắp xếp lại alpha và di chuyển xuống danh sách thả xuống.
  jQuery(hàm(){
    jQuery('.unsorted__models .-models').sort(sort_models).clone().prependTo('.filters-widget.-models .filters-widget__copy');
    hàm sort_models(a, b){
      return(jQuery(b).data('model')) < (jQuery(a).data('model')) ? 1 : -1;
    }
  });
}

/**
         * Di chuyển phong cách vào chưa sắp xếp
         * Xóa các mục trống
         * Xóa các mục trùng lặp
         * Sắp xếp lại thành alpha desc và chuyển sang danh sách thả xuống
         */
        // Xóa các mục trống
        jQuery('.quickSearch .item').each(function(){
            if( jQuery(this).data('make') == undefined || jQuery(this).data('make') == null || jQuery(this).data('make') == '') {
                jQuery(this).remove();
            }
        });
        jQuery('.quickSearch .item .-styles').prependTo('.quickSearch .unsorted__styles');
        // Loại bỏ các bản sao từ menu thả xuống kiểu.
        kiểu var = {};
        jQuery('.unsorted__styles .-styles').each(function() {
            var style = jQuery(this).attr('data-category');
            nếu (kiểu [kiểu])
                jQuery(this).remove();
            khác
                phong cách [phong cách] = true;
        });
        // Sắp xếp lại alpha và di chuyển xuống danh sách thả xuống.
        jQuery(hàm(){
            jQuery('.unsorted__styles .-styles').sort(sort_styles).prependTo('.filters-widget.-styles .filters-widget__copy');
            hàm sort_styles(a, b){
                return(jQuery(b).data('category')) < (jQuery(a).data('category')) ? 1 : -1;
            }
        });

        // Hiển thị và ẩn nhãn hiệu và kiểu mẫu dựa trên kiểu đã chọn
        var show_styles = '';
        jQuery('.-style input[type=checkbox]').change(function(){
            jQuery('.-styles input[type=checkbox]').not(this).prop('checked', false);
            jQuery('.-makes .filters-widget__copy, .-models .filters-widget__copy').html('');
            jQuery('.unsorted__makes, .unsorted__models').html('');
            show_styles = jQuery(this).parent().data('category');
            loadMakes(show_styles);
            loadModels(show_styles,show_styles);
        });

        // Hiển thị và ẩn nhãn hiệu và kiểu mẫu dựa trên kiểu đã chọn
        var show_makes = '';
        jQuery('.-makes').on('change', 'input[type=checkbox]', function(){
            jQuery('.-makes input[type=checkbox]').not(this).prop('checked', false);
            jQuery('.-models .filters-widget__copy').html('');
            jQuery('.unsorted__models').html('');
            show_styles = jQuery(this).parent().data('category');
            show_makes = jQuery(this).parent().data('make');
            loadModels(show_styles,show_makes);
        });

        // Nút gửi tìm kiếm nhanh
        jQuery('.quickSearch .form-submit').on('click', function(){
            style = jQuery('.-styles input:checked').val();
            make = jQuery('.-makes input:checked').val();
            models = jQuery('.-models input:checked').val();
            var quick_search_url = '';
            if( phong cách && !makes && !models ){
                quick_search_url = 'danh mục/'+kiểu dáng;
            }
            khác nếu ( kiểu && tạo && !model ){
                quick_search_url = 'danh mục/'+kiểu dáng;
                quick_search_url += '/make/'+make;
            }
            khác nếu (kiểu dáng && !makes && models ){
                quick_search_url = 'danh mục/'+kiểu dáng;
                quick_search_url += '/model/'+models;
            }
            khác nếu (kiểu && tạo && mô hình){
                quick_search_url = 'danh mục/'+kiểu dáng;
                quick_search_url += '/make/'+make;
                quick_search_url += '/model/'+models;
            }
            khác nếu ( !styles && tạo && !models ){
                quick_search_url += '/make/'+make;
            }
            khác nếu ( !styles && make && models ){
                quick_search_url += '/make/'+make;
                quick_search_url += '/model/'+models;
            }
            other if( !styles && !makes && models ){
                quick_search_url += '/model/'+models;
            }

            window.location.href = '/inventory-search/'+quick_search_url;
        });

        loadMakes('tất cả');
        loadModels('all','all');

    }

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.