통계 배너

:discourse2: 요약 Stat Banner은 홈페이지에 사이트 통계 목록을 표시합니다
:eyeglasses: 미리보기 Discourse Theme Creator에서 미리보기
:hammer_and_wrench: 저장소 https://github.com/discourse/discourse-stat-banner
:open_book: Discourse 테마가 처음이신가요? Discourse 테마 사용 입문가 가이드

이 테마 컴포넌트 설치

기능

표시할 통계를 원하는 만큼 생성할 수 있으며, 통계 값은 /about 페이지에서 채워지고 다음 중 선택할 수 있습니다:

  • 주제(topics)
  • 게시글(posts)
  • 활성 사용자
  • 사용자
  • 좋아요
  • 채팅 메시지
  • 채팅 채널
  • 채팅 사용자

이들은 각각 3가지 기간 중 하나에서 개별적으로 설정할 수 있습니다:

  • 1일
  • 7일
  • 30일

소스와 기간 외에도 다음을 구성할 수 있습니다:

  • 제목(title)
  • 링크(link) (선택 사항)
  • manual_value (선택 사항, 자동 값을 덮어씀)

설정

이름 설명
통계 표시
배너 제목
표시 위치
배경색 Discourse 색상 변수 또는 16진수 값
텍스트 색상 Discourse 색상 변수 또는 16진수 값
최소 열 너비
모바일에서 숨김
플러그인 아웃렛 이 컴포넌트가 표시되는 플러그인 아웃렛입니다. above-main-container 또는 below-site-header를 사용해 보세요. 플러그인 아웃렛 위치 테마 컴포넌트에서 더 많은 아웃렛을 찾을 수 있습니다.
캐시 비활성화 배너 통계는 배너가 표시될 때마다 새로고침됩니다. 이는 서버 부하를 약간 증가시킬 수 있다는 점에 유의하세요.

:discourse2: 우리의 호스팅을 사용 중이신가요? 테마 컴포넌트는 Standard, Business, Enterprise 플랜에서 사용할 수 있습니다.

29개의 좋아요

iPhone SE는 hide on mobile 설정을 따르지 않습니다.

수정: 모든 모바일 기기에서 해당 설정이 적용되지 않고 배너가 항상 표시되는 것 같습니다.

3개의 좋아요

그리고 UX/UI 관련 작은 요청 하나 — 링크는 링크처럼 보여야 합니다.

3개의 좋아요

빠른 피드백 감사합니다 @Jagster! 이 문제들을 수정하도록 업데이트했습니다

3개의 좋아요

안녕하세요, @awesomerobot,

이 테마 컴포넌트를 정말 감사히 받았습니다. 바로 사용해 보았습니다.

괜찮으시다면 질문이 하나 있습니다. 조금 헷갈리는 부분이 있어서요. 'Active Users(활성 사용자)'는 설명이 명확해서 이해하고 있는데, 'Users(사용자)'는 어떤 범위를 포함하나요?

좋은 질문입니다!

**활성 사용자(Active users)**는 해당 1/7/30일 기간 내에 확인된 사용자(로그인 상태로 사이트를 방문한 사용자)를 의미합니다.

**사용자(Users)**는 해당 1/7/30일 기간 내에 생성된 신규 계정 수를 의미합니다.

2개의 좋아요

좋은 아침입니다, @awesomerobot,

이 테마 컴포넌트에 대해 좀 더 생각해 보았으며, 'Users’와 'Active Users’에 대한 답변을 바탕으로 볼 때 정보가 최근 새로워지지 않은 것 같습니다. 또한 이 두 가지 지표에 대해 서로 다른 값을 확인하고 있습니다.

데스크톱에서의 제 통계는 다음과 같습니다:

모바일에서는 다음과 같습니다:

차이가 크지는 않지만, 이 통계가 어디서 가져와지는지 도무지 파악이 되지 않습니다.

통계를 위해 다음과 같은 HTML 새로고침 코드를 구현해 보았습니다:

<script>
  setInterval(function() {
    location.reload();
  }, 60000); // 1분마다 새로고침 (60000밀리초)
</script>

참고: 이 코드는 1분(60000밀리초)마다 페이지를 새로고침합니다. 필요에 따라 간격을 조정할 수 있습니다.

하지만 이 코드를 설정 편집기에 추가할 수 있는지 확실하지 않습니다.

도움을 주시면 감사하겠습니다.

1개의 좋아요

업데이트:

이렇게 되어야 한다는 결론에 도달했습니다.

[
	{
		"setting": "display_stats",
		"value": "[{\"source\":\"posts\",\"period\":\"30_days\",\"title\":\"Posts\",\"link\":\"\",\"manual_value\":\"\"},{\"source\":\"likes\",\"period\":\"30_days\",\"title\":\"Likes\",\"link\":\"\",\"manual_value\":\"\"},{\"source\":\"active_users\",\"period\":\"30_days\",\"title\":\"Active Users\",\"link\":\"\",\"manual_value\":\"\"},{\"source\":\"users\",\"period\":\"30_days\",\"title\":\"Sign-Ups\",\"link\":\"\",\"manual_value\":\"\"}]"
	},
	{
		"setting": "banner_title",
		"value": "Statistics for the past 30 days"
	},
	{
		"setting": "show_on",
		"value": "homepage"
	},
	{
		"setting": "background_color",
		"value": "var(--tertiary-low)"
	},
	{
		"setting": "text_color",
		"value": "var(--primary)"
	},
	{
		"setting": "min_column_width",
		"value": "10em"
	},
	{
		"setting": "hide_on_mobile",
		"value": false
	},
	{
		"setting": "plugin_outlet",
		"value": "above-main-container"
	},
	{
		"setting": "javascript",
		"value": "setInterval(function() { Discourse.__container__.lookup('controller:widget').send('refresh'); }, 3600000);"
	}
]

하지만 다음 오류 메시지가 표시됩니다:

javascript: 이 설정들이 추가되었습니다. 제거한 후 다시 시도해 주세요.

통계 정보는 About 페이지에서 가져오며, 해당 페이지 하단의 테이블과 동일한 데이터를 사용합니다:

배너의 데이터는 사용자가 처음 배너를 본 시점부터 가장 짧은 통계 기간을 기준으로 갱신됩니다.

예를 들어, 배너가 지난 1일간의 통계로 설정되어 있다면, 사용자가 처음 배너를 본 후 24시간 후에 데이터가 갱신됩니다. 배너가 지난 1개월의 통계만 표시하도록 설정되어 있다면, 사용자가 처음 본 후 1개월이 지나거나(또는 브라우저 localStorage를 지우면) 데이터가 갱신됩니다.

이렇게 구현한 이유는 요청 횟수를 줄이기 위해서입니다. 배너가 표시될 때마다 최신 통계를 보여주는 대신, 데이터를 브라우저의 localStorage에 캐싱합니다.

이 에디터는 기존 설정을 수정하는 용도로만 사용되며, 여기서 새로운 설정(또는 javascript)을 추가할 수 없습니다.

배너가 더 자주 업데이트되길 원하신다면 캐싱을 비활성화하는 새로운 설정을 추가해 드릴 수 있습니다.

2개의 좋아요

안녕하세요, @awesomerobot

상세한 답변과 통계 자료의 출처를 제공해 주셔서 감사합니다. 그러나 처음 설치한 이후부터 지금까지, 제 모바일 폰에 표시되는 통계와 관련하여 여전히 동일한 문제가 발생하고 있습니다.

제 이해에 따르면, 현재 제 통계는 다음과 같이 업데이트되었어야 합니다:

브라우저 캐시를 지우는 것도 시도해 보았지만, 아무런 차이가 없었습니다.

이 옵션이 가능하다면 매우 감사하겠습니다. 이를 통해 포럼에 대한 더 포괄적인 통찰력을 소비자에게 제공할 수 있을 것 같습니다.

2개의 좋아요

이것들은 /admin 페이지의 통계로 보이는데, /about 페이지의 것과 조금 다를 수 있지만, 어쨌든… 컴포넌트를 업데이트하면 캐시를 비활성화할 수 있는 설정을 추가했습니다:

Screenshot 2023-10-30 at 2.03.15 PM

5개의 좋아요

정말 훌륭합니다, 완벽하게 작동하네요!
설정을 활성화하자마자 즉시 새로고침이 되었습니다. 저는 항상 포럼을 열어 두고 있고 다른 탭도 여러 개 열어 두고 있어서, 캐시를 지우는 것보다 이 방법이 훨씬 간단합니다!

정성을 다해 도와주셔서 감사합니다!

2개의 좋아요

기간을 설정하여 ‘전체 기간’ 통계를 표시할 수 있는 방법이 있나요?

추가적으로, 이 컴포넌트(Topic Voting | Discourse - Civilized Discussion)로 계산된 '총 투표 수’를 표시할 수 있으면 좋겠습니다.

이 컴포넌트는 /about.json에서 통계를 조회합니다. 따라서 "전체 기간(all time)"도 사용 가능한 값 중 하나이므로 비교적 쉽게 추가할 수 있을 것입니다.

다만, 다른 통계를 표시하려면 해당 값이 사용 가능한 위치에서 조회하도록 컴포넌트를 포크하고 수정해야 할 것입니다.

2개의 좋아요

드롭다운에 없으니 설정 JSON에서 수동으로 업데이트할 수 있다는 거죠?

아니요, manual_value에 항목을 추가하면 조회된 값이 정적 값으로 단순히 대체될 뿐입니다. 이 필드 이름을 static_value로 변경하면 이 의미를 더 잘 전달할 수 있지 않을까요?

드롭다운에 전 기간(all-time) 선택기를 추가하면 전체 기간 카운트를 확인할 수 있습니다:

컴포넌트의 설정 파일에서 간단한 변경 사항입니다. 이 브랜치를 여기에 push했습니다: https://github.com/nolosb/discourse-stat-banner/tree/count. 다만 PR을 만들려면 드롭다운에서 해당 변수 이름을 변경하는 로직이 여전히 필요할 것 같습니다.

1개의 좋아요

놀랍네요, 이걸 추가해 주셔서 감사합니다!

2개의 좋아요

특정 카테고리로 제한할 방법이 있을까요? above-category-heading 아웃렛을 시도해 봤고, 적어도 CSS를 사용해 특정 카테고리로 제한하고 싶었지만, 그렇게 하면 어디에도 표시되지 않아요.

1개의 좋아요

테마 설정의 show_on을 everywhere로 변경하면 다음 CSS를 사용하여 해당 배너를 단일 카테고리에만 표시할 수 있습니다(examplecategory를 해당 카테고리 슬러그로 대체하세요).

.stat-banner__wrapper {
  display: none;
}

body.category-examplecategory {
  .stat-banner__wrapper {
    display: block;
  }
}
1개의 좋아요