لقد عبّر العديد من الأعضاء (بمن فيهم المشرف الأساسي لدي) عن بعض الإحباط بشأن ميزة “موضوعك مشابه لـ”. أخمن أن بعض هذا يرجع إلى أحجام الشاشات وأن div لهذه الميزة يحجب الأشياء جزئيًا، وما إلى ذلك.
نعم، أنا على دراية بخيار زيادة قيمة الحد الأدنى لاستعلام النص إلى قيمة أعلى. لقد قمت بالفعل بتعيينها على 25 حرفًا، لكنني أعتقد أن الميزة يمكن أن تكون مفيدة شريطة ألا تؤدي إلى إزعاج المزيد من الأعضاء مما تساعدهم.
سيؤدي ذلك فعليًا إلى إيقافه، ولكن هذا ليس ما كنت أسأله. سيكون أفضل حل هو أن يتمكن المستخدمون الذين لا يحبون الميزة من قمعها عبر ملف تعريف ارتباط أو إعداد حساب.
يمكنك إلقاء نظرة على الكود الخاص بهذا المكون وتكييفه لإخفاء العناصر باستخدام CSS (استهداف .similar-topics) في إعدادات تفضيلات المستخدم. هذا بالضبط ما فعلته على https://unicyclist.com/، حيث لدى المستخدمين إعداد لإخفاء أيقونة التبرع في أعلى يمين الرأس.
بشكل أساسي، التغيير الوحيد الذي أجريته على المكون الإضافي الأصلي هو أنني أقوم بتخزين الإعداد في ملف تعريف ارتباط (أريد تذكير المستخدم الخاص بي بالتبرع كل عام لتغطية رسوم الخوادم).
إليك كود مكون السمة الخاص بي:
<script type="text/discourse-plugin" version="0.8">
// تعيين مدة ملف تعريف الارتباط إلى سنة واحدة
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=/';
}
// إرجاع قيمة ملف تعريف الارتباط
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();
// تعيين قيمة ملف تعريف الارتباط كقيمة الإعداد
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";
}
}
}
}
});
</script>
<script type='text/x-handlebars' data-template-name='/connectors/user-preferences-interface/add-selector'>
{{preference-checkbox labelKey=(theme-prefix 'donation_icon_toggle') checked=model.toggleDonationIcon}}
</script>