Kentico: Как мне проанализировать содержимое виджета при использовании объекта TreeProvider.SelectNodes для получения содержимого - PullRequest
0 голосов
/ 15 ноября 2018

Я создаю индекс для внешней поисковой системы, и у меня возникают проблемы с синтаксическим анализом / рендерингом содержимого встроенных виджетов в WYSIWYG.

DocumentQuery articleDetailNodes = tree.SelectNodes("ArticleViewModel");

foreach (TreeNode general in articleDetailNodes)
{
    Console.WriteLine("Adding [Article]: " + general.GetValue("DocumentName").ToString());
    generalIndex.Add(new GeneralIndexItem
    {
        objectID = general.NodeGUID.ToString(),
        title = general.GetValue("DocumentName")?.ToString(),
        description = CMS.MacroEngine.MacroResolver.Resolve(general.GetValue("Body").ToString()),
        excerpt = general.Parent.GetValue("Excerpt")?.ToString() + " " + general.Parent.GetValue("CardTitle")?.ToString() + " " + general.Parent.GetValue("CardSubtitle")?.ToString() + " " + general.Parent.GetValue("CardDescription")?.ToString(),
        page_url = domain + general.NodeAliasPath
    });
}

Я ожидаю, что значение описания будет отображено в HTML, но вместо этого я получаю:

{^widget|(widget_displayname)Color+Family+Filter+-+Large|(name)ColorFamilyFilter_Large|(width)|(height)^}<br />\r\n&nbsp;

1 Ответ

0 голосов
/ 15 ноября 2018

Если вы хотите проиндексировать виджеты, вы должны рассмотреть использование поискового робота Smart Search вместо создания пользовательского индекса. Если вам нужно настроить его, вы можете проверить по этой ссылке или по этому коду:

if (e.IsCrawler)
{
     TreeNode page = e.Node;

     e.SearchDocument.Add("path_field_name", page.NodeAliasPath, true, true);
}
...