Drupal 7 Tìm kiếm theo khía cạnh: Luôn hiển thị các khía cạnh


7

Tôi có một công việc tìm kiếm theo khía cạnh sử dụng searchapi, facetapi và entityapi. Tôi không phải là người đã phát triển nó, nhưng tôi có một số kinh nghiệm với Drupal. Cho đến bây giờ, điều hướng sử dụng các liên kết để lựa chọn và trông giống như bên dưới (cấp điểm đầu tiên không phải là liên kết). Khi trộn được chọn thiết kế âm thanh và thành phần biến mất như mong đợi.

Những gì khách hàng muốn là cho tất cả các mục vẫn hiển thị và có thể lựa chọn khi người dùng thực hiện (ngay cả khi nó không trả về gì). Mỗi lần chỉ có một mục cho mỗi danh mục, nhưng người dùng sẽ có thể làm điều đó mà không phải 'quay lại'.
Bất cứ lời khuyên nào cũng đươc đánh giá cao.

  • Chúng ta làm gì_
    • Trộn (18)
    • Thiết kế âm thanh (11)
    • Thành phần (6)
  • Chúng ta là ai_
    • Joe Schmoe (17)
    • Jeff Bleck (14)
    • David Berry (4)
  • Composftime liên kết
    • Jim Carey (3)
    • Tony Maroni (2)

Câu trả lời:


8

Bên dưới admin/config/search/search_apinhấp vào, hãy chỉnh sửa và chỉnh sửa trên mục lục tìm kiếm của bạn. Sau đó, đối với tất cả các khía cạnh cần hành vi được mô tả cho các mục của họ, hãy làm theo các bước sau:

  1. Nhấp vào cấu hình màn hình hiển thị.
  2. Trong phần Cài đặt toàn cầu của Wikipedia, hãy thay đổi số khía cạnh Tối thiểu của Số lượng thành số 0(0). Có thể cho rằng trường đầu vào này tốt hơn nên được gọi là Mục tối thiểu mặt hàng đếm Số lượt
  3. Cấu hình lưu lại.

Bây giờ tất cả các mục khía cạnh không phù hợp sẽ vẫn còn trong danh sách khía cạnh của bạn (với số không). Như bạn đã đề cập, nhấp vào một mục khía cạnh như vậy sẽ không trả lại kết quả tìm kiếm nữa.


Hmm, trong cài đặt của tôi, danh sách chỉ bị thu hẹp (không nói chỉ còn 1 mục) khi nhấp vào một mục ...
Michiel

@Michiel Hmm, thật lạ. Tôi vừa thử lại trên trang web của mình và nó hoạt động mà không gặp vấn đề gì. Ngay cả khi tôi thay đổi khía cạnh tối thiểu, số lượng của hai khía cạnh khác nhau để 0nó hoạt động: khi chọn một mục của khía cạnh thứ nhất, các mục của khía cạnh thứ hai được cập nhật nhưng chúng không bao giờ biến mất. Thay vào đó, tất cả các mặt hàng đã biến mất trước đây giờ đều có điểm đánh dấu (0).
Chriki

Cảm ơn vì đã trả lời! Trên cài đặt của tôi chỉ còn 1 mục nếu tôi nhấp vào mục đó ... Bạn có biết nguyên nhân của hành vi lạ này là gì không?
Michiel

@Michiel Tôi sợ, tôi không biết :-(
Chriki

1
Vâng, xin lỗi vì đã nhầm lẫn trong bình luận đầu tiên của tôi. Trên thực tế, hành vi mà bạn đang tìm kiếm công việc cho tôi (nghĩa là giữ tất cả các mục khía cạnh hiển thị mọi lúc). Tôi chỉ muốn chỉ ra rằng hành vi mong muốn cũng có tác dụng với tôi trên nhiều khía cạnh.
Chriki

1

Tôi nghĩ rằng giải pháp trong bình luận này là giải pháp cho vấn đề của bạn. Trong template.php của bạn, ghi đè lên theme_facetapi_link_inactive-feft:

function theme_facetapi_link_inactive($variables) {
  // Builds accessible markup.
  $accessible_vars = array(
    'text' => $variables['text'],
    'active' => FALSE,
  );
  $accessible_markup = theme('facetapi_accessible_markup', $accessible_vars);

  // Sanitizes the link text if necessary.
  $sanitize = empty($variables['options']['html']);
  $variables['text'] = ($sanitize) ? check_plain($variables['text']) : $variables['text'];

  // Adds count to link if one was passed.
  if (isset($variables['count'])) {
    $variables['text'] .= ' ' . theme('facetapi_count', $variables);
  }

  // Add functionality requested in #1669600.
  if (!$variables['count'] && isset($variables['options']['query']['f'])) {
    // We should be getting this from the url processor plugin, however we are
    // making an assumption since this is in our custom theme.
    $params = &$variables['options']['query']['f'];

    // Capture the filter associated with this link and find the field alias.
    $filter = end($params);
    $field_alias = substr($filter, 0, strpos($filter, ':')) . ':';

    // Iterate over params and strip out items that are using the same field
    // alias as this filter. Do not strip out this filter.
    foreach ($params as $key => $param) {
      if (0 === strpos($param, $field_alias) && $param != $filter) {
        unset($params[$key]);
      }
    }
  }

  // Resets link text, sets to options to HTML since we already sanitized the
  // link text and are providing additional markup for accessibility.
  $variables['text'] .= $accessible_markup;
  $variables['options']['html'] = TRUE;
  return theme_link($variables);
}

0

Đây là công việc của tôi cho vấn đề này, không cần mã hóa!

  • tạo chế độ xem dựa trên chỉ mục tìm kiếm của bạn
  • thêm một khối khía cạnh vào chế độ xem và định cấu hình nó để sử dụng trường khía cạnh bạn muốn, nếu bạn có cây phân loại, bạn có thể sử dụng trường tất cả các thuật ngữ cha mẹ để chỉ hiển thị toplevel.
  • cấu hình khối để nó được hiển thị trên trang web của bạn

bây giờ bạn cũng có các khối khía cạnh khác ở mọi nơi vì tìm kiếm được kích hoạt, nếu bạn muốn bạn có thể ẩn khối đã tạo bằng css.

lưới

wederic wbase


Tôi không biết tại sao nhưng trong trường hợp của tôi, khi tôi chọn một trường để sử dụng với khối khía cạnh, nó chỉ hiển thị một vài khía cạnh. Ive đặt chế độ xem để hiển thị tất cả các mục và cũng không có giới hạn trong cấu hình khía cạnh
Math666

0

Để đảm bảo rằng tất cả các mục vẫn hiển thị và có thể chọn, hãy đảm bảo rằng tìm kiếm Cài đặt chung được đặt thành "HOẶC". Từ menu quản trị, đi đến Cấu hình> API tìm kiếm> [tên chỉ mục] liên kết "chỉnh sửa"> Khuôn mặt (tab)> [tên của khía cạnh] "cấu hình hiển thị" liên kết> Trong "Cài đặt toàn cầu", chọn Toán tử "HOẶC". (Giữ "Số lượng mặt tối thiểu" ở mức 1)

Để đảm bảo rằng tất cả các khối khía cạnh vẫn hiển thị, hãy đảm bảo rằng trên trang cấu hình của mỗi khối mặt được hiển thị trên các trang được chỉ định. Đi đến Cấu trúc> Khối> [tên của khối khía cạnh] liên kết "cấu hình". Ví dụ:

dịch vụ dịch
vụ / *

Người dùng có thể truy sâu xuống. Nếu không quay trở lại, người dùng sẽ chỉ cần bỏ chọn một mặt hàng. Tùy chọn "Giới hạn cho một mục hoạt động" hiện không hoạt động tốt khi được định cấu hình, dựa trên kinh nghiệm của tôi.

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.