자동 이미지 그리드에 대한 최소 이미지 수 설정 가능
자동 이미지 그리드 기능의 한계에 직면했습니다.
현재 자동 그리드 동작은 사이트 설정의 ‘자동 그리드 이미지’ 옵션에 의해 제어되는 것으로 보이지만, 컴포저가 [grid]...[/grid]를 삽입하는 실제 임계값은 여전히 프론트엔드 코드에 고정되어 있습니다.
관련 컴포저 로직은 현재 하드코딩된 값을 사용하고 있습니다:
const MIN_IMAGES_TO_AUTO_GRID = 3;
따라서 제가 파악한 바로는, 현재 관리자는 다음과 같은 선택지를 가지고 있습니다:
| 현재 관리자가 할 수 있는 것 | 결과 |
|---|---|
| 자동 그리드 이미지 활성화 | 3개 이상의 연속된 이미지 업로드가 자동으로 [grid]...[/grid]로 감싸짐 |
| 자동 그리드 이미지 비활성화 | 자동 그리드 래핑 없음 |
| 임계값을 3에서 다른 숫자로 변경 | 현재 사이트 설정으로 제공되지 않음 |
문제는 3이 모든 커뮤니티에 반드시 적합한 임계값이 아닐 수 있다는 점입니다.
일부 사이트에서는 자동 그리드가 유용하지만, 사용자가 더 많은 양의 이미지를 한꺼번에 업로드할 때만 작동하는 것이 좋습니다. 예를 들어, 관리자는 3개의 이미지가 업로드되는 즉시 트리거되는 대신, 5, 6, 10 또는 다른 값에서 자동 그리드가 시작되도록 설정할 수 있습니다.
이것은 설명 텍스트와 함께 소수의 이미지를 인라인으로 업로드하는 경우가 많지만, 더 큰 갤러리는 여전히 그리드로 압축되어야 하는 커뮤니티에서 특히 유용할 것입니다.
제안된 방향
컴포저가 자동으로 그리드를 삽입하기 전에 연속된 이미지 업로드의 최소 수에 대한 설정 가능한 사이트 설정을 추가하여 이를 개선할 수 있다고 생각합니다.
다음과 같은 것입니다:
auto_grid_images_minimum_count
예를 들어:
| 설정 | 예시 값 |
|---|---|
enable_auto_grid_images |
true |
auto_grid_images_minimum_count |
5 |
이 경우에도 자동 그리드는 사용 가능하지만, 구성된 임계값에 도달한 후에만 트리거됩니다.
새로운 설정의 기본값이 3인 경우 기존 동작을 기본값으로 유지하면서 관리자에게 더 많은 제어권을 부여합니다.
실험적 브랜치 / 가능한 출발점
더 많은 Discourse 개발 경험이 있는 사람이 이를 포크하고, 정리하거나, 아이디어를 발전시킬 시간이 있다면, 의도된 방향을 보여주는 작은 실험적 브랜치를 여기에 만들었습니다:
이 브랜치는 아직 정교한 PR으로 의도된 것이 아닙니다. 의도된 방향을 보여주는 출발점에 가깝습니다:
- 자동 그리드 최소 이미지 수에 대한 새로운 사이트 설정 추가
- 해당 설정을 클라이언트에 노출
- 컴포저 업로드 코드에서 하드코딩된
MIN_IMAGES_TO_AUTO_GRID = 3체크를 구성된 값으로 대체 - 기존 자동 그리드 문구가 임계값이 항상 3인 것처럼 보이지 않도록 관리자 설정 텍스트 업데이트
- 필요할 경우 프론트엔드 스펙 추가/업데이트
제가 염두에 둔 프론트엔드 변경 사항은 대략 다음과 같습니다:
const minImagesToAutoGrid = Number(
this.siteSettings.auto_grid_images_minimum_count ?? 3
);
if (
this.siteSettings.enable_auto_grid_images &&
this.#consecutiveImages?.length >= minImagesToAutoGrid &&
this.textManipulation
) {
this.textManipulation.autoGridImages([...this.#consecutiveImages]);
this.#consecutiveImages.length = 0;
}
또한 PR #36014에서 Discourse 스타일의 열거형(enum) 사이트 설정의 최근 예시가 있습니다:
PR #36014 - FEATURE: adds calendar_upcoming_events_default_view setting
해당 PR은 이미지 그리드와 직접 관련이 있는 것이 아니라 캘린더 및 이벤트 플러그인을 위한 것이므로, 이 기능이 해당 PR의 영향을 받는다고 제안하는 것은 아닙니다. 이러한 유형의 설정 가능한 사이트 설정에 대한 유용한 구현 패턴을 보여주는 것 같아서 언급합니다: 설정을 정의하고, 클라이언트에 노출한 후, 프론트엔드에서 siteSettings를 통해 읽습니다.
관련 링크
자동 그리드 이미지 비활성화에 대한 원래 토론:
자동 이미지 그리드 공지:
Automatically apply grids to image uploads
사이트 설정 아키텍처를 보여주는 예시 PR:
PR #36014 - FEATURE: adds calendar_upcoming_events_default_view setting
제 실험적 브랜치: