본 문서에서는 http://localhost/xzine.kr/admin/webzine/editor?id=3의 웹진 편집기 프레임워크 내에 게시물 모듈을 구현하기 위한 계획을 정리합니다.
User Review Required
IMPORTANT
표시 갯수 속성 추가 요구사항에 "표시갯수보다 많을 경우", "표시갯수만큼 세로배열" 등의 조건이 있습니다. 이를 위해 속성 패널(게시물 모듈 선택 시)에 표시 갯수 (PC) 와 표시 갯수 (모바일) 입력란을 추가하려고 합니다. 기본값으로 카드#1형 등에서 말씀하신 PC 3 / 모바일 1 등의 값을 설정할 수 있도록 할 예정입니다.
WARNING
오디오 첨부 판별 방식 posts 테이블에는 오디오 여부를 직접 나타내는 필드가 없기 때문에, post_files 테이블에 업로드된 파일 확장자가 .mp3, .wav 등인지 검사하여 파랑색 스피커 아이콘을 표시하도록 구현하겠습니다.
Proposed Changes
[Controller]
WebzineAdminController.php 내의 API를 수정하여 게시물 데이터와 함께 유튜브 링크 및 오디오 첨부 여부를 반환하도록 합니다.
[MODIFY]
apiGetPosts()메서드 수정SELECT쿼리에youtube_url필드 추가- 각 게시물(
post_id)에 대해post_files테이블을 조회하여 확장자가 오디오 파일인지 확인 후has_audio플래그를 추가.
[Editor Core / Views]
_webzine_editor_core.php를 수정하여 다양한 표시형태(UI)와 무한스크롤, 썸네일 아이콘을 구현합니다.
[MODIFY]
- 속성 패널 업데이트 (
prop-module-panel)- "게시물 모듈" 선택 시 보여지는 패널에 "표시 갯수(PC)" 및 "표시 갯수(모바일)" 입력 컨트롤 추가
- 데이터 로딩 및 속성 저장 업데이트 (
fetchPostsForBoard,applyPostStyle)- 선택된 표시 갯수를
data-pc-count,data-mob-count등의 속성으로layer-element에 저장
- 선택된 표시 갯수를
- 렌더링 로직 업데이트 (
renderPostElement)- 공통 썸네일 및 아이콘 로직:
youtube_url이 있으면 썸네일 중앙에 빨간색 플레이 아이콘 (ph-fill ph-play-circle) 표시has_audio가 참이면 제목 앞에 파란색 스피커 아이콘 (ph-fill ph-speaker-high) 표시
- 리스트형: 제목과 [작성일]을 한 줄씩 표시. (게시물이 표시 갯수보다 많으면 세로 무한 스크롤 스와이퍼 적용)
- 웹진#1형: 좌측 50% 썸네일, 우측 50% 텍스트.
slidesPerView: 1설정으로 1건씩 좌우 무한 슬라이드 및 하단 도트(Pagination) 추가. - 웹진#2형: 좌측 썸네일, 우측 텍스트로 구성되며 스크롤 없이 표시갯수만큼 세로로 나열.
- 웹진#3형: 좌측 텍스트, 우측 썸네일로 구성되며 스크롤 없이 표시갯수만큼 세로로 나열.
- 카드#1형: 썸네일 / 제목 / 내용 3줄 구성. Swiper를 사용해 PC/모바일에 맞춰 표시 갯수 설정, 개수 초과 시 무한 루프 및 스와이프 기능 활성화.
- 카드#2형: 썸네일 / 제목 구성. Swiper를 사용해 PC/모바일에 맞춰 표시 갯수 설정, 개수 초과 시 무한 루프 및 스와이프 기능 활성화.
- 공통 썸네일 및 아이콘 로직:
Verification Plan
Automated Tests
- 없음
Manual Verification
- 관리자 페이지로 로그인 후 웹진 편집기(id=3)에 접속합니다.
- 모듈을 추가하고 "게시물 모듈"로 변경합니다.
- 게시판을 선택하고 속성 창에서 각 스타일(리스트형, 웹진형 1/2/3, 카드형 1/2)을 차례대로 변경해 봅니다.
- 표시 갯수보다 많이 체크하여 스크롤(상하/좌우 무한 스크롤)이 정상적으로 동작하는지 확인합니다.
- 유튜브 링크가 있거나 오디오 파일이 첨부된 게시물에 대해 올바른 아이콘(빨강/파랑)이 표시되는지 확인합니다.
다양한 표시형태 및 실시간 반영: 게시판 및 게시물 체크 시, 선택된 스타일(리스트형, 웹진형 13, 카드형 12)에 맞게 캔버스에 즉각 반영되도록 구현했습니다.
속성 패널 및 무한 스크롤 추가: 모듈 속성에 "표시 갯수 (PC)" 및 "표시 갯수 (모바일)" 설정 기능을 추가했습니다. 체크된 게시물의 수가 이 설정된 갯수보다 많으면 리스트형은 위로, 나머지 슬라이드 지원 형태(웹진#1, 카드형 등)는 좌우로 무한 스크롤(스와이프)되도록 설정했습니다.
아이콘 적용: 유튜브/쇼츠 영상이 있는 게시물은 썸네일 중앙에 빨간색 플레이 아이콘이, 오디오가 첨부된 게시물은 제목 앞에 파란색 스피커 아이콘이 표시됩니다.