限制欢迎横幅仅在用户主页显示

我有一个用户在询问是否可以将横幅限制为主页,这样如果他们收藏了“最新”,横幅就不会显示?目前它似乎在两种情况下都显示。

2 个赞

是的,它在“欢迎链接横幅”设置中:

你的意思是,如果他们在自己的个人资料中将自定义页面(最新、类别等)设置为他们的主页?
那么这个任意页面就被视为用户的“主页”,因此欢迎横幅会显示在他们的新主页上。

如果你的站点的默认主页是 /categories,并且你希望欢迎横幅仅显示在 /categories 上,而不管用户的界面偏好如何,那么你可以将“显示在”设置为“discovery”或“all”,并使用 javascript 在你想要显示它的页面之外的其他页面上隐藏欢迎横幅。

但我目前不知道如何可靠地识别我们所在的当前页面(包括首次加载页面和更改页面时),以便动态隐藏欢迎横幅。

我很乐意稍后尝试一下(:sleeping:),但这可能是一个开始:

2 个赞

啊,非常感谢,是的,我的一些社区领导者将默认布局设置为最新,他们希望横幅仅显示在例如类别页面上。我将查看您共享的链接。

2 个赞

好的,这是一个可行的解决方案。在我的示例中,欢迎横幅将仅在 /latest 页面上显示,而与用户的界面设置无关。我将让您自定义它,使其仅在 /categories 页面上显示。 :slight_smile:

  1. 将“欢迎链接横幅”的“显示在”设置设置为“all”或“discovery”,具体取决于您希望横幅显示的页面。

  2. 在您的主题中添加此脚本:

    <script type="text/discourse-plugin" version="1.4.0">
        // shows the welcome banner only on the /latest page
        api.onPageChange(() => {
            const router = api.container.lookup('service:router');
    
            if (router.currentRoute.name === 'discovery.latest') {
                document.body.classList.add('route-discovery-latest');
            } else {
                document.body.classList.remove('route-discovery-latest');
            }
        });
    </script>
    
  3. 在您的主题中添加此 CSS:

    body:not(.route-discovery-latest) .welcome-link-banner-connector {
       display: none;
    }
    

使用的参考:

8 个赞

非常感谢,万分感谢!:raised_hands:

3 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.