Tôi cần tạo một số khía cạnh / bộ lọc tùy chỉnh cho tìm kiếm của mình. Tôi đã cài đặt API Facet ; có ai có kinh nghiệm về điều này? Lý tưởng nhất là tôi sẽ sử dụng Apache Solr Facet Builder , nhưng điều này dường như chỉ được hỗ trợ trong D6.
Tôi cần tạo một số khía cạnh / bộ lọc tùy chỉnh cho tìm kiếm của mình. Tôi đã cài đặt API Facet ; có ai có kinh nghiệm về điều này? Lý tưởng nhất là tôi sẽ sử dụng Apache Solr Facet Builder , nhưng điều này dường như chỉ được hỗ trợ trong D6.
Câu trả lời:
Các Apache Solr Tìm kiếm tích hợp mô-đun cung cấp cho bạn tích hợp Solr rất tốt và nó đang tích cực phát triển và cập nhật. Với cài đặt này, sau đó bạn có thể đi đến / admin / settings / apachesolr / enable-filter và kích hoạt một khối khía cạnh cho nhiều trường từ các loại nội dung của bạn.
Các trường CCK khác nhau được tự động gửi đến Solr tuy nhiên không phải tất cả đều như vậy. Xem ở đây để có một số hướng dẫn thêm và kiểm tra các ý kiến vì họ có một số thông tin hữu ích về việc kích hoạt các khía cạnh. Bài viết được viết bởi chính tác giả của mô-đun để ông biết những gì đang xảy ra :)
Ngoài ra http://drupal.org/node/903398 sẽ giúp bạn tìm kiếm các trường cck, lưu ý bạn chỉ có thể tìm kiếm trên các trường văn bản và KHÔNG chích. Các trường chuỗi hữu ích cho các khía cạnh, các trường văn bản là để tìm kiếm.
Facet API cho phép các widget hiển thị tùy chỉnh bằng cách triển khai một plugin. Plugin có toàn quyền truy cập vào mảng kết xuất, vì vậy cuối cùng bạn có toàn quyền kiểm soát giao diện của các khía cạnh.
Các plugin được thêm vào hệ thống bằng cách triển khai hook_facetapi_widgets (), trỏ đến một lớp có phương thức exec (). Xem tệp plugin / facetapi / widget_links.inc trong mô-đun Facet API để biết ví dụ về một plugin hoạt động. Các ví dụ khác về những điều thú vị bạn có thể làm với các tiện ích API Facet là các khía cạnh biểu đồ và các khía cạnh tagcloud.
Xem Mảng kết xuất trong bài viết Drupal 7 tại http://drupal.org/node/930760 để biết cách làm việc với các mảng kết xuất trong phương thức exec () của plugin.
Một số mã ví dụ dưới đây:
/**
* Implements hook_facetapi_widgets().
*/
function mymodule_facetapi_widgets() {
return array(
'mymodule_mywidget' => array(
'handler' => array(
'label' => t('My Custom Widget'),
'class' => 'MymoduleMywidget',
),
),
);
}
Thêm lớp vào một tệp riêng biệt và đặt nó tự động được bao gồm như được mô tả ở đây: http://drupal.org/node/542202
/**
* My custom widget.
*/
class MymoduleMywidget extends FacetapiWidget {
/**
* Renders the widget.
*/
public function execute() {
$element = &$this->build[$this->facet['field alias']];
// $element is the render array that will render the facet.
}
}