概述
TagPageConfig模型用于管理系统前台标签页面(Tag Detail)的展示与内容生成策略。通过该模型,可以控制页面标题的多样性、简介内容的个性化展示,以及当标签下无直接关联文章时的“补空”策略(分词查找相关文章、随机或近期文章填充)。字段说明
1. 标题多样性配置
- 标题多样性开关 (
titlediversityenabled)- 类型: 布尔值
- 默认值:
False - 作用: 总开关。开启后,标签页的
<title>将由系统根据下方模板自动生成多样性标题,而非固定的“{标签名}相关内容介绍”格式。
- 标题多样性模板 (
titletemplates)- 类型: 多行文本
- 默认值: 预置了11条标题模板
- 作用: 提供标题生成的基础模板池。每行一个模板,支持
{标签名称}占位符,系统将随机选取并用实际标签名替换。
- 拼接模板配置 (
titleconnectortemplates)- 类型: 多行文本
- 默认值: 预置了多种拼接样式
- 作用: 定义如何将两个基础标题模板拼接成一个最终标题。每行一个模板,支持
{标题1}和{标题2}占位符。系统随机选取一个拼接模板进行组合。
2. 分词与内容查找策略
- 分词策略开关 (
wordsplitenabled)- 类型: 布尔值
- 默认值:
True - 作用: 核心开关。当标签本身没有关联任何文章时,系统会将标签名称进行分词,然后用这些分词去查找标题中包含这些词的文章,用以填充标签页的内容列表。
- 注意: 系统已从低效的“全表LIKE查询”优化为通过“分词中间表”进行关联查询,性能大幅提升。此功能处于过渡测试阶段。
- 启用并发更新 (
concurrentupdateenabled)- 类型: 布尔值
- 默认值:
False - 作用: 仅在
wordsplitenabled=True时有效。当一篇已入库的文章首次被访问,且其标题尚未分词时,开启此选项将使用多线程/进程进行分词计算(会短暂阻塞HTTP主进程)。分词操作每个文章仅执行一次。 - 警告: 默认关闭以确保稳定。开启后服务器进程数(pid)可能会短暂增加。
3. 内容补空策略
- 补空策略 (
fillemptystrategy)- 类型: 字符选项
- 选项:
random(随机文章)、recent(近期文章)、none(不补充) - 默认值:
recent - 作用: 当通过“分词策略”仍然没有找到任何相关文章时,触发的后备方案。
- 补空文章数量 (
fillemptycount)- 类型: 整数
- 默认值: 20
- 验证器: 最小值1,最大值50
- 作用: 定义使用“随机”或“近期”策略时,补充的文章数量。
4. 简介多样性配置
- 简介多样性开关 (
introdiversityenabled)- 类型: 布尔值
- 默认值:
False - 作用: 总开关。开启后,标签页的简介区域将使用下方随机的HTML模板内容。
- 简介多样性模板 (
introtemplates)- 类型: 多行文本 (支持HTML)
- 默认值: 预置了10个不同样式的
<div class="alert">模板 - 作用: 简介模板池。模板之间用空行分隔。支持
{标签名称}和{网站名称}占位符。系统随机选择一个使用。
- 默认简介模板 (
defaultintrotemplate)- 类型: 多行文本 (支持HTML)
- 默认值: 一个基础的success alert模板
- 作用: 当
introdiversityenabled=False时,将固定使用此模板生成简介。同样支持{标签名称}和{网站名称}占位符。
主要方法说明
gettitletemplateslist()-> List[str]- 解析
titletemplates字段,返回去空后的标题模板字符串列表。
getconnectortemplateslist()-> List[str]- 解析
titleconnectortemplates字段,返回去空后的拼接模板字符串列表。内置容灾,返回至少包含["{标题1},{标题2}"]的列表。
getintrotemplateslist()-> List[str]- 解析
introtemplates字段,按空行分割,返回简介模板字符串列表。
generatediversetitle(tagtitle: str)-> str- 标题生成核心逻辑:
- 从
titletemplates随机选取两个不同的模板。 - 将
{标签名称}替换为实际tagtitle,得到标题1和标题2。 - 从
connectortemplates随机选取一个拼接模板。 - 将
{标题1}和{标题2}替换进拼接模板,生成最终标题字符串。
- 如果模板数量不足2条,会打印警告并返回空字符串。
getcompletetitle(tagtitle: str)-> str- 对
generatediversetitle的封装,用于模板中直接调用。如果多样性标题开关关闭,返回空字符串。
generatediverseintro(tagtitle: str, objintro: str = None)-> str- 简介生成核心逻辑:
- 如果传入了
objintro(如标签自定义简介),则直接返回。 - 如果简介多样性开启,则从
introtemplates随机选择一个模板,替换占位符后返回。 - 如果简介多样性关闭,则使用
defaultintrotemplate替换占位符后返回。
使用示例
后台管理提示
- 在Django Admin中编辑
titletemplates,titleconnectortemplates,introtemplates等字段时,每行输入一个模板。 introtemplates和defaultintrotemplate字段支持HTML,请确保输入合法的HTML片段。