企业网站 / 知识库

Odoo 企业版网站 Helpdesk Knowledge 为什么不是“挂一篇知识库首页”而已:入口锚点、搜索范围与取消发布保护讲透

从 team.website_article_id 出发,讲清 website_helpdesk_knowledge 怎样把帮助中心锚定到一棵知识树,并解释为什么被团队引用的文章不能随便下线。

企业 网站
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 5 阅读

企业帮助中心要解决的不是“给客户一个知识库链接”,而是确保某个支持团队看到的是正确文章树、正确搜索结果,以及不会被运营误操作下线。

核心链路

  1. models/helpdesk.py 中,team 上的 website_article_id 是整个帮助中心的锚点。_compute_show_knowledge_base_article() 先确认站上至少有可发布文章,再决定帮助页是否展示“Articles”入口。
  2. _compute_latest_articles() 并不是按创建时间简单取最新,而是按 favorite_count desc, write_date desc 取前 5。换句话说,帮助中心首页默认更偏向“高频被收藏的有效答案”,而不是最新编辑的内容。
  3. 控制器 controllers/main.pyaccess_helpdesk_knowledge_home() 会把 /helpdesk/<team>/knowledge/home 重定向到 team 绑定文章的 website_url。因此一个 helpdesk team 对外公开的知识库入口,实际是“某篇文章及其子树”。
  4. 真正的搜索裁剪发生在 knowledge_article._search_get_detail():当 options 里带上 helpdesk team 时,base_domain 会被重写成“当前锚点文章本身或其 root_article_id 等于锚点”。这一步把全站知识库搜索收窄成一棵树。
  5. knowledge_article.write() 还加了防线:若某篇文章正被 helpdesk team 用作 website_article_id,你不能直接取消发布、归档或改成子文章。企业版是用模型约束保护帮助中心入口稳定,而不是靠运营自觉。

关键源码位置

  • /home/ubuntu/odoo-temp/enterprise/website_helpdesk_knowledge/models/helpdesk.py
  • /home/ubuntu/odoo-temp/enterprise/website_helpdesk_knowledge/controllers/main.py
  • /home/ubuntu/odoo-temp/enterprise/website_helpdesk_knowledge/models/knowledge_article.py

容易误解的地方

  • 误区一:帮助中心知识库搜索的是全站所有文章。实际上开启 helpdesk 语境后会被限定到锚点文章树。
  • 误区二:最新文章就是按时间倒序。这里优先级是 favorite_count,其次才是 write_date。
  • 误区三:换个父文章结构不会影响帮助中心。源码明确把“改 parent”视为破坏入口稳定性的动作。

实战注意事项

  • 不要把 website_article_id 指向一篇临时运营文章,应该指向稳定的根节点或总览页。
  • 如果需要重组知识树,先给 team 换新的根文章,再调整旧树结构。
  • 分析帮助中心搜索命中不准时,优先检查 helpdesk 请求里的 options[helpdesk] 是否把搜索域裁窄了。

结语

企业版这些代码共同说明一件事:真正可上线的业务流程,靠的不是“页面上看起来能点通”,而是权限、状态、时机、对账口径和跨模块回写都被收紧。理解这些边界,实施和二开时就不容易走进“功能演示能跑、真实业务一用就散”的坑。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。