it-swarm-vi.com

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

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" ở đâu?

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 phần tử mới vào đối tượng FinderIndexerResult 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", mà (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?

10
Cristiano

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.

Gợi ý của tôi cho bạn là chia rẽ plugin trình chỉ mục nội dung cho Finder 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 Finder để 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/ Downloader/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 Finder 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 sẽ 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/Downloader/content/content.php # L286

Hi vọng điêu nay co ich

4
Chad Windnagle

Hoạt động 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 index cho mỗi mục, thêm Hướng dẫn của mỗi trường thêm:

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);
                }
            }
...
3
Anibal