有什么方法可以搜索附件并在搜索结果中显示附件?我的搜索结果应该只显示包含搜索文本的附件。现在我可以搜索附件并显示附件包含搜索文本的页面。说,我有一个主页和附件 myattachment.docx 作为其附件。在站点搜索中搜索背景作为搜索文本时,仅包含在 myattachment.docx 中(不包含在主页中),搜索结果显示主页作为搜索结果。我的意图是返回类似 Home/myattachment.docx 的结果,而不是主页。我的页面可能有任意数量的附件。
提前致谢!
有什么方法可以搜索附件并在搜索结果中显示附件?我的搜索结果应该只显示包含搜索文本的附件。现在我可以搜索附件并显示附件包含搜索文本的页面。说,我有一个主页和附件 myattachment.docx 作为其附件。在站点搜索中搜索背景作为搜索文本时,仅包含在 myattachment.docx 中(不包含在主页中),搜索结果显示主页作为搜索结果。我的意图是返回类似 Home/myattachment.docx 的结果,而不是主页。我的页面可能有任意数量的附件。
提前致谢!
这方面的信息有点草图。有关我使用的文档,请参见下文。
在 AppCode(或 Old_App_Code)中创建自定义全局事件处理程序,确保它是 CMSModule Loader 的部分类。
在覆盖中添加您的自定义事件处理程序Init()
您想要的是DocumentEvents.GetContent.Execute
.
发件人对象应该是当前TreeNode
被索引以供搜索。然后,您可以使用该节点访问相关附件并修改事件参数e.content
以将您的文档文本添加到搜索中。
[CustomDocumentEvents]
public partial class CMSModuleLoader
{
private class CustomDocumentEventsAttribute : CMSLoaderAttribute
{
public override void Init()
{
// Assigns custom handlers to the appropriate events
DocumentEvents.GetContent.Execute += Document_GetContent;
}
private void Document_GetContent(object sender, DocumentEventArgs e)
{
TreeNode node = sender as TreeNode;
if (node != null)
{
//Note, this is psuedo code, this isnt the way to iterate over TreeNode.Attachments
foreach( attachment in node.Attachments ) {
e.Content += attachment.content;
}
}
}
}
}
更多信息
请参阅http://devnet.kentico.com/docs/devguide/index.html?event_handlers_overview.htm了解在版本 7 中实现自定义事件的一般情况。
请参阅第 5 版中的自定义搜索 http://devnet.kentico.com/Knowledge-Base/Search/How-to-search-for-documents-using-assigned-categor.aspx
请参阅http://devnet.kentico.com/Knowledge-Base/API-and-Internals/Custom-Handler-Library-compatibility.aspx以获取版本 5 自定义搜索示例中提到的版本 7 的更新事件名称。