게시판마다 다른 스킨을 사용하고 있습니다.
그런데, 게시판이 화면에 나타날 때, 다른 게시판에서 사용중인 스킨의 style.css까지 모두 로딩되더군요.
성능도 저하되겠지만, style.css의 로딩 순서를 조절할 수가 없어서, 새로 만든 스킨의 style.css가 !important 범벅이 되고 있습니다.
소스를 보니 KBoardSkin.class.php 에서 getActiveList()를 할 때, DB에 설정된 skin은 모두 로딩을 하게 되어 있는데, 그럴 필요가 있나요?
현재 board_id를 가지고 matching 되는 것만 가져 오는 식이 어떨까요?
(음... 현재 kboard_board_setting 테이블에 board_id는 저장이 되어 있지 않으니, board_name을 써야될 것 같군요.)
사용중인 스킨의 style.css 파일이 로딩됩니다.
게시판에 적용한 스킨 그리고 최신글 뷰에 적용된 스킨등이 해당합니다.
그리고 스킨의 style.css 파일 보시면 아시겠지만 저희 원칙은 !important 속성을 최대한 사용하지 않는것입니다.
대신 아이디 속성으로 스킨들을 정확히 구분합니다.
#kboard-avatar-list
#kboard-contact-form-list
#kboard-customer-list
#kboard-default-list
#kboard-thumbnail-list
이런식으로 아이디가 정확히 구분되기 때문에 각 스킨별로 전혀 영향을 주지 않습니다.
새로운 스킨을 만든다면 역시 아이디만 변경해서 CSS 속성을 적용하고 있고요.
예를 들어 default 스킨을 복사해서 naver 라는 스킨으로 만들었다면,
style.css 파일에서
#kboard-default 이걸 찾아서 #kboard-naver 로 모두 바꿔주시고
list.php 파일에서도
역시 kboard-default 이걸 찾아서 kboard-naver 이걸로 모두 바꿔주시고
document.php 파일에서도
역시 kboard-default 이걸 찾아서 kboard-naver 이걸로 모두 바꿔주시면 절대로 속성이 엉키지 않을겁니다.
board_id 등으로 가져올 수도 있지만, style.css 파일의 경우 페이지 <head></head> 태그 사이에 삽입되어야 하는게 웹표준에 맞기 때문에 페이지가 로딩되기 전에 style.css 파일을 로딩해야 합니다.
또한 게시판만 체크할 수는 없습니다.
무슨 말이냐면, 예를들어 사이드바(혹은 페이지 하단)에 최신글 숏코드가 삽입되어 있다면 게시판 체크와는 별도로 다른 작업이 필요하겠죠.
이렇게 하나 둘 체크 해야하는 순간이 많아지다면 (큰 차이는 없겠지만) 오히려 로딩이 0.1로 라도 느려질 수 있지 않을까 합니다.
그래서 애초에 간단하게 게시판 설정에서 선택한 스킨과 최신글 뷰에서 선택한 스킨의 style.css 파일을 <head></head> 사이에 출력하고 있습니다.
여러가지 의견과 다양한 사례로 KBoard를 만들어가고 있습니다.
올려주신 내용도 심도있게 검토하여 KBoard를 개선할 수 있는 방향을 연구해보겠습니다.
그리고 kboard_board_setting 의 uid 컬럼이 게시판 ID 입니다.
즉, uid 컬럼이 board_id 입니다^^