SiteSearchPlugin
是为 Grav CMS 开发的站内搜索插件,支持全文搜索文章标题和内容,按照关键词匹配筛选结果,并提供分页和高亮显示功能。插件通过特定路由触发搜索,适合在站点内快速实现文章查找。
taxonomy
获取标签和分类信息。getSubscribedEvents()
:注册事件:
onPagesInitialized
:初始化页面后执行搜索逻辑。onTwigTemplatePaths
:添加模板路径(可自定义模板)。autoload()
:引入 Composer 自动加载。onPagesInitialized()
方法中,判断当前 URI 是否与配置的路由(默认为 /search
)匹配,匹配则调用 handleRequest()
。sitesearch()
方法:
isExcluded()
:判断页面路径是否匹配排除规则。getPageContent()
:提取页面的标题、分类、标签和内容,用于搜索匹配。matchKeywords()
:判断关键词是否出现在页面内容中(支持包含和正则)。getSummary()
:生成内容摘要,包含关键词附近的内容,支持高亮。highlight()
:关键词高亮显示(用 <mark>
标签),可关闭。blueprints.yaml
)配置项 | 类型 | 描述 | 默认值 |
---|---|---|---|
enabled |
toggle | 插件启用状态 | 1 (启用) |
route |
text | 搜索路由路径 | /search |
pageroute |
text | 搜索结果页面路径(可扩展) | /getsearch |
exclude_patterns |
commalist | 排除目录正则,支持多个 | ['#/@eaDir(/|$)#', '#/private/#', '#/test/#'] |
summary_length |
number | 内容摘要长度(字符) | 250 |
per_page |
select | 每页显示条数 | 10 |
order_by |
select | 默认排序字段(日期/标题/目录) | date |
order_dir |
select | 排序方向(降序/升序) | desc |
enable_highlight |
toggle | 是否启用关键词高亮 | 1 (启用) |
blueprints.yaml
中修改,或在后台配置)。yourdomain/search
(或你自定义的路由路径)。grav plugin
/search?keywords=grav+plugin&page=1&per_page=10
返回示例(简化版):
{
"results": [
{
"title": "Grav CMS插件开发指南",
"link": "/blog/grav-plugins",
"content": "本文介绍了如何开发Grav插件...",
"category": ["开发", "教程"]
}
],
"total": 3,
"per_page": 10,
"page": 1
}

暂无评论