Cách thêm các trường bổ sung com_content vào Chỉ mục tìm kiếm thông minh


10

Nơi tôi có thể tìm thấy bất kỳ hướng dẫn hoặc hướng dẫn nào để xây dựng một plugin xử lý "onPrepare DownloaderContent"?

Tôi đã thêm một số trường bổ sung vào các bài viết com_content và tôi muốn chúng được lập chỉ mục bởi công cụ Finder.

Tôi đang tìm cách để thêm một yếu tố mới vào FinderIndexerResultđối tượng sẽ được lập chỉ mục.

Tôi đã thấy dòng mã này trong plugin / finder / content / content.php ở dòng 311:

// Get content extras.
FinderIndexerHelper::getContentExtras($item);

Hàm FinderIndexerHelper :: getContentExtras chấp nhận đối tượng FinderIndexerResult sẽ được lập chỉ mục và sau đó kích hoạt một sự kiện "onPrepare DownloaderContent", (tôi cho rằng) cho phép plugin 3dparty thêm hoặc sửa đổi nội dung sẽ được lập chỉ mục.

Một số bạn có bất kỳ kinh nghiệm về điều này hoặc có thể chỉ cho tôi một số hướng dẫn / tài liệu tốt?

Câu trả lời:


4

Tôi đã thực hiện một số trường bổ sung trong com_content. Tôi nghĩ bởi vì phương thức được sử dụng để thực hiện điều này khá tùy chỉnh khi bạn chỉ định bảng của riêng mình và do đó, không có phương pháp nào thực sự lặp lại mà bạn có thể sử dụng để đưa thông tin này được hợp nhất vào com_finder.

Đề nghị của tôi cho bạn sẽ là rẽ nhánh plugin chỉ mục nội dung cho công cụ tìm và sau đó thiết lập nó để gọi ra các trường bạn đã thêm.

Điều đầu tiên bạn làm là sửa đổi getListQuery trong công cụ tìm để tham gia vào bảng trường bổ sung của bạn:

https://github.com/j Joomla / j Joomla-cms/blob/staging/plugins/finder/content/content.php#L341

Sau đó, tùy thuộc vào cách bạn lưu các trường bổ sung của mình (đối tượng JRegistry?), Bạn chỉ cần yêu cầu người tìm xem xét các trường bổ sung mà bạn có trong truy vấn:

Tôi có cảm giác cuối cùng bạn đã thêm nó dưới dạng một số thông tin meta: https://github.com/j Joomla / j Joomla-cms / blob / staging / plugins /finder / content / content.php # L286

Hi vọng điêu nay co ich


3

Làm việc cho plugin SobiPro-Smart Search, chúng tôi đã thêm các trường bổ sung trong getItems , xử lý các mục được lập chỉ mục là Finder IndexerResult và sau đó, trong chỉ mục cho từng mục, thêm Hướng dẫn của từng trường bổ sung:

protected function index(FinderIndexerResult $item, $format = 'html')
{
...

            $fields = $this->_fields[$item->section];

            foreach ($fields as $f)
            {
                $nid = $f->get('nid');

                if (isset($item->$nid))
                {
                    $item->addInstruction(FinderIndexer::TEXT_CONTEXT, $nid);
                }
            }
...

Cảm ơn bạn, câu trả lời của bạn đã đưa tôi đi đúng hướng;) Cuối cùng tôi đã viết một plugin tìm kiếm (mở rộng JPlugin) thực hiện sự kiện onPrepare DownloaderContent (được tìm thấy bởi Finder IndexerHelper :: getContentExtras). Sau đó tôi đã thêm các hướng dẫn như bạn đã hiển thị và các trường bổ sung tương ứng: public function onPrepareFinderContent(FinderIndexerResult &$row) { .... $row->addInstruction(FinderIndexer::TEXT_CONTEXT, $field->id); $row->setElement($field->id, $field->value); .... }
Cristiano

Thông minh! Bạn có phải đánh dấu câu hỏi là đã giải quyết?
Anibal

@Cristiano: Bạn đã bao giờ giải quyết điều này? Không có câu trả lời được chấp nhận và tôi phải đối mặt với cùng một vấn đề - bạn đã bao giờ tìm ra cách sử dụng các thói quen này chưa?
GDP

Ngay cả khi câu trả lời không được chấp nhận bởi tác giả ban đầu ... đó là cách nó hoạt động trên plugin tìm kiếm thông minh của tôi ;-)
Anibal
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.