환영 배너를 사용자 홈페이에만 표시하도록 제한

홈페이지에만 배너를 표시하도록 제한할 수 있는지 문의하는 사용자가 있습니다. 즉, 최신 게시글 페이지를 즐겨찾기로 등록해 두었더라도 배너가 표시되지 않도록 하는 것입니다. 현재는 두 페이지 모두에 배너가 표시되는 것으로 보입니다.

네, ‘환영 링크 배너’ 설정에 있습니다:

사용자 자신의 프로필에서 특정 페이지(최신 게시글, 카테고리 등)를 홈으로 설정한 경우를 말씀하시는 건가요?
그렇다면 그 임의의 페이지가 해당 사용자의 "홈페이지"로 간주되며, 따라서 환영 배너는 사용자의 새로운 홈페이지에서 표시됩니다.

사이트의 기본 홈페이지가 /categories이고, 사용자의 인터페이스 설정과 관계없이 /categories에서만 환영 배너가 표시되기를 원한다면, 표시 위치를 “탐색(discovery)” 또는 "전체(all)"로 설정하고 자바스크립트를 사용하여 표시하려는 페이지 외의 다른 페이지에서 환영 배너를 숨기는 방법을 고려해 볼 수 있습니다.

하지만 현재 우리가 있는 페이지(처음 로드할 때와 페이지를 변경할 때를 포함하여)를 신뢰할 수 있게 식별하여 환영 배너를 동적으로 숨기는 방법을 아직 잘 모르겠습니다.

나중에 (:sleeping:) 이 부분을 시도해 볼 수 있겠지만, 아마도 이렇게 시작해 볼 수 있을 것입니다:

아, 정말 감사합니다. 네, 기본 레이아웃을 최신으로 설정한 커뮤니티 리더 중 일부는 배너가 예를 들어 카테고리 페이지에만 표시되기를 선호합니다. 공유해 주신 링크를 확인해 보겠습니다.

좋아요, 여기 작동하는 해결책입니다. 제 예시에서는 사용자 인터페이스 설정과 관계없이 웰컴 배너가 /latest 페이지에만 표시됩니다. /categories 페이지에만 표시되도록 커스터마이징하는 것은 여러분이 직접 결정해 주세요. :slight_smile:

  1. 웰컴 링크 배너의 표시 위치 설정을 배너를 표시하려는 페이지에 따라 “all” 또는 "discovery"로 설정하세요.

  2. 테마에 다음 스크립트를 추가하세요:

    <script type="text/discourse-plugin" version="1.4.0">
        // 웰컴 배너를 /latest 페이지에서만 표시합니다
        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;
    }
    

참고로 사용된 링크:

이거 정말 감사합니다! 정말로요! :raised_hands: