使用 CSS 隐藏群组详情页的活动或消息标签页

Update 2018-11-30: The CSS to hide the Activity and Messages tabs is here.

tl;dr – what CSS can I use to remove the Activity and Messages tabs on a group detail page (e.g., … /groups/YourGroupName/)?


My question was already asked in July 2017 here and didn’t get a response. So I’m asking in a different category and with different eyeballs available.

Sam told me it was possible to hide the Activity and Messages tabs on the group detail page. As it is, the Activity tab in each group shows the general forum activity for all members in the group – which is really confusing to people who are used to Facebook groups and just generally counter-intuitive to many of our community members.

Since we have direct messaging to groups turned off for all our groups, the presence of the Messages tab also is a distraction for us.

Group%20Messages

What’s the CSS code to hide the Activity and Messages tabs in the screen shot above?

You also get bonus points if you know how to hide certain columns like Posted and Seen on the Members tab of the groups detail page (e.g., found at … /groups/YourGroupName/).

Thanks in advance for the help, wonderful Discourse folks!

It’s a bit clunky, but something like:

div.container.group.YourGroupNameSlug > div.list-controls > div.container > ul >  li {
     a.messages.ember-view, a.activity.ember-view {
        visibility: hidden; 
     }
}

Should work, the group slug is specified in line one.

Thanks for the suggestion, Stephen.

I added your CSS in the Common section of the default theme (e.g., … /admin/customize/themes/1/common/scss/edit) and had two different experiences in desktop and mobile view.

The screen shots below show how it worked at least functionally in desktop view and didn’t work so well in mobile view. Is there another way to approach hiding the Activity and Messages elements – preferably for all groups at once instead of new templated lines of CSS for each group?

Desktop View

Mobile View

Try to change

visibility: hidden;

with

display: none;

Thanks for the display: none; tweak, @dax. That helped on desktop view, which now looks like this.

Working%20on%20Desktop%20View

However, mobile view still shows the Activity and Messages options in the drop-down list, and frustratingly, the empty white space that was there before (which must be default theme or environmental related).

Do you know why the CSS would work on desktop view and not mobile view? And do you know if there’s a way to use a wildcard in the CSS to apply the display: none; code to all groups instead of going one-by-one?

Yes, they use separate CSS and different selectors. Lots of styling differs between mobile and desktop view, that’s part of how responsive design works.

If you swap to a mobile view on Chrome and inspect elements you can identify how it changes and produce the mobile-friendly alternative.

FYI everyone. Here’s the CSS to hide the Messages and Activitiy tabs on desktop and mobile view.

Desktop

.activity.ember-view, .messages.ember-view {
    display: none;
}

Mobile

.mobile-nav .activity.ember-view, .mobile-nav .messages.ember-view{
    display: none !important;
}

is there a way to “unhide” from an admin?

for example, I hid messages and activity from everyone using your code, but replicated it with .viewing-self and display: inline-block

so the user them self can see their message box, but unless admins turn off CSS customization, they’re not able to snoop easily.

What I’l looking to do is the opposite of this. I want to hide the profile picture box, or the pencil (change) button from users, but have it visible to admins, without having to go disable the CSS. Any ideas??

我想仅在特定页面(例如 /messages)隐藏某些字段,比如隐藏用户信息部分(用户名、头像等)。如何仅通过 CSS 在特定页面隐藏这些元素,而不影响其他页面?

查看 HTML 的上层部分。每个页面都有一个唯一的类被添加到 <body> 标签上。

例如,在 /messages 页面上,你会看到如下内容。

浏览器检查工具中的唯一页面类

这个类不会在其他页面上添加,仅会在消息页面上添加。

Discourse 使用 SCSS。因此,你可以这样嵌套选择器:

// /messages 页面的样式
.user-messages-page {
  // 隐藏用户头像/姓名/用户名
  .user-profile-names,
  .user-profile-avatar {
    display: none;
  }
}

普通的 CSS 也同样适用。