Frappe 网站「关于我们」页面配置指南:About Us Settings DocType 深度解析
2026/9/16 8:38:03 网站建设 项目流程

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,类型为Otherdocument_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 字段(sb0sb1)在表单中划分为独立区块。

二、字段详解(继承原文档并扩充)

下表基于 about_us_settings.json 中的fields数组整理,完整覆盖所有配置项:

fieldname字段类型标签说明 / 备注
is_disabledCheckDisabled默认值为1(勾选)。勾选后禁用「关于我们」页面
page_titleDataPage Title页面标题,展示在/about页面头部
company_introductionText EditorCompany Introduction富文本(HTML)编辑器,用于向网站访客介绍公司,支持图文混排
sb0Section BreakOrg History区块分隔符,开启「发展历程」区块
company_history_headingDataOrg History Heading发展历程区块的小标题,如 "Company History"
company_historyTableOrg History子表字段,options: "Company History",以行方式录入年份与事件
sb1Section BreakTeam Members区块分隔符,开启「团队成员」区块
team_members_headingDataTeam Members Heading团队成员区块小标题,官方提示可为 "Team Members" 或 "Management"
team_members_subtitleSmall TextTeam Members Subtitle团队区块的副标题说明文字
team_membersTableTeam Members子表字段,options: "About Us Team Member",逐行录入成员
footerText EditorFooter页面底部的附加富文本内容

字段级补充说明(来自源码):

  • company_introductionfooter均为Text Editor(富文本)类型,说明它们支持pulimg等 HTML 标签,可在后台所见即所得地排版;
  • is_disabled默认勾选,意味着新站点默认不对外提供「关于我们」页面,需要手动取消勾选并保存后才会启用,这是出于内容未就绪时避免展示空页面的考虑;
  • company_history_headingteam_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字段类型说明
yearData年份/时间节点,如 "2013"
highlightText该年度的关键事件描述,print_width/width均为 300px

其 Python 控制器 company_history.py 仅包含自动生成的类型注解(highlightyearparent/parentfield/parenttype三个父子关联字段),无额外逻辑,数据完全由前台渲染消费。

3.2 About Us Team Member(团队成员)

定义于 frappe/website/doctype/about_us_team_member/about_us_team_member.json,包含:

fieldname字段类型必填说明
full_nameData是(reqd: 1成员姓名
image_linkAttach成员头像,通过文件上传控件(Attach)绑定,前台以图片形式展示
bioSmall 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_introductionobj.company_historyobj.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页面立即反映最新内容,无需手工刷新缓存。

五、完整的配置步骤(实战)

  1. 以拥有Website Manager角色的账号登录站点后台;
  2. 打开About Us Settings单例表单;
  3. 取消勾选 Disabledis_disabled默认勾选,必须取消页面才会展示);
  4. 填写Page Title(如 "About Us")与Company Introduction(富文本介绍公司);
  5. Org History区块填写区块标题,并在子表company_history中逐行录入yearhighlight
  6. Team Members区块填写区块标题与副标题,并在子表team_members中录入成员的full_nameimage_link(上传头像)与bio
  7. 可选:在footer中填写页面底部的附加内容;
  8. 点击保存(Save)。on_update会自动清除/about缓存;
  9. 浏览器访问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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询