## 官方文档地址 https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/novel.html#%E4%BB%8B%E7%BB%8D ## 跳转插件页 插件页的路径为 plugin-private://wx293c4b6097a8a4d0/pages/novel/index?bookId=xxx,该路径可以当成普通页面路径进行使用,通过 navigateTo 或 redirectTo 等方法进行跳转。 ``` wx.redirectTo({ url: 'plugin-private://wx293c4b6097a8a4d0/pages/novel/index?bookId=xxx' }) bookId 是 书籍 id customServerParams 否 透传到服务器的参数,因为是在 path 上,所以如果含有特殊字符,需自行 encode,防止解析出错 chapterIndex 否 跳转章节下标(从 0 开始) paragraphIndex 否 跳转段落下标,默认 0(从 0 开始) fontSize 否 指定默认字体大小(0 - 9 从小到大) turnPageWay 否 指定默认翻页方式:TURN_PAGE_WAY_SWIPE - 覆盖翻页;TURN_PAGE_WAY_MOVE - 平移翻页;TURN_PAGE_WAY_SCROLL - 上下翻页 backgroundConfigIndex 否 指定默认背景色序号,默认为 1(可传入值 1 - 5) isNightMode 否 指定默认是否夜间模式,传入 1 则表示默认为夜间模式 blockUnpaidScroll 否 传入值为 1 时,滑动到未解锁章节会阻塞住,用户无法往下滑动;传入值为 0 时则不做阻塞;默认值为 1 disableAutoShowChargeDialog 否 传入值为 0 时,进入未解锁章节时会自动拉起付费弹窗;传入值为 1 时则关闭此特性;默认值为 0 showListenButton 否 是否显示听书按钮,传入值为 1 时则显示听书按钮;默认为 0,即不显示 listenForFree 否 传入值为 1 时表示全书可免费听;传入值为 0 时表示在听书时遇到未解锁内容时会自动停止;默认值为 0 recommendMode 否 传入值为 1 时显示读后推荐列表;传入值为 2 时显示读后推荐沉浸模式;默认值为 1 注意: bookId 是书籍 id,创建作品后会返回,详情可参考小说作品管理接口文档[https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/novel-api.html] chapterIndex 和 paragraphIndex 用于强制跳转到指定章节和段落;用户的阅读进度由阅读器自行保存,无需接入方维护。(跳过封面页面直接进入小说) fontSize 参数用于修改默认字体大小,若用户已经设置过字体大小,则该参数无效。turnPageWay 参数同理。 如果当前书籍的音频未生成,就算传入 showListenButton 也不会显示听书按钮。 ``` ## 点击小说直接进入阅读跳过封面 ### 要点 1.需要chapterIndex章节下标,默认用户未读是为0第一章,需要按用户阅读记录从后端获取 2.用户点击书籍想跳过封面需要传入chapterIndex参数直接跳转到指定章节阅读 3.不传入chapterIndex,默认进入小说封面页面,但是官方阅读器会记录用户上次阅读到的章节和段落。 4.想跳过封面页面,需每次记录用户阅读到第几章保存到后端服务,用户点击跳转书籍时需要拼入章节下标参数 ``` wx.redirectTo({ url: 'plugin-private://wx293c4b6097a8a4d0/pages/novel/index?bookId=xxx&chapterIndex=xxx' }) ``` ## 所有自定义组件都是固定槽 1.就是段落组件只能引用固定的段落组件,无法定义多个段落组件插入到不同位置,但是可以用插件监听回调去改变一个组件的展示位置,再在组件内部去判断展示不同的内容。缺点,相同组件不同出现在同屏,否则被覆盖,所以相同组件出现在章节底部和章节头部时,会出现问题。(每章最多插入10个段落组件,测试好像是同时调用 novelManager.setParagraphBlock时会出现覆盖的情况,需分开监听事件调用,比如获取章节时调用一次,翻页时调用一次,) ``` case "get_chapter": // 此处做用户阅读记录 console.log("拉取章节数据结束", res) setParagraphBlockShow({ position: 1, url: "https://corp-msg.oss-cn-hangzhou.aliyuncs.com/17690515679881A59E8C30C7B4FA492E1DE7E0491D389.jpg" }) break; case "change_chapter": console.log("切换章节") Taro.getApp().$app.globalData.page = 0 break; case "change_page": console.log("翻页", res) let old_chapter_id = Taro.getApp().$app.globalData.chapter_id let page = Taro.getApp().$app.globalData.page console.log("old_chapter_id", old_chapter_id == res.chapter_id, page) if (page == 1 && old_chapter_id == res.chapter_id) { console.log("翻页设置二维码") setParagraphBlockShow({ position: 9999, url: "https://corp-msg.oss-cn-hangzhou.aliyuncs.com/17691320273453CC69B74C948475A83C3EB9B88D4E666.png" }) } if (old_chapter_id != res.chapter_id) { Taro.getApp().$app.globalData.chapter_id = res.chapter_id } Taro.getApp().$app.globalData.page += 1 break; ```