var version={
author:"道长",
ver:"1.0.6",
desc:'已停更',
appv:2316,
requireId:"https://gitcode.net/qq_32394351/dr/-/raw/master/js/hikerUi.js",
update:'2022/07/26 13:50',
info:'新开模板,封装海阔UI',
ua:';get;utf-8;{User-Agent@Mozilla/5.0&&Cookie@}',
ok:'https://okjx.cc/?url=',
jsRoot:'https://gitcode.net/qq_32394351/dr/-/raw/master/js/',
};
putVar('hikerUi',version.requireId);
function color(text, color) {
text += "";
if (text.indexOf("““””") === 0) {
text.replace("““””", "");
}
return "““””" + text + "";
}
function htmlTag(tag, text) {
text += "";
if (text.indexOf("““””") === 0) {
text.replace("““””", "");
}
return "““””" + "<" + tag + ">" + text + "" + tag + ">";
}
function small(text) {
return htmlTag("small", text);
}
function right(text) {
return ''+text+'';
}
function blank(){
return '\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'
}
var 汉字转数字 = (function(){
var map = {
"零": 0, "一": 1, "壹": 1, "二": 2, "贰": 2, "两": 2, "三": 3, "叁": 3,
"四": 4, "肆": 4, "五": 5, "伍": 5, "六": 6, "陆": 6, "七": 7, "柒": 7,
"八": 8, "捌": 8, "九": 9, "玖": 9, "十": 10, "拾": 10, "百": 100, "佰": 100,
"千": 1000, "仟": 1000, "万": 10000, "十万": 100000, "百万": 1000000, "千万": 10000000, "亿": 100000000
};
// 解析失败返回-1,成功返回转换后的数字,不支持负数
function numberDigit(chinese_number) {
var len = chinese_number.length;
if (len == 0) return -1;
if (len == 1) return (map[chinese_number] <= 10) ? map[chinese_number] : -1;
var summary = 0;
if (map[chinese_number[0]] == 10) {
chinese_number = "一" + chinese_number;
len++;
}
if (len >= 3 && map[chinese_number[len - 1]] < 10) {
var last_second_num = map[chinese_number[len - 2]];
if (last_second_num == 100 || last_second_num == 1000 || last_second_num == 10000 || last_second_num == 100000000) {
for (var key in map) {
if (map[key] == last_second_num / 10) {
chinese_number += key;
len += key.length;
break;
}
}
}
}
if (chinese_number.match(/亿/g) && chinese_number.match(/亿/g).length > 1) return -1;
var splited = chinese_number.split("亿");
if (splited.length == 2) {
var rest = splited[1] == "" ? 0 : numberDigit(splited[1]);
return summary + numberDigit(splited[0]) * 100000000 + rest;
}
splited = chinese_number.split("万");
if (splited.length == 2) {
var rest = splited[1] == "" ? 0 : numberDigit(splited[1]);
return summary + numberDigit(splited[0]) * 10000 + rest;
}
var i = 0;
while (i < len) {
var first_char_num = map[chinese_number[i]];
var second_char_num = map[chinese_number[i + 1]];
if (second_char_num > 9)
summary += first_char_num * second_char_num;
i++;
if (i == len)
summary += first_char_num <= 9 ? first_char_num : 0;
}
return summary;
}
$.exports = numberDigit;
return $.exports;
})();
function 强制正序(list){//强制正序
let start = Math.floor(list.length/2); // 0
let end = Math.min(list.length-1,start+1); // list.slice(-1)[0]
let first = list[start].title;
let second = list[end].title;
try{
if(first.match(/(\d+)/)&&second.match(/(\d+)/)){ //数字章节的
if(parseInt(first.match(/(\d+)/)[0])>parseInt(second.match(/(\d+)/)[0])){
list.reverse()
}
}else{ // 中文转换
if(汉字转数字(first)>汉字转数字(second)){
list.reverse()
}
}
}catch(e){}
return list
}
if(typeof(lsg)==='undefined'){//如果私有储存未定义的话就定义这个全局变量
lsg = evalPrivateJS("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");
}
function 顺序切换(tab_cnt,list_cnt){
tab_cnt = tab_cnt||1;
list_cnt = list_cnt||0;
let tips1 = color('(☆逆序↑)','#228be6');
let tips2 = color('(★正序↓)','#d0aa344');
let showOrder = getMyVar('顺序','正序')==='逆序'?tips1:tips2;
let title = small(color('播放列表共计','#098AC1')+color('$tab_cnt','#d96715')+color('条线路 ','#098AC1')+color('$list_cnt','#d96715')+color('集','#098AC1'))+blank()+right(small('$showOrder'));
let title2 = title.replace('$tab_cnt',tab_cnt).replace('$list_cnt',list_cnt);
return {
title:title2.replace('$showOrder',showOrder),
col_type:'text_1',
url:$('#noLoading#').lazyRule((title2,tips1,tips2)=>{
if(getMyVar('顺序','正序')==='逆序'){
putMyVar('顺序','正序');
}else{
putMyVar('顺序','逆序');
}
let orderNow = getMyVar('顺序','正序');
// refreshPage(false);
let showOrder = orderNow==='逆序'?tips1:tips2;
updateItem('changeOrder',{
title:title2.replace('$showOrder',showOrder)
});
let nowData = JSON.parse(readFile("nowList.json",0)||'[]');// 读取缓存的选集数据列表
let oldIds = nowData.map(it=>it.extra.id);//老元素ids
for(let i in oldIds){//批量更新其中的cls
updateItem(oldIds[i],{extra:{cls:'toDelete'}});
}
if(orderNow==='逆序'){
nowData.reverse();
}
// 在最后一个老元素后面增加新的元素
addItemAfter(oldIds.slice(-1)[0],nowData);
// 删除老元素
deleteItemByCls('toDelete');
return 'toast://已切换顺序为:'+orderNow
},title2,tips1,tips2),
extra:{
lineVisible:false,
id:'changeOrder', //改变排序
}
}
}
function 选集储存(list,mode){//选集翻页前调用方法,也可以不调用,直接给选集翻页obj传参 list
mode === 1?saveFile('showList.json',JSON.stringify(list),0):storage0.putMyVar('showList',list);
return true
}
function 选集翻页(d,obj,showBottom){//d 是加入到数据,obj是构造对象,showBottom是否同时在底部显示
// 关键操作:选集列表extra必须有唯一id并且cls为playList
// 选集列表必须处理完后 storage0.putMyVar('showList') 或者 saveFile('showList.json',JSON.stringify(list),0)
showBottom = showBottom||false;//底部也显示5大件
let def_obj = {
list:[],//可以对象传递,不传的话默认取storage0.gettMyVar('showList')
size:Number(lsg.getItem('每页数量',40)),//每页数量
over:Number(lsg.getItem('翻页阀值',40)),//翻页阀值,超过多少才显示翻页组件
col_type:lsg.getItem('按钮样式','')||MY_RULE.col_type||'text_5',//二级选集样式
show_order:false,//显示排序切换
tab_cnt:1,//线路数
mode:1,// 模式,1用私有文件,其他用内存
}
obj = obj||{};
obj = Object.assign(def_obj,obj);
let pageTitleInfo = '';//翻页统计标题
let showPic = 'https://hikerfans.com/tubiao/ke/53.png';//翻页提示图标
let showCol = 'avatar';//翻页提示样式
let col_type = obj.col_type;//二级选集样式
let show_order = obj.show_order;//显示顺序
let tab_cnt = obj.tab_cnt; // 线路数量
let list = Array.isArray(obj.list)&&obj.list.length>0?obj.list:(obj.mode === 1?JSON.parse(readFile("showList.json",0) || "[]"):storage0.getMyVar('showList'));// 选集列表完整数据,请确保是强制正序的
if(list.length>0){
list = 强制正序(list);
if(!list[0].extra||!list[0].extra.id||!list[0].extra.cls){//选集列表大于0但是无id或者cls,循环修复后进行变量储存
list.forEach((it,idex)=>{
if(!it.extra){
it.extra = {}
}
if(!it.col_type){
it.col_type = col_type
}
let url = it.url.split('@')[0];
let id = /hiker:\/\/empty/.test(url)?(idex+''):url;
id = it.extra.id||id;
Object.assign(it.extra,{
id:id,
cls:'playList'
})
});
obj.mode === 1?saveFile('showList.json',JSON.stringify(list),0):storage0.putMyVar('showList',list);
}else if(!list[0].col_type){
list.forEach((it)=>{
it.col_type = col_type
});
obj.mode === 1?saveFile('showList.json',JSON.stringify(list),0):storage0.putMyVar('showList',list);
}
}
if(!(obj.mode === 1?JSON.parse(readFile("showList.json",0) || "[]"):storage0.getMyVar('showList'))){
obj.mode === 1?saveFile('showList.json',JSON.stringify(list),0):storage0.putMyVar('showList',list);
}
let showList = list;//首次渲染的选集列表
let 每页数量 = obj.size; // 分页的每页数量
let 最大页数 = Math.ceil(list.length/每页数量);
let 翻页阀值 = obj.over; // 分页的翻页阀值,超过多少才显示翻页
let nowPage = Number(getMyVar('选集翻页', '1'))||1; //当前页数
if(nowPage>最大页数){//防止切换线路导致页数数组越界
nowPage = 最大页数;
putMyVar('选集翻页', ''+nowPage);
}
if(list.length>翻页阀值&&getMyVar('选集显示', '分页') === '分页'){
let maxNum = 每页数量*nowPage; //第一页的话,最大显示40*1集,第2页41-80集
showList = list.slice((nowPage-1)*每页数量,maxNum);
}
saveFile("nowList.json", JSON.stringify(showList),0);// 将当前页的选集变量储存列表
if (getMyVar('顺序', '正序') === '逆序') {//对该页的数据进行正逆序排列
showList = showList.reverse();
}
function jumpToPage(每页数量,toPage,nowPage,pageTitleInfo,mode){//跳页
if(nowPage===toPage){
return //跳转页数等于当前页,不操作
}
// showLoading(`正在前往第${toPage}页,请稍等`);
let oldIds = (findItemsByCls('playList')||[]).map(it=>it.extra.id);//老元素ids
let showList = (mode === 1?JSON.parse(readFile("showList.json",0) || "[]"):storage0.getMyVar('showList')); //获取储存的选集列表
let maxNum = 每页数量*toPage; //第一页的话,最大显示40*1集,第2页41-80集
showList = showList.slice((toPage-1)*每页数量,maxNum);
saveFile("nowList.json", JSON.stringify(showList),0);// 将当前页的选集变量储存列表
if (getMyVar('顺序', '正序') === '逆序') {
showList = showList.reverse();
}
let toDeleteIds = [];//待删除的旧id
let toAddDatas = [];//待新增的新数据
if(oldIds.length > showList.length){
toDeleteIds = oldIds.slice(showList.length);
}else if(oldIds.length < showList.length){
toAddDatas = showList.slice(oldIds.length)
}
let cnt = Math.min(oldIds.length,showList.length);
let pageTitle = pageTitleInfo.replace('$page',getMyVar('选集翻页', '1')).replace('$cnt',showList.length);
pageTitle = pageTitle.replace(/““””/g,'');
updateItem('pageTitle',{
title:pageTitle
});
if(toDeleteIds.length>0){//有删除的先删除
deleteItem(toDeleteIds);
}
if(toAddDatas.length>0){//有新增的先新增
addItemAfter(oldIds[cnt-1],toAddDatas);
}
for(let i=0;i0){
let order_data = 顺序切换(tab_cnt,list.length);
d.push(order_data);
}
if(list.length>obj.size) {//传入的数据数组大于翻页的每页数量,已经包含大于0判断了
let pageTitle = '';
if (getMyVar('选集显示', '分页') === '分页') {
pageTitleInfo = color('翻页模式已启用 本页:','#585858')+color('$cnt', '#d96715')+color(' 共计:','#585858')+color(list.length, '#d96715')+color('集 第:','#585858') + color('$page'+'/'+最大页数, '#d96715')+color('页','#585858');
pageTitleInfo = small(pageTitleInfo);
pageTitle = pageTitleInfo.replace('$page',getMyVar('选集翻页', '1')).replace('$cnt',showList.length).replace(/““””/g,'');
} else {
pageTitle = color('翻页模式已关闭,点击启用','#585858');
pageTitle = small(pageTitle).replace(/““””/g,'');
pageTitle = pageTitle.replace(/““””/g,'');
}
d.push({
title: pageTitle,
col_type: showCol,
pic_url:showPic,
url: $('确认切换分页显示状态?').confirm(() => {
let nextMode = getMyVar('选集显示', '分页') === '分页' ? '全部' : '分页';
putMyVar('选集显示', nextMode);
refreshPage(false); // 开关动态难以实现,放弃
/*
if(nextMode==='全部'){
let showList = storage0.getMyVar('showList'); //获取储存的选集列表
if (getMyVar('顺序', '正序') === '逆序') {//对该页的数据进行正逆序排列
showList = showList.reverse();
}
deleteItemByCls('playList');
addItemAfter('page',showList);
}
*/
return 'hiker://empty'
}),
extra:{
id:'pageTitle'
}
});
if (getMyVar('选集显示', '分页') === '分页') {
btns.push({
title: '✈️跳集',
col_type: "text_5",
url: $(list.length,'请输入要跳转到的集数').input((max,每页数量,pageTitleInfo,jumpToPage,mode)=>{
if(isNaN(parseInt(input))){
return 'toast://输入有误,请输入一个1~'+max+'的数字'
}
let toNum = parseInt(input);
if(toNum<1||toNum>max){
return 'toast://输入有误,请输入一个1~'+max+'的数字'
}
let nowPage = Number(getMyVar('选集翻页', '1'))||1; //当前页数
let toPage = Math.ceil(toNum/每页数量);
putMyVar('选集翻页', '' + toPage);
jumpToPage(每页数量,toPage,nowPage,pageTitleInfo,mode);
return 'toast://已跳到列表元素第'+toNum+'个所在页码:'+toPage
},list.length,每页数量,pageTitleInfo,jumpToPage,obj.mode)
});
btns.push({
title: '🔝跳页',
col_type: "text_5",
url: $(1,'请输入要跳转到的页数').input((最大页数,每页数量,pageTitleInfo,jumpToPage,mode)=>{
if(isNaN(parseInt(input))){
return 'toast://输入有误,请输入一个1~'+最大页数+'的数字'
}
let toPage = parseInt(input);
if(toPage<1||toPage>最大页数){
return 'toast://输入有误,请输入一个1~'+最大页数+'的数字'
}
let nowPage = Number(getMyVar('选集翻页', '1'))||1; //当前页数
putMyVar('选集翻页', '' + toPage);
jumpToPage(每页数量,toPage,nowPage,pageTitleInfo,mode);
return 'toast://已跳到第'+toPage+'页'
},最大页数,每页数量,pageTitleInfo,jumpToPage,obj.mode)
});
btns.push({
title: '⏮️上页',
col_type: "text_5",
url: $('#noLoading#').lazyRule((每页数量,pageTitleInfo,jumpToPage,mode) => {
let nowPage = parseInt(getMyVar('选集翻页', '1'))||1;
let toPage = nowPage - 1;
if(toPage>0) {
putMyVar('选集翻页', '' + toPage);
jumpToPage(每页数量,toPage,nowPage,pageTitleInfo,mode);
return 'hiker://empty'
}else{
return 'toast://已经没有上一页了!'
}
},每页数量,pageTitleInfo,jumpToPage,obj.mode)
});
btns.push({
title: '⏭️下页',
col_type: "text_5",
url: $('#noLoading#').lazyRule((最大页数,每页数量,pageTitleInfo,jumpToPage,mode) => {
let nowPage = parseInt(getMyVar('选集翻页', '1'))||1;
let toPage = nowPage + 1;
if(toPage>最大页数){
return 'toast://已经没有下一页了!'
}
putMyVar('选集翻页', '' + toPage);
jumpToPage(每页数量,toPage,nowPage,pageTitleInfo,mode);
return 'hiker://empty'
},最大页数,每页数量,pageTitleInfo,jumpToPage,obj.mode)
});
btns.push({
title: '🔚尾页',
col_type: "text_5",
url: $('#noLoading#').lazyRule((最大页数,每页数量,pageTitleInfo,jumpToPage,mode) => {
let toPage = 最大页数;
let nowPage = Number(getMyVar('选集翻页', '1'))||1; //当前页数
putMyVar('选集翻页', ''+toPage);
jumpToPage(每页数量,toPage,nowPage,pageTitleInfo,mode);
return 'toast://已跳转到第'+最大页数+'页'
},最大页数,每页数量,pageTitleInfo,jumpToPage,obj.mode)
});
seps.push({
col_type:"line_blank",
extra:{
id:'page' // 给翻页组件做id用
}
})
}
}
Array.prototype.push.apply(d,btns);//顶部显示翻页开关
Array.prototype.push.apply(d,seps);//下面分割
Array.prototype.push.apply(d,showList);//刷新有效的链接
if(showBottom&&list.length>obj.size){
d.push({col_type:"line_blank"});
Array.prototype.push.apply(d,btns);//底部显示翻页开关
}
// d = d.concat(showList);//刷新有效的链接,不支持concat
return d
}
function 剧情简介(d,obj){
let def_obj = {
title:MY_PARAMS.title, // 小说/漫画名称
info:'暂无详情',
content:'',//点击详情进入的rich_text页面
download:'',//下载类型
limit:Number(lsg.getItem('简介字数','100')),//限制最大显示字数
}
obj = obj||{};
obj = Object.assign(def_obj,obj);
let download_text = '';
var bookName = obj.title;
var ruleName = MY_RULE.title;
if(/小说|漫画/.test(obj.download)){
const Config = $.require("hiker://page/Config.json?rule=本地资源管理");
rootPath = obj.download ==='小说'?Config.novelPath:Config.comicPath;
download_text = '下载'.link($().b64("'").lazyRule(() => {
let rule_exits = fetch('hiker://home@本地资源管理');
rule_exits = rule_exits!=='null'&&rule_exits!=='';
if(!rule_exits){
return $('未安装[本地资源管理]小程序,无法下载资源,现在安装?').confirm(()=>{
let ruleHead = '海阔视界首页频道规则【本地资源管理】¥home_rule_url¥';
let rulecode = 'rule://'+base64Encode(ruleHead+'http://hiker.nokia.press/hikerule/rulelist.json?id=3559');
return rulecode
});
}else{
return "hiker://page/download.view#noHistory##noRecordHistory##noRefresh#?rule=本地资源管理";
}
}));
download_text+='\t\t\t\t\t';
download_text+='更新下载器'.link($().b64("'").lazyRule(() => {
let ruleHead = '海阔视界首页频道规则【本地资源管理】¥home_rule_url¥';
let rulecode = 'rule://'+base64Encode(ruleHead+'http://hiker.nokia.press/hikerule/rulelist.json?id=3559');
return rulecode
}));
download_text+='\t\t\t\t\t';
download_text += '本地阅读'.link($().b64("'").lazyRule((bookName, ruleName,download,rootPath) => {
let rule_exits = fetch('hiker://home@本地资源管理');
rule_exits = rule_exits !== 'null' && rule_exits !== '';
if (!rule_exits) {
return $('未安装[本地资源管理]小程序,无法本地阅读,现在安装?').confirm(() => {
let ruleHead = '海阔视界首页频道规则【本地资源管理】¥home_rule_url¥';
let rulecode = 'rule://' + base64Encode(ruleHead + 'http://hiker.nokia.press/hikerule/rulelist.json?id=3559');
return rulecode
});
} else {
let bindUrl = download ==='小说'?'hiker://page/NovelBrowser.view':'hiker://page/ComicBrowser.view';
let localReadUrl = buildUrl(bindUrl, {
hasParams: true,
rule: "本地资源管理",
path: encodeURIComponent(rootPath + ruleName + "/" + bookName),
name: encodeURIComponent(bookName)
});
return localReadUrl
}
}, bookName, ruleName,obj.download,rootPath));
}
let limit_text = obj.info.substring(0,obj.limit)+'...';
let rich_html = ("剧情简介\t\t\t\t\t"+download_text+"
").fontcolor("#098AC1")+limit_text.fontcolor("grey").small();
let aData;
if(obj.content){
aData = [{
title:obj.content,
col_type:"rich_text"
}]
}else{
aData = [{
title:obj.info,
col_type:"long_text"
}]
}
rich_html = rich_html+"查看详情".fontcolor("#098AC1").small().link($().b64("'").rule(d => setResult(d), aData));
d.push({
title:rich_html,
col_type:"rich_text",
extra:{
lineVisible: false,
textSizeb:11,
lineSpacing:-11
},
});
return d
}
function 海报(d,obj){
let def_obj = {
noCj:false,//不用沉浸
dp:false,//启用断插
title:MY_PARAMS.title, //标题
pic_url:MY_PARAMS.pic_url,//图片
url:MY_PARAMS.pic_url||MY_PARAMS.url,//链接
desc:MY_PARAMS.desc,//描述
}
obj = obj||{};
obj = Object.assign(def_obj,obj);
let _col_type=obj.noCj?"movie_1_vertical_pic":"movie_1_vertical_pic_blur";
d.push({
title:small(obj.title),
pic_url:obj.pic_url,
url:obj.dp?'hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory##noRecordHistory#':obj.pic_url,
desc:small(obj.desc),
col_type:_col_type
});
setPagePicUrl(obj.pic_url); // 动态设置二级收藏图片
return d
}
function isPic(str){//判断是否为图片
if(!str){
return false
}
return /\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(str);
}
function 一级传参(d,obj){
let def_obj = {
noRef:false,//图片不用referer
noCj:false,//不用沉浸
}
obj = obj||{};
obj = Object.assign(def_obj,obj);
d.forEach((it)=>{
if(!obj.noRef&&isPic(it.pic_url)&&!/@Referer=/.test(it.pic_url)){
it.pic_url+='@Referer='
}
if(!obj.noRef&&isPic(it.img)&&!/@Referer=/.test(it.img)){
it.img+='@Referer='
}
if(!obj.noCj&&!/#immersiveTheme#/.test(it.url)&&!/@lazyRule=|@rule=/.test(it.url)){//加上沉浸
it.url+='#immersiveTheme#'
}
it.extra.url = it.url||'';
it.extra.pic_url = (it.pic_url||it.img)||'';
it.extra.title = it.title||'';
it.extra.desc = it.desc||'';
it.extra.content = it.content||'';
});
return d
}
function 获取正确链接(rule,url,调试){
true_url = (typeof(true_url)!=='undefined'&&true_url)?true_url:getMyVar('header.url', MY_URL); //隐士全局变量,外面可以不传
page = (typeof(page)!=='undefined'&&page)?page:MY_PAGE;
// config.动态分类匹配
rule = rule||[];
url = url||'';
调试 = 调试||false;
if(url.startsWith('hiker://')){
try {
let code = fetch(url);
eval(code);
if (rule.constructor === Array) {
rule = rule.concat(matches);
} else {
matches.unshift(rule);
rule = matches;
}
}catch (e) {}
}
// log($.stringify(rule));
let 链接处理工具 = require('http://hiker.nokia.press/hikerule/rulelist.json?id=2849');
if(调试===true){
链接处理工具.debug();
}
true_url = 链接处理工具
.链接(true_url)
.页码(page)
.插入新处理规则(rule)
.获取处理结果();
return true_url
}
function 打造动态分类(定位列表,extra){
page = (typeof(page)!=='undefined'&&page)?page:MY_PAGE;
let cates=[];
if((Array.isArray(定位列表)&&定位列表.length<1)||!Array.isArray(定位列表)){
return cates
} else if(Array.isArray(定位列表)&&定位列表.length>0&&!定位列表[0].一级分类){//一级分类为空也返回空
return cates
}
extra = extra||{};
// log('html类型:'+typeof(html));
单次请求 = extra.单次请求||false;
分类颜色 = extra.分类颜色||(lsg.getItem('分类颜色','#1aad19')||'#1aad19');
源码 = extra.源码||'';
折叠 = extra.关闭折叠||'';
模式 = extra.模式||'';
if(折叠!==''){
关闭折叠 = !!折叠;
}else {
关闭折叠 = typeof (关闭折叠) === 'undefined' ? false : 关闭折叠;
}
// let ua = config.ua==='手机'?MOBILE_UA:PC_UA;
if(源码) {
html = 源码;
}else{
// html = (typeof (html) === 'undefined' || !html) ? (单次请求 ? getResCode() : 获取源码(true_url, ua)) : html;//全局变量,外部传进来的
html = (typeof (html) === 'undefined' || !html) ? (单次请求 ? getResCode() : 获取源码(true_url)) : html;//全局变量,外部传进来的
}
const 当前折叠状态 = getMyVar('header.fold', '1');
let 动态分类=require(version.jsRoot+'categories-header.js');
let drzd = '““””∨';
let drzk = '““””∧';
动态分类.界面(cates)
.分类链接(true_url)
.选中的分类颜色(分类颜色)
.源码(html)
.页码(page)
.添加分类定位(定位列表)
if(!关闭折叠){
动态分类.开启内置折叠功能() // 必须
.折叠按钮样式({ title: 当前折叠状态==="1"?(lsg.getItem('折叠样式',drzd)||drzd):(lsg.getItem('展开样式',drzk)||drzk) }) // 可选
.第几行开始折叠(1) // 可选
.折叠按钮样式({ 折叠按钮插入行: 1 })
.折叠(当前折叠状态) // 必须
}
动态分类.开始打造分类();
return cates
}