I’ve got a community that does not want users to hide their profile or online presence. I don’t see a site setting to disable this. Is there a way to hide the checkbox on the user profile with CSS? It doesn’t seem to have a thingy that identifies just that field.
Even if it doesn’t, you can target it using numeric offsets in the CSS, conceptually "hide the third thing in this <div>
" or whatever.
The only risk is that if the list later changes size, your offset will be incorrect.
This should work so long as it stays the last item on that list:
.user-preferences .control-group.other .controls:last-of-type {
display: none;
}
Beyond that, you can also remove it altogether by modifying the template. All you need is to use this:
<script type="text/x-handlebars" data-template-name="preferences/interface">
</script>
and copy / paste the contents of this file in there after removing line #43
If you modify the template and it’s updated in core, you need to update your template as well.
Thanks for the instructions, but we feel it’s quite a clumsy solution. Especially for those who are using common branches: the fixes can essentially break anytime. Any chance of having a proper CSS target for hiding the setting? Or even better, an admin setting to disallow the feature?
Agreed, can we make sure there is a proper css target here in the markup @awesomerobot?
A few sections in user preferences were missing classes, so I’ve added them here
https://github.com/discourse/discourse/commit/9a3dd6b59af0a5fc22045f376b421cb4fd074aad
You’ll be able to simplify to
.pref-hide-profile {
display: none;
}
Is this possible on hosted communities?
It is, if you go to admin > customize > themes
you’ll be able to add the CSS above to your theme to hide the setting.
Is it possible to run a query using Data Explorer to see which users have this setting enabled, in other words, users who have hidden their public profile?
you’ll want something like:
SELECT user_id from user_options where hide_profile_and_presence = true