Facet 更新:新增页面可编辑权限与快捷管理入口

Introducing page.isEditable and Quick Admin Links

Facet 更新:新增页面可编辑权限与快捷管理入口

在最近的一次 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 场景下模板能力的一次重要增强

kingleoric

kingleoric

First Article You're at the beginning
Next Facet: A Template Engine For FaceFlow

Discussion

Join the conversation and share your thoughts

No comments yet. Be the first to share your thoughts!