Как добавить дополнительные поля com_content в Smart Search Index

Где я могу найти любой учебник или инструкции по созданию плагина, который обрабатывает «onPrepareFinderContent»?

Я добавил некоторые дополнительные поля в статьи com_content, и я бы хотел, чтобы они были проиндексированы движком Finder.

Я ищу способ добавить новый элемент в объект FinderIndexerResult, который будет проиндексирован.

Я видел эту строку кода в плагинах /finder /content /content.php в строке 311:

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

Функция FinderIndexerHelper :: getContentExtras принимает объект FinderIndexerResult, который будет проиндексирован, а затем инициирует событие onPrepareFinderContent, которое (я полагаю) позволяет плагину 3dparty добавлять или изменять контент, который будет проиндексирован.

У некоторых из вас есть какой-либо опыт по этому поводу или я могу указать на хороший учебник /документацию?

9 голосов | спросил Cristiano 2 Maypm14 2014, 12:05:45

2 ответа


3

Я сделал несколько дополнительных полей в com_content. Я думаю, потому что метод, используемый для этого, довольно обычен, поскольку вы указываете свою собственную таблицу и т. Д., Не существует действительно повторяемого метода, который вы можете использовать для объединения этой информации в com_finder.

Мое предложение для вас было бы разблокировать плагин индексатора содержимого для finder, а затем настроить его для вызова в поля, которые вы добавили.

Первое, что вам нужно сделать, это изменить getListQuery в finder, чтобы присоединиться к вашей таблице дополнительных полей:

https: //github. ком /Joomla /Joomla-CMS /блоб /постановка /плагинов /искатель /содержание /content.php # L341

Затем после этого, в зависимости от того, как вы сохраняете дополнительные поля (объект JRegistry?), вам просто нужно сказать finder, чтобы посмотреть дополнительные поля, которые у вас есть в запросе:

У меня возникло ощущение, что вы добавите его в мета-информацию: https://github.com/joomla /joomla-cms/blob/staging/plugins/finder/content/content.php#L286

Надеюсь, что это поможет

ответил Chad Windnagle 3 Maypm14 2014, 17:03:12
2

Работая с плагином SobiPro-Smart Search, мы добавили дополнительные поля в getItems , обрабатывая элементы, которые будут индексироваться как FinderIndexerResult, а затем в index для каждого , добавив Инструкции каждого дополнительного поля:

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);
                }
            }
...
ответил Anibal 2 Maypm14 2014, 17:15:39

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132