欢迎大家加入笔记的建设,共同丰富和完善内容!
本人专科应届毕业生,寻求工作中,求介绍~
DzzOffice 正在参加 【开源中国 Gitee 2025 年度开源项目】 评选,您的一票,是对咱们最大的支持和认可。
dzz_notification::notification_add静态方法实现,主要流程包括:$uid)添加系统通知;newprompt);| 参数名 | 作用 | 类型 | 是否必填 | 说明与示例 |
|---|---|---|---|---|
| $uid | 指定接收通知的用户 | int | 是 | 必须是有效的用户 UID,需确保用户存在(方法内部会通过 getuserbyuid 验证)。示例:1001(用户 UID 为 1001) |
| $type | 通知类型标识 | string | 是 | 用于区分不同业务场景,建议保持唯一(避免重复通知误判)。命名建议:业务标识_唯一ID,示例:article_publish_5(5 为文章 ID) |
| $note | 语言包键名 | string | 是 | 语言包模式下关联模板的核心标识,用于匹配通知标题、正文、跳转链接等模板。示例:article_publish(对应语言包中该键的模板) |
| $notevars | 通知变量数组 | array | 否 | 包含语言包变量、自定义内容、业务关联信息等动态数据。示例:['title' => '实名认证', 'url' => 'verify.php'] |
| $category | 通知分类 | int | 否 | 用于对通知归类,默认值为0。示例:1(归类为"系统通知") |
| $langfolder | 语言包路径 | string | 否 | 指定自定义语言包所在文件夹,默认使用系统默认路径。示例:dzz/article 对应 dzz/article/language/zh-cn/lang.php) |
| 参数名 | 作用 | 类型 | 是否必填 | 说明与示例 |
|---|---|---|---|---|
| from_id | 业务关联ID | int/string | 否 | 关联具体业务对象(如应用ID、订单ID),0表示系统通知。示例:102(关联ID为102的应用) |
| from_idtype | 业务类型标识 | string | 否 | 描述from_id的类型,用于区分业务场景。示例:'app'(表示from_id是应用ID) |
| note_title | 自定义通知标题 | string | 否 | 传递此参数则不调用语言包的$note_title模板。示例:'新消息提醒' |
| note_message | 自定义通知正文 | string | 否 | 传递此参数则不调用语言包的$note模板。示例:'您有一条新的好友请求' |
| note_wx | 自定义微信通知内容 | string | 否 | 传递此参数则不调用语言包的$note_wx模板。示例:'微信端新消息提醒' |
| note_url | 自定义跳转链接 | string | 否 | 传递此参数则不调用语言包的$note_redirecturl模板。示例:'home.php?mod=msg' |
| 其他自定义键 | 语言包变量 | mixed | 否 | 需与语言包中的{xxx}占位符对应。示例:语言包有{title}则需传递'title' => '审核任务' |
notification_add 方法会自动根据 $note 标识匹配模板,并使用 $notevars 中的变量替换占位符,适用于多语言场景或需统一管理的通用通知。lang.php):$notevars 生成多样化内容(如不同审核类型的通知)。$note对应的键,会导致内容显示异常(如直接显示键名)。$notevars 的 note_title、note_message 等字段指定内容,无需语言包支持,适用于个性化、临时或无需多语言的场景。| 维度 | 方法一(语言包) | 方法二(自定义内容) |
|---|---|---|
| 多语言支持 | 支持(推荐) | 不支持(需手动处理) |
| 维护成本 | 低(集中管理语言 包) | 高(内容分散在代码中) |
| 灵活度 | 中等(依赖模板) | 高(完全自定义) |
| 适用场景 | 通用通知(如审核提醒、任务通知) | 临时/个性化通知(如注册欢迎、活动) |
$_G['setting']['notificationrepetition'] 控制重复通知行为:from_id、from_idtype、uid、type 完全相同时,视为重复通知,会更新已有通知的 from_num(累计次数)和时间戳,而非新建通知。$type 是判断通知唯一性的核心参数之一,建议按以下规则命名:C::t('app_market')->fetch_appid_by_mod 获取应用 ID 并赋值给 from_id,from_idtype 设为 'app'。from_id 设为 0,from_idtype 可设为 'system' 或留空。$notevars 与语言包的变量替换逻辑,以及 $type 和 from_id 的唯一性约束。