private Task OnPreCompile(ISite site) { m_Site = site; m_SearchIndex = new List <PageSearchData>(); AssetsHelper.AddAssetsFromZip(Resources.tipue_search, site.MainPage); var data = new PluginMetadata(); data.Add(SITEMAP_PARAM, false); data.Add(SEARCH_PARAM, false); data.Add(TITLE_PARAM, m_Setts.SearchPageTitle); var content = Resources.search; ITemplate layout = null; if (!string.IsNullOrEmpty(m_Setts.SearchPageLayout)) { layout = site.Layouts.FirstOrDefault(t => string.Equals(t.Name, m_Setts.SearchPageLayout)); if (layout == null) { throw new NullReferenceException($"Specified layout: {m_Setts.SearchPageLayout} for search page cannot be found"); } } else { content = string.Format(Resources.default_search_template, Resources.tipue_search_box + content); } m_Site.MainPage.SubPages.Add(new PluginPage(SEARCH_PAGE_NAME, content, Guid.NewGuid().ToString(), data, layout)); return(Task.CompletedTask); }