- 🏠 简介
- 🔌 api接口
-
🔧 插件开发
- 介绍
- 插件优势
- 新建插件
- 技术栈
- 插件开发规范
- 插件目录结构
- model 层开发
- service 层开发
- api 接口开发
- menu 菜单开发
-
event 事件钩子开发
- 开发指南
- 常用事件
- SiteInit 站点初始化事件
- AddSiteAfter 站点创建后事件
- MemberRegister 会员注册后事件
- MemberLogin 会员登录后事件
- PayCreate 支付创建事件
- PaySuccess 支付成功事件
- RefundSuccess 退款成功事件
- TransferSuccess 转账成功事件
- BottomNavigation 底部导航事件
- NoticeData 消息模板数据内容事件
- GetQrcodeOfChannel 创建二维码事件
- ExportDataType 导出数据类型事件
- ExportData 导出数据源事件
- GetPosterType 海报类型事件
- GetPosterData 海报数据事件
- ShowCustomer 应用管理加载事件
- GetWechatTransferTradeScene 微信支付转账场景事件
- ThemeColor 主题风格事件
- initWap 手机端初始化加载事件
- dict 数据字典开发
- layout 自定义布局开发
- job 消息队列和计划任务开发
- notice 消息发送开发
- printer 小票打印模板开发
- export 数据导出开发
- diy 自定义组件/页面装修开发
- diy 自定义表单组件开发
- poster 自定义海报开发
- icon 引入图标
- 支付方式开发
- upgrade 插件版本升级
- 打包插件
- 授权信息变更回调通知
- 官网上架
- 📝 二次开发须知
- 👨💻 二次开发指导
-
🎬 二次开发应用插件视频教程
- 二次开发安装视频教程
- 准备工作与创建插件
- 插件目录整体说明
- 插件admin目录
- 插件app目录说明(adminapi、api、验证器)
- 插件app目录(dict、job)
- 插件app目录说明(lang、listener)
- 插件app目录说明(model、service)
- 插件uniapp目录说明
- 插件开发之后台功能开发(代码生成器)
- 插件开发之uniapp功能开发(api)第一节
- 插件开发之uniapp功能开发(api)第二节
- 插件开发之uniapp功能开发(api)第三节
- 插件安装与打包原理
- 消息队列开发
- 计划任务开发
- DIY组件和自定义页面装修开发
- 支付接口开发
- 插件升级包打包流程以及云编译功能
自定义链接
功能介绍
自定义链接功能支持用户在DIY页面装修中为按钮、图片、文字等组件配置点击跳转行为,支持内部页面、外部URL和特殊场景的跳转类型,精准且符合业务场景需求。
自定义链接会在页面路径功能中显示

框架开发的自定义链接
系统框架定义了一些自定义链接,同时还会加载插件的自定义链接
如需了解自定义链接的核心原理,开发者可以自行阅读
文件位置:niucloud\app\dict\diy\LinkDict.php

插件开发自定义链接
文件位置:niucloud/addon/shop/app/dict/diy/links.php
关键代码
<?php
return [
'SHOP_BASE_LINK' => [ // 自定义链接分组关键字key
'title' => get_lang('dict_diy.shop_link'), // 自定义链接分组名称
'type' => 'folder', // 类型,folder 表示文件夹,link 表示链接
'child_list' => [
[
'name' => 'SHOP_LINK', // 二级自定义链接分组关键字key
'title' => get_lang('dict_diy.shop_link_basic'), // 分组名称
'child_list' => [
[
'name' => 'SHOP_INDEX', // 链接关键字key
'title' => get_lang('dict_diy.shop_link_index'), // 链接名称
'url' => '/addon/shop/pages/index', // uni-app 手机端路由地址
'is_share' => 1, // 是否支持分享 1:支持,0:不支持
'action' => 'decorate' // 是否支持装修,空为不支持,decorate:表示支持装修
]
]
],
[
'name' => 'SHOP_GOODS_SELECT', // 链接关键字key
'title' => get_lang('dict_diy.shop_link_goods_select'), // 链接名称
'component' => '/src/addon/shop/views/goods/components/goods-select-content.vue' // 组件路径,自行开发,定义数据源,链接地址
]
],
],
];
定义自定义链接的语言包
开发完成后,添加一个标题组件,点击链接地址,打开链接选择弹框即可看到

扩展链接,自定义数据选择组件
如果固定的自定义链接无法满足业务需求,开发者可以根据自身业务需求,自行开发扩展链接,定义数据结构,链接地址等
效果图如下:
商城插件自行开发的选择商品的组件
关键代码

<?php
return [
'SHOP_BASE_LINK' => [
'title' => get_lang('dict_diy.shop_link'),
'type' => 'folder', // 类型,folder 表示文件夹,link 表示链接
'child_list' => [
[
'name' => 'SHOP_GOODS_SELECT',
'title' => get_lang('dict_diy.shop_link_goods_select'),
'component' => '/src/addon/shop/views/goods/components/goods-select-content.vue'
]
]
]
];
goods-select-content.vue组件代码参考
组件必须要定义getData方法,暴露到外层,数据结构要保持一致

关键代码
const getData = () => {
// todo 编写业务代码
return {
name: 'SHOP_GOODS_DETAIL', // 自定义链接关键字key
title: '', // 链接名称
url: `/addon/shop/pages/goods/detail?goods_id=${goods_id}`, // 链接地址
action: '', // 是否支持装修,空为不支持,decorate:表示支持装修
goodsIds: goodsIds.value
}
}
defineExpose({
getData
})
效果图

diy-link框架封装的自定义链接组件
开发者在开发自定义组件的右侧编辑属性组件时,可能需要设置自定义链接的业务场景。此时可以引入系统框架封装的diy-link自定义链接选择弹框组件
效果图
如需了解自定义链接的核心原理,开发者可以自行阅读
文件位置:admin/src/components/diy-link/index.vue

定义存储自定义链接的字段
组件需要定义存储自定义链接的字段。例如,link(名称可以修改)。注意:一定要加上 name = "",否则php空数组将会转换成JavaScript空对象,导致数据绑定出现问题

"link" => [
"name" => ""
]
前端调用自定义链接组件的关键代码
diyStore.editComponent为当前选中装修组件的数据结构
<el-form-item :label="t('link')">
<diy-link v-model="diyStore.editComponent.link" />
</el-form-item>
效果图

uni-app调用自定义链接跳转
框架定义了diyRedirect自定义跳转链接方法
diyStore定义了toRedirect自定义链接跳转方法,开发者可以调用
自定义组件中调用自定义链接跳转,代码参考
