SearchItemInfo устарел.Устаревший в DNN 7.1 - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь реализовать ISearchable на одном из наших модулей.

Visual Studio указывает, что SearchItemInfo устарел и устарел в DNN 7.1.

Я нашел эту статью, но это не такпокажите новый альтернативный код, который я должен использовать, и на GitHub так много внутренних функций.

https://www.dnnsoftware.com/answers/searchdatastorecontroller-is-obsolete-in-71

 public SearchItemInfoCollection 
 GetSearchItems(DotNetNuke.Entities.Modules.ModuleInfo ModInfo)
{
    SearchItemInfoCollection SearchItemCollection = new SearchItemInfoCollection();

    List<TestModuleInfo> colTestModules = GetTestModules(ModInfo.ModuleID);

    foreach (TestModuleInfo objTestModule in colTestModules)
    {
        SearchItemInfo SearchItem = new SearchItemInfo(ModInfo.ModuleTitle, objTestModule.Content, objTestModule.CreatedByUser, objTestModule.CreatedDate, ModInfo.ModuleID, objTestModule.ItemId.ToString(), objTestModule.Content, "ItemId=" + objTestModule.ItemId.ToString());
        SearchItemCollection.Add(SearchItem);
    }

    return SearchItemCollection;

    throw new System.NotImplementedException("The method or operation is not implemented.");
}

Я попытался написать следующий метод и прикрепил точку останова кGetModifiedSearchDocuments и планировщик обхода сайта для сканирования сайта, но он никогда не срабатывает.Кроме того, при реализации этого кода будет ли отображаться флажок на модуле, который позволит вам включать и выключать ISearchable?

//uncomment the interfaces to add the support.
public class FeatureController : ModuleSearchBase
{

    public CommonDataDefinitions.Products.WebProductDetails ProductDetails { get; set; } = null;


    public override IList<SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDateUtc)
    {
        var searchDocs = new List<SearchDocument>();
        var products = new List<QuickProduct>
        {
            new QuickProduct("CT4455", "Soundbar", "The soundbar is used for entertainment purposes." ),
            new QuickProduct("BD5333", "Laser Pointer", "For Presentations." )
        };

        foreach (var product in products)
        {
            var searchDoc = new SearchDocument
            {
                IsActive = true,
                CultureCode = moduleInfo.CultureCode,
                Title = product.Title,
                Description = product.Description,
                Body = product.Description,
            };
            searchDocs.Add(searchDoc);
        }
        return searchDocs;
    }

}

public class QuickProduct
{
    public string SKU { get; set; }

    public string Title{ get; set; }

    public string Description { get; set; }

    public QuickProduct(string SKU, string Title, string Description)
    {
        this.SKU = SKU;
        this.Title = Title;
        this.Description = Description;
    }
}

1 Ответ

0 голосов
/ 10 апреля 2019

Самый простой способ понять, как реализованы эти интерфейсы, это всегда взглянуть на исходный код модуля, в котором он работает, и очень хорошей отправной точкой является модуль HtmlText, включенный в DNN.См. здесь .

Я смутно помню, что модуль помечен как доступный для поиска (и т. Д.) Во время процесса установки, поэтому вам необходимо создать пакет обновления и установить его, чтобы он вступил в силу..

Другим способом (для разработки или тестирования установок) может быть сделать это непосредственно в базе данных, таблице DesktopModules, столбце SupportedFeatures.Значения:

1 = Portable
2 = Searchable
4 = Upgradeable

Чтобы объединить две функции, добавьте числа, например.Portable and Searchable = 3, All = 7 и т. Д.

После обновления этого столбца перезапустите пул приложений, чтобы это вступило в силу.

ПРИМЕЧАНИЕ. Я рекомендую это только длясреды разработки или тестирования.В производственных средах вы должны использовать пакет для обновления расширения.

...