文章仅供学习,不得非法用途,作者如需删除请联系管理!
要移除首页的推荐广告内容,需要修改以下几个关键函数
get_index_list() 函数中的推荐软件部分:
var softboxsum = 12;
var softboxcon = '';
get_index_list() 函数中的推荐软件部分:
// 推荐安装软件
try {
var recomConfig = product_recommend.get_recommend_type(1)
if (recomConfig) {
var pay_status = product_recommend.get_pay_status();
for (var i = 0; i < recomConfig['list'].length; i++) {
var item = recomConfig['list'][i];
if (setup_length > softboxsum) break;
if (pay_status.is_pay && item['install']) continue;
softboxcon += '<div class="col-sm-3 col-md-3 col-lg-3">\
<div class="recommend-soft recom-iconfont">\
<div class="product-close hide">关闭推荐</div>\
<div class="images"><img src="/static/img/soft_ico/ico-'+ item['name'] + '.png"></div>\
<div class="product-name">'+ item['title'] + '</div>\
<div class="product-pay-btn">\
'+ ((item['isBuy'] && !item['install']) ?
'<button class="btn btn-sm btn-success home_recommend_btn" style="margin-left:0;" onclick="bt.soft.install(\'' + item['name'] + '\')">立即安装</button>' :
'<a class="btn btn-sm btn-default mr5 ' + (!item.preview ? 'hide' : '') + '" href="' + item.preview + '" target="_blank">预览</a><button type="submit" class="btn btn-sm btn-success home_recommend_btn" onclick=\"product_recommend.pay_product_sign(\'ltd\',' + item.pay + ',\'' + item.pluginType + '\')\">购买</button>') + '\
</div>\
</div>\
</div>'
setup_length++;
}
}
} catch (error) {
console.log(error)
}
//软件位置移动
if (setup_length <= softboxsum) {
for (var i = 0; i < softboxsum - setup_length; i++) {
softboxcon += '<div class="col-sm-3 col-md-3 col-lg-3 no-bg"></div>'
}
}
$("#indexsoft").append(softboxcon);
//软件位置移动
$("#indexsoft").dragsort({ dragSelector: ".spanmove", dragBetween: true, dragEnd: saveOrder, placeHolderTemplate: "<div class='col-sm-3 col-md-3 col-lg-3 dashed-border'></div>" });
function saveOrder() {
var data = $("#indexsoft > div").map(function () { return $(this).attr("data-id"); }).get();
data = data.join('|');
bt.soft.set_sort_index(data)
};
这行优点语法错误改了一下
<div class="bt-form-line"> <label for="notice" style="cursor: pointer;"><input id="notice" disabled="disabled" type="checkbox" style="vertical-align: text-top;margin-right:5px"></input><span style="font-weight:500">我已查看“<b>《申请内测须知》</b>”<i id="update_time"></i></span></label>\</div>\
移除 recommend_paid_version() 函数相关调用:
product_recommend.init(function () {
index.recommend_paid_version()
index.get_index_list();
})
移除整个 recommend_paid_version() 函数:
/**
* @description 推荐进阶版产品
*/
recommend_paid_version: function () {
try {
var recomConfig = product_recommend.get_recommend_type(0)
var pay_status = product_recommend.get_pay_status()
var is_pay = pay_status.is_pay;
var advanced = pay_status.advanced;
var end_time = pay_status.end_time;
var html = '', list_html = '';
if (!is_pay) advanced = ''; //未购买的时候,使用推荐内容
if (recomConfig) {
var item = recomConfig;
for (var j = 0; j < item['ps'].length; j++) {
var element = item['ps'][j];
list_html += '<div class="item">' + element + '</div>';
}
var pay_html = '';
if (is_pay) {
pay_html = '<div class="product-buy ' + (advanced || item.name) + '-type">到期时间:<span>' + (end_time === 0 ? '永久授权' : (end_time === -2 ? '已过期' : bt.format_data(end_time, 'yyyy-MM-dd')) + ' <a class="btlink" href="javascript:;" onclick="product_recommend.pay_product_sign(\'' + advanced + '\',' + item.pay + ',\'' + advanced + '\')">续费</a>') + '</span></div>'
} else {
pay_html = '<div class="product-buy"><button type="button" class="btn btn-xs btn-success" onclick="product_recommend.pay_product_sign(\'' + (advanced || item.name) + '\',' + item.pay + ',\'ltd\')">立即购买</button></div>'
}
html = '<div class="conter-box bgw">\
<div class="recommend-top pd15 '+ (is_pay ? (advanced + '-bg') : '') + '">' + (!is_pay ? pay_html : '') + '<div class="product-ico ' + (advanced || item.name) + '' + (!is_pay ? '-pay' : '') + '-ico"></div>' + (is_pay ? pay_html : '') + '\
<div class="product-label">'+ list_html + '</div>\
</div>\
</div>'
//交互优化------普通用户才显示横幅
var day_not_display = bt.get_storage('home_day_not_display') //获取不再显示最终的时间戳
if((day_not_display && parseInt(day_not_display) < new Date().getTime()) || !day_not_display) $('#home-recommend').html(html)
$('#home-recommend').hover(function(){
if(!$('#home-recommend .day-not-display').length) $(this).css('position','relative').append('<div class="day-not-display">近'+ (is_pay ? '3天' : '24小时') +'不再显示<span></span></div>')
$('#home-recommend .day-not-display').fadeIn("1000")
$('#home-recommend .day-not-display span').unbind('click').click(function(){
bt.set_storage('home_day_not_display', (new Date().getTime() + 86400*1000*(is_pay ? 3 : 1))) //设置3天不再显示最后的时间戳
$('#home-recommend').empty()
})
},function(){
$('#home-recommend .day-not-display').hide()
})
//交互优化------普通用户才显示横幅end
}
} catch (error) {
console.log(error)
}
},
这样修改后将会:
移除首页的推荐软件广告
只显示已安装的软件
移除付费版本的推荐横幅
建议在修改前先备份原文件。这些修改会让首页更加简洁,只显示必要的系统信息和已安装软件。
修改后发现首页一直在获取软件
从代码和现象来看,问题可能出在以下几个地方:
我们虽然注释掉了 product_recommend.init() 的调用,但是没有正确初始化 get_index_list()。需要直接调用它:
// 改为直接调用
index.get_index_list();
在 get_index_list() 函数中,我们需要确保即使在获取数据失败的情况下也能正确处理:
// 添加错误处理
if(!rdata) {
$("#indexsoft").html('<div class="text-center" style="width:100%">暂无数据</div>');
return;
}
dragEnd: saveOrder,
dragEnd: function() {
var data = $("#indexsoft > div").map(function () {
return $(this).attr("data-id");
}).get();
data = data.join('|');
bt.soft.set_sort_index(data)
},
确保 saveOrder 函数的定义:
var that = this;
function saveOrder() {
var data = $("#indexsoft > div").map(function () {
return $(this).attr("data-id");
}).get();
data = data.join('|');
bt.soft.set_sort_index(data)
}
dragEnd: function() {
var data = $("#indexsoft > div").map(function () {
return $(this).attr("data-id");
}).get();
data = data.join('|');
bt.soft.set_sort_index(data)
},
建议的完整修改如下:
bt.soft.get_index_list(function (rdata) {
if(!rdata) {
$("#indexsoft").html('<div class="text-center" style="width:100%">暂无数据</div>');
return;
}
$('.soft_masks').hide();
var con = '';
var icon = '';
var rlen = rdata.length;
var clickName = '';
var setup_length = 0;
for (var i = 0; i < rlen; i++) {
if (rdata[i].setup) {
setup_length++;
if (rdata[i].admin) {
clickName = ' onclick="bt.soft.set_lib_config(\'' + rdata[i].name + '\',\'' + rdata[i].title + '\')"';
} else {
clickName = 'onclick="soft.set_soft_config(\'' + rdata[i].name + '\')"';
}
var icon = rdata[i].name;
if (bt.contains(rdata[i].name, 'php-')) {
icon = 'php';
rdata[i].version = '';
}
var status = '';
if (rdata[i].status) {
status = '<span style="color:#20a53a" class="glyphicon glyphicon-play"></span>';
} else {
status = '<span style="color:red" class="glyphicon glyphicon-pause"></span>'
}
con += '<div class="col-sm-3 col-md-3 col-lg-3" data-id="' + rdata[i].name + '">\
<span class="spanmove"></span>\
<div '+ clickName + '>\
<div class="image"><img width="48" src="/static/img/soft_ico/ico-'+ icon + '.png"></div>\
<div class="sname">'+ rdata[i].title + ' ' + rdata[i].version + status + '</div>\
</div>\
</div>'
}
}
$("#indexsoft").html(con);
$("#indexsoft").dragsort({
dragSelector: ".spanmove",
dragBetween: true,
dragEnd: saveOrder,
placeHolderTemplate: "<div class='col-sm-3 col-md-3 col-lg-3 dashed-border'></div>"
});
});
},
同时在文件底部直接调用:
index.consultancy_services()
index.get_init()
index.get_index_list(); // 直接调用,不通过product_recommend.init
var loginInfo = JSON.parse(bt.get_cookie('login_info'))
if(loginInfo != null){
if (loginInfo.last_login.ip_info.city && (loginInfo.ip_info.city !== loginInfo.last_login.ip_info.city))
这样修改后应该可以解决"正在获取列表"的问题。如果问题仍然存在,可能需要检查 bt.soft.get_index_list 的实现是否正确返回数据。
另外还有其他几个文件,在未来或旧版本可能控制者首页广告显示
今天修改的这个是 panel/BTPanel/static/js/index.js
其他的几个文件路径
panel/class/ajax.py
修改 ajax.py 中的 GetSoftList 函数:
设置 data['is_show'] 始终为 False
def GetSoftList(self, get):
# 取软件列表
import json, os
tmp = public.readFile('{}/data/softList.conf'.format(panelPath)).replace("{SETUP_PATH}", public.format_path(os.getenv("BT_SETUP")));
data = json.loads(tmp)
for x in data['webs']:
if x['name'] == 'IIS':
x['versions'] = [{'status': False, 'version': self.get_iis_verison()}]
data['is_show'] = False
return data
修改 config.py 中的 show_recommend 函数:
确保总是创建 not_recommend.pl 文件
返回禁用成功的消息
panel/class/config.py
config.py 中的 show_recommend 函数:
确保总是创建 not_recommend.pl 文件
/panel/data/not_recommend.pl 里面写入 True
返回禁用成功的消息
创建了 not_recommend.pl 文件来持久化禁用状态
后端不会发送推荐数据
设置会被持久化保存
如果强迫症看到这忍不住要修改伪企业版 顶部导航不显示版本提示,继续修改
我们可以修改代码来模拟企业版的一些功能
// 修改企业版判断逻辑
_this.isCorporat = true; // 强制设置为企业版
bt.send('get_pd', 'ajax/get_pd', {}, function (res) {
if (callback) callback(res)
if (res[1] === 0) {
$(".btpro span").click(function (e) {
layer.confirm('切换回免费版可通过解绑账号实现', { icon: 3, btn: ['解绑账号'], closeBtn: 2, title: '是否取消授权' }, function () {
$.post('/ssl?action=DelToken', {}, function (rdata) {
layer.msg(rdata.msg);
setTimeout(function () {
window.location.reload();
}, 2000);
});
});
e.stopPropagation();
});
}
})
主要修改内容:
设置企业版状态,移除未授权提示
移除顾问服务弹窗
3. 移除推荐软件显示
4. 移除任务管理器购买提示
5. 显示完整的系统监控信息
同时需要修改一些cookie值:
// 在index.get_init()之前添加
bt.set_cookie('pro_end', '1');
bt.set_cookie('ltd_end', '1');
这样修改后:
界面会显示为企业版
移除各种购买提示和广告
显示完整的系统监控信息
可以直接使用企业版功能
请注意这只是界面层的修改,某些需要后端支持的企业版功能可能仍然无法使用
文章附件如下