Некоторые пользователи жалуются на окно «Тема похожа на»

Несколько участников (включая моего основного модератора) выразили некоторое разочарование функцией «Ваша тема похожа на». Я предполагаю, что часть проблем связана с размером экрана и тем, что блок с этой функцией частично перекрывает другие элементы и т. д.

Я подумал… а что если просто добавить возможность для пользователей отключать эту функцию?

3 лайка

Да, я знаком с возможностью увеличить минимальное значение запроса текста до более высокого значения. Я уже установил его на 25 символов, но думаю, что эта функция могла бы быть полезной, если она не будет раздражать больше участников, чем помогать.

2 лайка

Установить настройку max_similar_results в 0? Или просто уменьшить значение.

2 лайка

Это фактически отключит его, но я спрашивал не об этом. Лучшим решением было бы предоставить пользователям, которым функция не нравится, возможность отключить её через cookie или настройки аккаунта.

Это можно сделать довольно легко.

Вы можете изучить код этого компонента и адаптировать его для скрытия элементов с помощью CSS (целевой класс .similar-topics) в настройках пользователей. Именно это я сделал на https://unicyclist.com/, где у пользователей есть настройка для скрытия иконки пожертвований в правом верхнем углу заголовка.

image

image


По сути, единственное изменение, которое я внес в оригинальный плагин, — это сохранение настройки в файле cookie (я хочу напоминать пользователям о пожертвованиях каждый год на оплату серверов).

Вот код моего собственного компонента темы:

<script type="text/discourse-plugin" version="0.8">
    // установить длительность 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";
        }
      }
    }
  }
});
</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>
2 лайка