Frappe 网站「关于我们」页面配置指南:About Us Settings DocType 深度解析
【免费下载链接】frappeLow code web framework for real world applications, in Python and Javascript项目地址: https://gitcode.com/GitHub_Trending/fr/frappe
导读
本指南围绕 Frappe 低代码 Web 框架(当前仓库)中的About Us SettingsDocType 展开,讲解如何通过它集中配置网站「About」(关于我们)页面,展示公司介绍、发展历程(Org History)与团队成员(Team Members)三大核心板块。读完本文,你将掌握该 DocType 的全部字段含义、底层数据模型、与/about页面渲染器的联动机制,以及配套子表(Company History、About Us Team Member)的用法,可直接在你的 Frappe 站点上落地一个完整的公司介绍页。
一、About Us Settings 是什么
About Us Settings是 Frappe 框架内置的一个单例(Single)DocType,用于为网站「About」页面提供配置数据。其官方说明只有一句话:
Configuration for "About" page in the website that shows company, history and team.
这句话点明了它的全部职责:把公司信息、发展历史和团队成员三类内容,通过后台表单录入,再渲染到网站前台/about页面。开发者无需编写任何页面代码,只需在后台填写表单,前台页面即自动呈现。
该 DocType 的定义文件位于 frappe/website/doctype/about_us_settings/about_us_settings.json,属于Website模块,DocType 名为About Us Settings,类型为Other(document_type),使用 InnoDB 存储引擎,并标记"issingle": 1表示单例文档(全站仅一份记录)。
1.1 从字段顺序看页面结构
JSON 中的field_order明确描述了后台表单(也是前台页面的信息组织顺序):
is_disabled → page_title → company_introduction → sb0(Org History 区块)→ company_history_heading → company_history → sb1(Team Members 区块)→ team_members_heading → team_members_subtitle → team_members → footer可以清晰看出,页面自上而下依次为:禁用开关 → 页面标题 → 公司介绍 → 发展历程 → 团队成员 → 页脚,其中「Org History」与「Team Members」通过两个 Section Break 字段(sb0、sb1)在表单中划分为独立区块。
二、字段详解(继承原文档并扩充)
下表基于 about_us_settings.json 中的fields数组整理,完整覆盖所有配置项:
| fieldname | 字段类型 | 标签 | 说明 / 备注 |
|---|---|---|---|
is_disabled | Check | Disabled | 默认值为1(勾选)。勾选后禁用「关于我们」页面 |
page_title | Data | Page Title | 页面标题,展示在/about页面头部 |
company_introduction | Text Editor | Company Introduction | 富文本(HTML)编辑器,用于向网站访客介绍公司,支持图文混排 |
sb0 | Section Break | Org History | 区块分隔符,开启「发展历程」区块 |
company_history_heading | Data | Org History Heading | 发展历程区块的小标题,如 "Company History" |
company_history | Table | Org History | 子表字段,options: "Company History",以行方式录入年份与事件 |
sb1 | Section Break | Team Members | 区块分隔符,开启「团队成员」区块 |
team_members_heading | Data | Team Members Heading | 团队成员区块小标题,官方提示可为 "Team Members" 或 "Management" |
team_members_subtitle | Small Text | Team Members Subtitle | 团队区块的副标题说明文字 |
team_members | Table | Team Members | 子表字段,options: "About Us Team Member",逐行录入成员 |
footer | Text Editor | Footer | 页面底部的附加富文本内容 |
字段级补充说明(来自源码):
company_introduction与footer均为Text Editor(富文本)类型,说明它们支持p、ul、img等 HTML 标签,可在后台所见即所得地排版;is_disabled默认勾选,意味着新站点默认不对外提供「关于我们」页面,需要手动取消勾选并保存后才会启用,这是出于内容未就绪时避免展示空页面的考虑;company_history_heading、team_members_heading的字段description中给出了参考文案("Company History"、"Team Members" or "Management"),提示内容填充方向;- 该 DocType 设置了
"index_web_pages_for_search": 1,表示其内容可被纳入站点搜索索引,有助于站内搜索命中「关于我们」信息。
三、两个核心子表(Child Table)
「发展历程」与「团队成员」均以子表(Table 字段)形式存储,行数据由独立的子 DocType 定义。
3.1 Company History(发展历程)
定义于 frappe/website/doctype/company_history/company_history.json,为istable: 1的子表 DocType,包含两个字段:
| fieldname | 字段类型 | 说明 |
|---|---|---|
year | Data | 年份/时间节点,如 "2013" |
highlight | Text | 该年度的关键事件描述,print_width/width均为 300px |
其 Python 控制器 company_history.py 仅包含自动生成的类型注解(highlight、year及parent/parentfield/parenttype三个父子关联字段),无额外逻辑,数据完全由前台渲染消费。
3.2 About Us Team Member(团队成员)
定义于 frappe/website/doctype/about_us_team_member/about_us_team_member.json,包含:
| fieldname | 字段类型 | 必填 | 说明 |
|---|---|---|---|
full_name | Data | 是(reqd: 1) | 成员姓名 |
image_link | Attach | 否 | 成员头像,通过文件上传控件(Attach)绑定,前台以图片形式展示 |
bio | Small Text | 是(reqd: 1) | 成员简介,列表视图宽度 200px |
三个字段均开启了in_list_view,便于在子表网格中直接录入与预览;editable_grid: 1表示允许在网格内直接编辑。其控制器 about_us_team_member.py 同样无额外业务逻辑。
四、后台入口与前端页面联动
4.1 表单位置与使用方式
在 Frappe 站点后台中,该表单位于Website → About Us Settings(单例文档,搜索框直接输入About Us Settings即可打开)。表单刷新时,客户端脚本 about_us_settings.js 会在表单顶部显示一行提示:
frappe.ui.form.on("About Us Settings", { refresh: function (frm) { frm.set_intro(__('Link for About Us Page is "/about".')); }, });即:保存后的前台访问路径固定为/about。该脚本同时是国际化友好的,提示文案通过__()包装,可随系统语言自动翻译。
4.2 权限模型
依据 JSON 中的permissions配置,只有Website Manager角色拥有该单例文档的read/write/create/email/print/share全套权限。这意味着普通访客无法在后台看到或修改该配置,符合"站点内容由站点管理者维护"的权限设计。
4.3 页面渲染的底层联动
当访问/about时,Frappe 的页面渲染层会调用控制器中的get_args():
def get_args(): obj = frappe.get_doc("About Us Settings") return {"obj": obj}该函数位于 about_us_settings.py,通过frappe.get_doc加载单例文档,并将其作为模板上下文obj传入「关于我们」页面模板,模板即可直接访问obj.company_introduction、obj.company_history、obj.team_members等字段渲染内容。
缓存机制:控制器中的on_update钩子在每次保存后触发:
def on_update(self): from frappe.website.utils import clear_cache clear_cache("about")Frappe 的网站页面默认有缓存层(见 frappe/website/utils.py 的clear_cache定义)。保存「关于我们」配置时主动清除about路径的缓存,确保前台/about页面立即反映最新内容,无需手工刷新缓存。
五、完整的配置步骤(实战)
- 以拥有Website Manager角色的账号登录站点后台;
- 打开About Us Settings单例表单;
- 取消勾选 Disabled(
is_disabled默认勾选,必须取消页面才会展示); - 填写
Page Title(如 "About Us")与Company Introduction(富文本介绍公司); - 在Org History区块填写区块标题,并在子表
company_history中逐行录入year与highlight; - 在Team Members区块填写区块标题与副标题,并在子表
team_members中录入成员的full_name、image_link(上传头像)与bio; - 可选:在
footer中填写页面底部的附加内容; - 点击保存(Save)。
on_update会自动清除/about缓存; - 浏览器访问
http://<your-site>/about验证页面效果;如需修改,回到表单编辑并再次保存。
提示:若页面显示 404,请优先检查
is_disabled是否仍处于勾选状态,以及是否以 Website Manager 身份保存成功。
六、测试与验证
仓库为该项目提供了集成测试占位 test_about_us_settings.py,继承自frappe.tests.IntegrationTestCase:
from frappe.tests import IntegrationTestCase class TestAboutUsSettings(IntegrationTestCase): pass虽然测试体目前为空,但它验证了两点事实:其一,该 DocType 已纳入 Frappe 的集成测试框架体系,可在 CI 环境中加载验证;其二,开发者可以在此类中继续补充针对get_args()返回值、字段默认值(如is_disabled默认勾选)以及on_update缓存清理行为的断言,例如:
def test_get_args_returns_single_doc(self): from frappe.website.doctype.about_us_settings.about_us_settings import get_args args = get_args() self.assertEqual(args["obj"].doctype, "About Us Settings")七、小结与延伸
About Us Settings是 Frappe「零代码建站」理念的一个典型缩影:一个单例 DocType + 两个子表 + 一段get_args()渲染钩子,就完整支撑起公司介绍、发展历程、团队成员三大内容板块的前台展示,并通过on_update+clear_cache保证内容即时生效。
延伸阅读:若需进一步定制前台模板,可查看 Frappe 的 页面渲染器 与 网站工具函数;若想了解 Website 模块下其他可配置页面(如 Web Form、Website Theme),可浏览 frappe/website/doctype 目录中的同类单例 DocType 定义。
【免费下载链接】frappeLow code web framework for real world applications, in Python and Javascript项目地址: https://gitcode.com/GitHub_Trending/fr/frappe
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考