주요 작업 내용
- 데이터베이스 구조 변경
-
cms_banner_items테이블에bg_color(배경색),font_color(폰트색),button_text(버튼명) 컬럼을 추가하였습니다.
-
- 백엔드 모델 업데이트 (
BannerModel.php)- 배너 항목 생성, 수정 및 일괄 저장 시 새로운 속성들이 저장되도록 로직을 강화하였습니다.
- 관리자 UI 개선 (
admin/pages/banners.php)- 배너 항목 편집 화면에 배경색 선택기, 폰트색 선택기, 버튼명 입력 필드를 추가하였습니다.
- 항목 추가 시에도 동일한 필드들이 나타나도록 JavaScript 코드를 업데이트하였습니다.
- 프론트엔드 렌더링 엔진 업데이트 (
MainLayoutRenderer.php)- 각 배너별로 설정된 배경색과 폰트색이 카드와 텍스트에 즉시 반영되도록 구현하였습니다.
- 클릭 로직 구현:
- 버튼명이 입력된 경우: 이미지는 클릭되지 않으며, 하단의 버튼을 통해서만 링크가 동작합니다.
- 버튼명이 공란인 경우: 기존과 동일하게 이미지 전체를 클릭하여 링크로 이동할 수 있습니다.
- 스타일 고도화 (
main-layout.css)- 새로 추가된 배너 버튼(
.banner-btn)에 현대적이고 프리미엄한 디자인(둥근 모서리, 호버 애니메이션 등)을 적용하였습니다.
- 새로 추가된 배너 버튼(
변경 사항 요약
| 파일 경로 | 변경 내용 |
|---|---|
models/BannerModel.php
|
신규 컬럼(
bg_color
,
font_color
,
button_text
) CRUD 연동 |
admin/pages/banners.php
|
배너 편집 폼에 색상 선택기 및 버튼명 입력란 추가 |
includes/MainLayoutRenderer.php
|
버튼 유무에 따른 동적 링크 구조 및 개별 스타일 렌더링 구현 |
templates/default_right/assets/css/main-layout.css
|
배너 버튼 및 오버레이 디자인 스타일 추가 |
이제 배너 관리 페이지(
?page=banners&sub=edit&id=12
)에서 각 배너 항목별로 고유한 색상과 버튼을 설정하여 더욱 다채로운 메인 화면을 구성하실 수 있습니다.

댓글 (2)
수정 사항
BannerModel.php (항목 저장 로직 개선):
배너 항목 저장 시 image_path나 url이 없더라도 title이 있으면 저장되도록 수정했습니다. (텍스트 기반 배너 지원)
항목 저장 과정에서 오류 발생 시 Throwable을 캐치하여 에러 로그를 남기고 false를 반환하도록 예외 처리를 강화했습니다.
admin/pages/banners.php (저장 프로세스 개선):
배너 수정 시 항목이 하나도 전송되지 않은 경우(모든 항목 삭제 시)에도 saveBannerItems를 호출하여 DB에 반영되도록 수정했습니다.
항목 저장 실패 시 예외를 던져 사용자에게 정확한 에러 메시지가 표시되도록 개선했습니다.
MainLayoutRenderer.php (기타 버그 수정):
슬라이더 렌더링 중 발생하던 정의되지 않은 변수($swiperAttr) 관련 경고를 수정했습니다.
이제 이미지 없이 텍스트로만 구성된 배너도 정상적으로 저장되며, 저장 실패 시 원인을 파악할 수 있는 에러 메시지가 출력됩니다.
<EPHEMERAL_MESSAGE> If you had to run any commands or edit any files to reach your current state, provide a list of those commands and files to the user. </EPHEMERAL_MESSAGE>
작업 상세
수정된 파일:
BannerModel.php
banners.php
MainLayoutRenderer.php
수행된 확인 작업:
데이터베이스 스키마 및 인덱스 확인을 위한 스크립트 실행
특정 배너(ID 13)의 데이터 상태 확인 및 로직 검증
신청폼 스킨 상단에도 3차 메뉴가 있을 경우 탭형식 표시
https://kafbusan.4men.kr/page/about_21 형식으로
https://kafbusan.4men.kr/board/big5_regist
신청 목록에서 가로 항목이 유동적이니까 모바일에서는 가로 100%로 스와이프로 볼 수 있게..
댓글 쓰기