在最近的一次 Facet 更新中,我们为模板引擎增加了 页面可编辑权限判断,并提供了一组新的 管理员链接变量,用于构建更友好的内容管理体验。
本次更新的核心目标是: 让 已登录且具备编辑权限的用户 可以在前端页面快速进入编辑或管理界面,而普通访问者不会看到任何相关 UI。
为了实现这一点,我们在 Facet 中新增了权限变量和语法支持。
为什么需要这个功能
在实际的 CMS 使用场景中,编辑人员经常需要:
- 快速编辑当前页面
- 进入后台管理界面
- 管理页面列表
- 查看个人资料
- 快速退出登录
如果每次都需要进入后台再找到对应页面,会大幅降低编辑效率。
因此我们在前端增加了一个 快捷管理入口组件:
- 显示在 屏幕右侧垂直居中
- 仅在 用户已登录 且 具备权限 时显示
- 提供快速访问编辑与管理页面的入口
这样编辑者在浏览网站时,可以 随时直接进入编辑模式。
新增模板变量
Facet 新增了一组用于权限判断和管理入口的变量。
page.isEditable
用于判断 当前用户是否拥有编辑当前页面的权限。
{{#if page.isEditable}}
<a href="{{ page.url }}?edit=1">Edit this page</a>
{{/if}}只有当:
- 用户已登录
- 并且具有当前页面的编辑权限
该内容才会被渲染。
这对于构建 仅对编辑人员可见的 UI 元素 非常有用,例如:
- 编辑按钮
- 编辑工具栏
- 编辑提示信息
示例
例如判断页面是否有子页面:
{{#if page.hasChildren}}
<p>This page has child pages.</p>
{{/if}}判断当前用户是否可以编辑:
{{#if page.isEditable}}
<a href="{{ page.url }}?edit=1">Edit this page</a>
{{/if}}新增管理员相关变量
为了方便构建管理入口,本次更新还提供了一组 管理员 URL 变量:
| 变量 | 说明 |
|---|---|
site.adminUrl | 后台管理首页 |
site.adminProfileUrl | 管理员个人资料页 |
site.adminLogoutUrl | 退出登录 |
例如:
<a href="{{site.adminProfileUrl}}">Profile</a>
<a href="{{site.adminLogoutUrl}}">Logout</a>快捷管理组件示例
下面是一个示例组件,用于在页面右侧显示管理入口。
这个组件延续了 UniUI 的设计风格,并结合 Facet 的权限变量实现条件渲染。
功能包括:
- 编辑当前页面
- Dashboard
- 页面管理
- 个人资料
- 退出登录
组件只会在 用户登录后显示:
{{#deferred skeleton-width="0" skeleton-height="0"}}
{{#if user.isLoggedin}}
<div
class="uniui-admin-links fixed right-4 top-1/2 -translate-y-1/2 z-50"
data-dock="{dock}"
aria-label="Quick admin links"
>
<div class="uniui-admin-links__group flex flex-col gap-2 rounded-xl bg-bg-elevated p-2 shadow-lg backdrop-blur border border-border-subtle">
{{#if page.isEditable}}
<a href="{{page.url}}?edit=1" class="uniui-admin-links__btn" aria-label="Edit page" title="Edit page">
Edit
</a>
{{/if}}
<a href="{{site.url}}faceflow/" class="uniui-admin-links__btn" title="Dashboard">
Dashboard
</a>
<a href="{{site.url}}faceflow/pages-manage" class="uniui-admin-links__btn" title="Pages">
Pages
</a>
<a href="{{site.adminProfileUrl}}" class="uniui-admin-links__btn" title="Profile">
Profile
</a>
<a href="{{site.adminLogoutUrl}}" class="uniui-admin-links__btn" title="Logout">
Logout
</a>
</div>
</div>
{{/if}}
{{/deferred}}显示逻辑总结
该组件的显示规则如下:
| 条件 | 是否显示 |
|---|---|
| 用户未登录 | ❌ 不显示 |
| 用户登录但无编辑权限 | ✔ 显示管理入口,但不显示编辑按钮 |
| 用户登录且可编辑页面 | ✔ 显示所有入口 |
这种设计确保:
- 普通访客不会看到管理 UI
- 编辑人员可以获得更高效的操作体验
总结
本次 Facet 更新主要带来了两个改进:
1️⃣ 页面编辑权限判断
新增:
page.isEditable让模板可以根据权限渲染 UI。
2️⃣ 管理入口变量
新增:
site.adminUrl
site.adminProfileUrl
site.adminLogoutUrl方便构建前端管理工具。
通过这些能力,我们可以在 不影响普通用户体验的情况下,为内容编辑者提供更高效的工作流程。
这也是 Facet 在 CMS 场景下模板能力的一次重要增强。




Discussion
Join the conversation and share your thoughts
No comments yet. Be the first to share your thoughts!