- Umbraco v7 не был разработан для поддержки пользовательских провПочему я номеров телефонов отказался от этого проекта?айдеров, и в этой версии их можно было заставить работать только хакерским способом, например, переопределив логику поиска в Backoffice.
- Любое обновление Umbraco может нарушить совместимость
- пакета, поскольку он основан на базовой функциональност
- и Umbraco, поэтому любое изменение остановит поставщика.
- В Examine не было абстракции, которая упрощала бы поддержку пакета с помощью Umbraco v7.
- Я бы не стал использовать реализацию ISearchableTree дл
- я замены поставщиков поиска Backoffice, поскольку здесь необходимо переопределить всю логику поиска, и я не думаю, что э
- то хороший способ сделать это. Я считаю, что ISearchableTree следует использовать только в случаях пользовательского поиска в бэк-офисе, который не является заменой базового.
Умбрако V8
После того, как я отказался от проекта, я поговорил с некото
рыми людьми о том, как было бы здорово иметь лучший вариант для этого в Umbraco, и как я даже просматривал исходный код Umbraco, чтобы увидеть, как изменить части жесткого кода, чтобы они были более удобными. абстрактный и расширяемый.
В то время я разговаривал с Шеннон из штаб-квартиры Umbraco, и она предположила, что в новой версии Umbraco они внесут изменения, которые позволят мне продолжить мой проект
. Я решил взять за основу код поиска Azure, поскольку это был пример использования нового уровня абстракции в Umbraco.
Где мой файл конфигурации?
Umbraco v8 изменил конфигурацию просмотра с файлов конфигурации на код.
Вместо использования старомодного способа (который я пре
дпочитаю) с файлами конфигурации у нас есть новый блестящий программный способ изменения настроек Examine.
Были некоторые дискуссии о плюсах и минусах этого решения,
но в то время, когда я начал работать над этим провайдером, еще не было задокументированного способа изменить что-либо в к
онфигурации Examine. Я последовал предложению ребят с GitHub, но несколько раз мне приходилось тратить время на реверс-инжиниринг того, как Umbraco обрабатывала внедрение зависимостей, композицию и проверку конфигурации.
Как изменить индексы между компонентами
Поскольку в новой версии изменился способ обра
ботки настроек изменений в Umbraco, мне пришлось выяснить, как обработать переход с Browse на Elastic в исходном коде. Как и
в первой части, нужно было разобраться, как отключить компонент Browse, присоединяющий базовые индексы. Поскольку Umbraco использовала UmbracoIndex, который наследуется от LuceneIndex, мне пришлось заново реализовать Content Populators, которые Как улучшить вашу платформу данных клиентов заполняют контент между всеми индексами, созданными на основе ElasticSearchIndex.
Фрагмент 2. Регистрация пользовательского поставщика
Держитесь рядом с Умбрако и подражайте событиям.
Umbraco предоставляет некоторые события по умолчанию
для индексов и не поддерживается большей частью кода Umbraco. Мне приходится эмулировать поля Lucene, хотя я их вообще
не использую. Поля Lucene неудобны в работе, поскольку, в отличие от большинства объектов, они не предоставляют фактичес
кий тип данных. Поскольку вам нужно работать только с одной ст аэролиды рокой, вы в конечном итоге преобразуете все типы, которые вам нужны в строку, динамически, когда кто-то получает их из словаря документов: