이벤트 추가: 주제 필터 쿼리 언어에 필터 추가 (Discourse Events 플러그인 확장)

:information_source: 이를 통해 Events 플러그인을 통해 이벤트가 연결된 토픽을 /filter 라우트와 Custom Topic Lists 플러그인을 사용하여 필터링할 수 있습니다.

문제점

Discourse Events 플러그인은 풍부한 이벤트 토픽을 생성하지만, 현재 토픽 필터 쿼리 언어를 사용하여 비(非)이벤트 토픽과 분리하는 방법이 없습니다.

기존의 우회책들은 모두 단점이 있습니다:

  • /upcoming-events 라우트는 이벤트를 캘린더 형태로 표시하며 필터링 가능한 토픽 목록으로 제공하지 않습니다 - 사실 그래야 합니다!!!
  • Custom Lists의 Events Calendar 테마 컴포넌트에는 "이벤트가 있는 토픽만 표시"라는 클라이언트 측 설정이 있지만, 이는 목록이 로드된 후에 작동합니다 — 진정한 서버 측 필터가 아니며 페이지네이션과 호환성이 좋지 않고 일관되지 않은 동작을 보일 수 있습니다.
  • 컨벤션 기반 접근법(전용 카테고리, 필수 태그)은 엄격한 콘텐츠 관리 규율이 필요합니다.

제안된 해결책

Events 플러그인은 Solved 플러그인(status:solved / status:unsolved)과 Assign 플러그인(?assigned=username)에서 이미 사용 중인 패턴을 따라 토픽 필터 DSL에 event: 필터를 확장해야 합니다.

구문 예시:

event:yes                          # 이벤트가 연결된 토픽
event:no                           # 이벤트가 없는 토픽 (-event:yes를 통해)
-category:announcements event:yes  # 공지사항 외의 이벤트
tag:meetup event:yes order:created # 최신순 정렬된 이벤트가 있는 태그 지정 미트업 토픽

기존 status: 네임스페이스와의 일관성을 위해 status:events 변형도 고려할 수 있지만, 주요 사용 사례에 대해 event:가 더 자연스럽습니다.

왜 이것이 올바른 레이어인가

필터 문서에는 명시적으로 다음과 같이 나와 있습니다:

Events 플러그인은 이미 구조화된 이벤트 데이터(시작 날짜, 종료 날짜, 상태, RSVP)를 전용 테이블에 저장하고 있습니다. 서버 측 필터는 이를 효율적으로 조회할 수 있으며 — 이는 클라이언트 측 컴포넌트로는 단순히 불가능한 작업입니다.

사용 사례 예시

커뮤니티 관리자로서, 사이드바에 링크할 수 있고 Custom Topic Lists를 통해 임베드할 수 있으며 Filtered Topic Lists 테마 컴포넌트에서도 사용할 수 있는 공유 가능한 URL이 필요합니다. 이 URL은 모든 카테고리의 이벤트가 연결된 모든 토픽을 이벤트 날짜순으로 신뢰할 수 있게 표시해야 합니다.

현재 저는 자신 있게 해당 쿼리를 구성할 수 없습니다. event: 필터가 있다면 다음처럼 할 수 있습니다:

event:yes order:created

…그리고 제 사이트의 모든 이벤트를 포함하는 깔끔한, 페이지네이션된, 권한 인식이 되는 토픽 목록을 얻을 수 있습니다.


관련 토픽

1개의 좋아요