我的一些成员(包括我的主要版主)对“您的主题与以下内容相似”功能表示了一些不满。我猜测其中一些原因是屏幕尺寸以及该功能的 div 部分遮挡了其他内容等。
我在想……如果允许用户选择关闭此功能,会怎么样?
我的一些成员(包括我的主要版主)对“您的主题与以下内容相似”功能表示了一些不满。我猜测其中一些原因是屏幕尺寸以及该功能的 div 部分遮挡了其他内容等。
我在想……如果允许用户选择关闭此功能,会怎么样?
是的,我知道可以将最小文本查询值增加到更高的选项。我已经将其设置为 25 个字符,但我认为该功能很有用,前提是它不会排除比它帮助的更多成员。
将 max_similar_results 设置为 0?或者只是减小该值。
这实际上会将其关闭,但这并不是我所问的。最好的解决方法是让不喜欢该功能的用户能够通过 cookie 或帐户设置来禁用它。
这可以很容易地完成。
你可以查看此组件的代码,并使用 CSS 来隐藏用户偏好设置中的元素(目标为 .similar-topics)。这正是我曾在 https://unicyclist.com/ 上的做法,用户可以在其中设置隐藏标题右上角的捐赠图标。


基本上,我对原始插件所做的唯一更改是,我将设置存储在 cookie 中(我想每年提醒我的用户支付服务器费用)。
这是我自己的主题组件代码:
// 设置 cookie 有效期为 1 年
function setHideDonationCookie(value=null) {
var now = new Date();
var time = now.getTime();
var expireTime = time + 1000*60*60*24*365;
now.setTime(expireTime);
document.cookie = 'donationButton=' + value + ';expires='+now.toUTCString()+';path=/';
}
// 返回 cookie 值
function getCookie(name) {
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0) return null;
}
else
{
begin += 2;
var end = document.cookie.indexOf(";", begin);
if (end == -1) {
end = dc.length;
}
}
return decodeURI(dc.substring(begin + prefix.length, end));
}
function getToggleDonationIcon() {
let pref = getCookie('donationButton');
let result = settings.default_enabled;
if (pref !== null) {
result = pref === "true";
}
return result;
}
// 我们将 CSS 规则添加到 HTML 代码中
if (getToggleDonationIcon()) {
let style = document.createElement('style');
style.innerHTML = ".header-icon-help-fund-servers-fees{ display: none; }";
document.head.appendChild(style);
}
// 技术上我们只想修改当前用户
api.modifyClass("model:user", {
toggleDonationIcon: function() {
return getToggleDonationIcon();
}.property()
});
api.modifyClass("controller:preferences/interface", {
actions: {
save() {
this._super();
// 将 cookie 值设置为设置值
if(this.get("model.toggleDonationIcon") != getToggleDonationIcon()) {
setHideDonationCookie(this.get("model.toggleDonationIcon").toString());
if(this.get("model.toggleDonationIcon") == false) {
document.getElementsByClassName("header-icon-help-fund-servers-fees")[0].style.display = "";
}
else {
document.getElementsByClassName("header-icon-help-fund-servers-fees")[0].style.display = "none";
}
}
}
}
});
// 在用户偏好设置界面添加选择器
{{preference-checkbox labelKey=(theme-prefix 'donation_icon_toggle') checked=model.toggleDonationIcon}}