Documentation

主题签到与收藏组件

主题签到与收藏组件

适用版本:会员插件 1.3.3 · 核对日期:2026-10-10

用途

使用插件自动注入的签到、收藏脚本,选择默认按钮或在主题中编写自定义交互。

前置条件

主题正常输出 Halo 模板页脚。签到同时开启业务功能与前台能力;收藏开启前台文章能力,页面能识别文章上下文。

操作入口

签到设置、收藏设置与主题模板/脚本。默认资源由插件注入,无需手动重复引入。

操作步骤

  1. 需要默认签到按钮时,开启显示按钮,选择 floating 或 inline;指定挂载选择器,浮动位置可选左下/右下。
  2. 收藏默认按钮在文章详情页按配置显示。
  3. 自定义交互时保持前台能力开启,关闭默认按钮,并等待对应全局对象可用。
  4. 调用状态查询展示当前状态,用户点击后调用签到或收藏切换方法,处理登录跳转和错误。
  5. 用登录/未登录、非文章/文章页以及关闭默认按钮等情况核对行为。

预期结果与核对

默认按钮自动工作;自定义界面通过相同业务方法操作,并能重新查询状态。

限制与注意事项

关闭前台能力时可能不存在 window.memberSignIn 或 window.memberFavorite;调用前检测对象。inline 挂载选择器未找到时默认组件有回退行为。默认展示位置不是旧文档描述的四个角。

常见问题

  • 全局对象不存在? 核对功能开关、文章上下文、页脚输出和资源加载。
  • 出现两个按钮? 检查是否重复加载脚本或同时启用了默认按钮和主题自己的按钮。
  • 自定义收藏定位不准? 向收藏方法传入明确内容配置,不依赖缺失的文章上下文。

全局方法与最小示例

签到提供 getConfig()、getMergedConfig()、getStatus()、signIn()、getLoginUrl()、initWidget();收藏提供 getSummary(config)、getStatus(config)、toggle(config)、getLoginUrl()、initWidget(config)。

async function signInFromTheme() {
  if (!window.memberSignIn) throw new Error('签到前台能力未就绪');
  const result = await window.memberSignIn.signIn();
  // 根据返回业务结果展示提示,再刷新状态;请求完成不应被强行转为成功提示。
  const status = await window.memberSignIn.getStatus();
  return {result, status};
}

收藏配置使用文章对象:subjectType: 'POST'、subjectName 为 Halo 文章资源名;可同时提供 subjectTitle、permalink、cover。主题应使用真实文章字段,不能将标题当作资源名。