Недавно на форуме, который я администрирую, развернулась большая дискуссия о том, следует ли убрать функцию «Нравится». Половина участников хочет её удалить, другая половина — оставить. Я нашёл компонент темы, который скрывает возможность ставить лайки для пользователей уровня TL0 и анонимных пользователей, и в основном адаптировал его под наши нужды. Однако я не уверен, как связать его с созданным мною булевым полем пользователя («Включить лайки»). В оригинальном компоненте темы используется что-то вроде «settings.hide_for_anon_user», и в файле settings.yml создаётся настройка темы с таким же именем, но её может переключать только администратор, а не на уровне пользователя.
Как мне обратиться к этому пользовательскому полю? Я уже добавил его в public_user_custom_fields, но не знаю, как ссылаться на него в JS-файле компонента. Я пробовал userCustomFields.user_field_10, settings.current_user.custom_fields.user_field_10 и current_user.custom_fields.user_field_10, но ни один из этих вариантов не работает — они просто скрывают все сообщения в теме.
Я думаю, что вы можете создать группу без лайков и использовать её, чтобы скрыть лайки, как это делает tl0. Настройте группу так, чтобы любой мог вступить.
Я заменил
this.currentUser.trust_level === 0;
на
this.currentUser.no_likes;
но это не сработало. Снова неясно, как ссылаться на пользовательские группы. Похоже, что, как и в случае с полями пользователя, это нигде чётко не описано в документации.
Но я всё же хотел бы узнать, можно ли сделать это так, чтобы проверялось булево значение пользовательского поля, а не принадлежность к группе. Я изучал другие плагины, чтобы понять, как это реализовать, но пока ничего не сработало.
Дополнительно: Это, похоже, работает, но после установки или снятия галочки в пользовательском поле нужно обновить страницу.