Discourse Tab Bar for Mobile

이 아이디어 정말 좋아요! 이 기능을 구현하는 PR을 검토하고 병합하는 데 기꺼이 참여하겠습니다 :smiley:

11개의 좋아요

이 아이디어가 정말 마음에 들어요 :heart_eyes: 그래서 조금 테스트해 봤습니다. 훨씬 더 나은 방법이 있다고 생각하지만, 지금은 제 사이트에서 꽤 잘 작동합니다. :slight_smile:

이를 위해 Big Header - Little Header 컴포넌트의 </head> 코드 템플릿을 사용하고 있습니다.


불행히도 iPhone에서는 푸터 네비게이션이 Discourse 탭 바를 완전히 가리기 때문에 제한 사항이 있습니다. 그래서 저는 그 부분을 숨겼습니다.

이 코드를 업데이트했습니다!
이제 코드를 여기에 공유합니다(병합 가능한지 확신은 없어요):

모바일 </head> 섹션에 이 코드를 배치하세요.

<script type="text/discourse-plugin" version="0.8.18">
   $(document).ready(function() {
        var lastScrollTop = 0;
        var body = $("body");
        var scrollMax = 30;
        $(window).scroll(function() {
            var scroll = $(this).scrollTop();
            if (lastScrollTop < scroll && scroll > scrollMax && !body.hasClass("tab-bar-hidden")) {
                body.addClass("tab-bar-hidden");
            } else if (lastScrollTop > scroll && body.hasClass("tab-bar-hidden")) {
                body.removeClass("tab-bar-hidden");
            }
            lastScrollTop = scroll;
        });
    });
</script>

모바일 CSS 섹션에 이 코드를 배치하세요:

html:not(.anon) {
  #topic-progress-wrapper,
  #reply-control.draft {
	bottom: 49px;
  }
  #reply-control.draft {
	margin-bottom: env(safe-area-inset-bottom);
	padding-bottom: 0px;
	transition: all .1s ease-out;
  }
  .posts-filtered-notice {
	transition: all .1s ease-out;
	bottom: 49px;
  } 
}

body.tab-bar-hidden {
  .d-tab-bar {
	bottom: -49px;
	transition: all .2s ease-in;
  }
  #topic-progress-wrapper:not(.docked),
  #reply-control.draft {
	bottom: 0;
	transition: all .2s ease-in;
  }
  #reply-control.draft {
	margin-bottom: env(safe-area-inset-bottom);
	padding-bottom: 0px;
	transition: all .2s ease-in;
  }
  .posts-filtered-notice {
	transition: all .2s ease-in;
	bottom: 0;
  }
}

.d-tab-bar {
  transition: all .1s ease-out;
}

body:not(.footer-nav-ipad) .footer-nav {
  display: none;
}

데모

17개의 좋아요

:smiley: 정말 멋진 걸 만들었네요!

5개의 좋아요

정말 유용한 컴포넌트네요. 감사합니다!

개별 사용자가 이를 커스터마이즈하거나 완전히 숨길 수 있는 방법이 있나요?

5개의 좋아요

정말 좋습니다, @Don님, 감사합니다! 방금 여러분의 코드(약간의 수정을 포함하여)를 컴포넌트에 푸시했습니다.

개별 사용자가 컴포넌트를 커스터마이즈하거나 숨길 수 있는 내장 옵션은 없지만, Discourse 코어에는 개별 사용자가 컴포넌트를 숨길 수 있도록 사용할 수 있는 우회 방법이 있습니다. 이 컴포넌트를 포함하지 않는 메인 테마의 변형을 생성한 후, 사용자가 설정 → 인터페이스에서 해당 변형을 선택할 수 있도록 하면 됩니다.

다음과 같이 보입니다:

이 컴포넌트를 원하지 않는 사용자는 Grey Amber (w/o Tab Bar)를 선택할 수 있습니다. 이 옵션은 Grey Amber와 정확히 동일하게 구성되었지만, 탭 바 컴포넌트가 포함되지 않습니다.

6개의 좋아요

좋은 아이디어네요! 감사합니다!

4개의 좋아요

@Osama님 감사합니다. 정말 멋집니다! :heart_eyes:

CSS에서 한 가지 문제를 발견했습니다. Discourse 탭 바가 활성화되면 컴포저가 위로 밀려 올라갑니다.
전체 #reply-control이 아니라 #reply-control.draft에서만 활성화되는 것이 적절하다고 생각합니다.

4개의 좋아요

네, 이제 수정된 것 같습니다. 알려주셔서 감사합니다! :grinning_face_with_smiling_eyes:

6개의 좋아요

이 기능에 정말 감사드립니다. 어떤 Discourse 사이트에나 훌륭한 추가 기능입니다. @discoverearth 모든 사용자에게 영구적으로 표시되도록 설정할 수 있었나요?

5개의 좋아요

사용자가 플랫폼을 탐색하는 동안 탭을 클릭하도록 설정하는 방법을 찾고 있습니다. 이 사용 사례에서는 Kanban, Calendar, Voting 플러그인의 탭을 여는 버튼을 설정하려고 합니다.

Kanban:
카테고리 또는 하위 카테고리에 있을 때 URL에 '?board=default’를 추가하면 Kanban 탭(Board)으로 이동합니다. 따라서 이론적으로는 가능합니다. 문제는 이 플러그인이 사용자가 현재 있는 경로가 아니라 루트 기준의 상대 경로를 사용한다는 점입니다.
(홈페이지의 URL 로직이 다르기 때문에 이에 대한 우회책도 찾아야 합니다).

Calendar:
Calendar 탭은 URL 끝에 '/l/calendar’를 추가해야 합니다.

이것은 가능해 보이지만, 사용자가 현재 있는 카테고리/하위 카테고리보다 위에 있는 URL의 모든 텍스트를 삭제해야 합니다. 예를 들어, 사용자가 ‘latest’ 또는 'kanban’으로 이동한 경우, '/l/calendar’를 끝에 추가하기 전에 URL의 해당 부분을 제거해야 합니다.

이 플러그인들과 함께 사용할 수 있다면 정말 좋을 텐데, 어떻게 해야 할지 아이디어가 있는 분이 있을까요? 현재 모바일에서는 탭 선택기가 기본적으로 숨겨져 있는데, Kanban이나 Calendar와 같은 구성 요소를 많이 사용하는 사이트에는 좋지 않은 상황입니다.

1개의 좋아요

이 플러그인은 잘 만든 작품이지만, DiscourseHub(특히 iPhone에서는)와 함께 사용할 수 없습니다. 동일한 위치에 내비게이션 탭을 숨기기 때문에 포럼을 변경할 수 없게 됩니다.

따라서 이 플러그인은 DiscourseHub를 막거나, 포럼 방문 후 앱을 완전히 종료하도록 사용자를 교육하는 등 UX를 크게 해치는 포럼에서만 유용합니다. :wink:

물론 코딩을 할 수 있는 사람은 브라우저 사용 시에만 이 탭 바를 표시하도록 설정할 수 있겠지만, 같은 기기에서 사용자에게 서로 다른 UI를 가르치는 것은 정말 나쁜 아이디어입니다.

이 컴포넌트 사용 시:

순수 DiscourseHub 사용 시:

3개의 좋아요

그게 어떤 포럼인지 아세요? 사용자 인터페이스가 정말 마음에 들어요! :heart_eyes:

3개의 좋아요

기본 버전의 상단 메뉴 버튼처럼 알림 버튼에도 빨간색 알림 배지가 표시되기를 원합니다. 어떻게 해야 하는지 힌트를 주실 수 있을까요? 코딩은 잘 못 합니다.

@nildarar, 버튼에 알림 수가 표시되도록 성공하셨나요? 감사합니다.

1개의 좋아요

안녕하세요! 이 개념이 정말 마음에 듭니다. 감사합니다.

한 가지 질문이 있습니다. 웹사이트 다른 부분과 더 일관성을 유지하기 위해, 채워진 버전 대신 아웃라인 버전의 FontAwesome 아이콘을 사용하길 원합니다.

이를 지정하는 방법이 있을까요? 보통 아이콘의 전체 이름, 예를 들어 far fa-star (단순히 star만 입력하는 대신)을 사용하면 이 차이를 구분할 수 있습니다. 하지만 이렇게 아이콘의 전체 이름을 입력하려고 하면 해당 위치에 아무것도 표시되지 않습니다.

이 문제를 해결할 수 있는 방법이 있을까요?

1개의 좋아요

정말 멋지네요. 팔로우 피드를 표시할 탭을 만들 수 있는 방법이 있을까요? 이렇게 하면 사용자가 팔로우하는 모든 사람의 피드를 쉽게 볼 수 있을 것 같습니다.

또한 페이지별로 적용하는 것도 가능한가요?

.user-main .about {
    margin-bottom: 0;
    color: var(--secondary);
    display: none;
}

피드 페이지에만 적용하고 싶습니다.

1개의 좋아요

확인 차원에서 말씀드리자면, Discourse Follow 의 팔로우 피드를 말씀하시는 건 맞나요? 맞다면, 팔로우 피드로 리다이렉트하려는 탭의 설정에서 feed를 경로(세 번째 세그먼트)로 설정하면 됩니다.

4개의 좋아요

네, 맞아요. 감사합니다!

3개의 좋아요

바의 중앙에 “새 주제” 버튼을 추가하면 좋겠다는 생각이 듭니다. :thinking:

Reddit가 좋은 예시가 될 수 있겠네요.

6개의 좋아요

네, 가능합니다. 중간 효과를 얻으려면 아래 설정을 3번째 또는 4번째 탭에서 시도해 보세요.

New, plus, /new-topic
6개의 좋아요

정말 좋습니다! 방금 해봤는데 YouTube의 구현 방식이 떠오르네요. 전반적으로 아주 마음에 듭니다! :grinning:


커뮤니티의 “Discourse Chat” 섹션으로 사용자를 리디렉션하는 버튼을 추가할 수 있을까요?

4개의 좋아요