Olti
02/18/2025, 12:13 PM"FullTextSearch": {
"DefaultTitleField": "nodeName",
"FullTextPathField": "searchablePath",
"FullTextContentField": "bodyText",
"HighlightPattern": "<span class=\"highlight\">{0}</span>",
"Enabled": true,
"RenderingActiveKey": "FullTextRenderingActive",
"XPathsToRemove": [
"//header",
"//head",
"//nav",
"//footer",
"//aside",
"//script"
]
}
Olti
02/18/2025, 12:13 PMpublic PagedSearchResult SearchPages(IPublishedContent? rootNode, string searchTerm, int pageNumber, int pageSize)
{
if (string.IsNullOrWhiteSpace(searchTerm) || rootNode == null)
{
return new PagedSearchResult();
}
string culture = Thread.CurrentThread.CurrentUICulture.Name.ToLowerInvariant();
var search = new Our.Umbraco.FullTextSearch.Models.Search(searchTerm)
.EnableHighlighting()
.AddTitleProperty("nodeName")
.AddSummaryProperty("bodyText")
.SetSummaryLength(300)
.SetPageLength(pageSize)
.SetCulture(culture)
.AddRootNodeId(rootNode.Id);
var ftsResult = _ftsSearchService.Search(search, pageNumber);
var paged = new PagedSearchResult
{
TotalItemCount = ftsResult.TotalResults,
CurrentPage = (int)ftsResult.CurrentPage,
PageSize = pageSize,
TotalPages = (int)ftsResult.TotalPages,
Results = ftsResult.Results.Select(x => new SearchResultItem
{
Content = x.Content,
Title = x.Title,
Summary = x.Summary?.ToHtmlString() ?? string.Empty,
Score = x.Score
}).ToList()
};
return paged;
}
Olti
02/18/2025, 12:13 PMskttl
02/18/2025, 12:32 PMskttl
02/18/2025, 12:33 PMOlti
02/18/2025, 12:49 PMskttl
02/18/2025, 12:56 PMOlti
02/18/2025, 1:03 PMOlti
02/18/2025, 1:06 PMskttl
02/18/2025, 1:41 PMOlti
02/18/2025, 3:00 PMOlti
02/18/2025, 3:01 PMkows
04/03/2025, 7:02 PMpublic class PublicAccessChecker : IPublicAccessChecker
{
public async Task<PublicAccessStatus> HasMemberAccessToContentAsync(int publishedContentId)
{
HttpContext httpContext = _httpContextAccessor.GetRequiredHttpContext();
FullTextSearchHelper fullTextSearchHelper = httpContext.RequestServices.GetRequiredService<FullTextSearchHelper>();
if (_umbracoContextAccessor.GetRequiredUmbracoContext().InPreviewMode ||
fullTextSearchHelper.IsRenderingActive())
{
return PublicAccessStatus.AccessAccepted;
}
...
rest of default implementation
...
}
and
builder.Services.AddUnique();
in composerskttl
04/04/2025, 6:11 AM