시작페이지로 즐겨찾기추가
로그인
회원가입 l 출석체크 l 마이페이지 l CGIMALL
자료실 사이트등록 랭킹100 프로그램리뷰 관리자추천자료 초보가이드
커뮤니티
전체 펼쳐보기
퀵메뉴링크
jquery , CSS , PHP , Javascript , 무료폰트 , ASP
상세검색
> 커뮤니티 > 골드팁 상세보기
커뮤니티 구인구직
사이트등록
현재접속자 새로고침
게시판타이틀 골드팁 / 상세보기
트위터로 보내기 미투데이로 보내기 싸이월드 공감
추천수 26 | 조회수 980 | 등록일 2017-08-18 14:33:15

닉네임

Melbourners Au

제목

그룹내 배너들을 몇 개 모듬으로 나누어 골고루 출력하기
내용
기존 해피cgi 템플릿태그는 배너그룹 내 배너들을 전부 다 띄우거나 랜덤으로 1개만 띄우거나 할 뿐
그룹내 배너 전체를 n개 모둠으로 나누어 군데군데 적절히 뿌리는건 불가능했습니다.
사실상 배너제목을 이용해서 일일이 수동으로 배치시켜야 하는데요.
같은 자리에 배너광고 많이 유치하셔야 할 경우 불편했을 겁니다.

이걸 개선한 헬퍼함수를 만들었습니다.
이 역시 필요하신 분이 있을리 없지만 혼자 삽질한 게 아까워서 올려봅니다.



/**
 * 그룹내 배너 전체를 띄우는 스크립트.
 *
 * $groupid str 배너들의 그룹명이 들어갑니다. "맛집상단" 등
 * $mod1 int 기본값 1. 그룹 내 모든 배너를 n개의 그룹으로 나누어야 할 때 그 n을 입력합니다.
 * $mod2 int 기본값 1. 이 함수가 n개의 그룹으로 나뉜 그룹들 중 m번째 그룹일 때 그 m을 입력합니다.
 * $wrapper_left str 각 배너의 왼쪽에 출력해야 할 html 문자열입니다. <div class="banners"> 등
 * $wrapper_right str 각 배너의 오른쪽에 출력해야 할 html 문자열입니다. </div> 등
 */
function groupped_banners ($groupid, $mod1 = 1, $mod2 = 1, $wrapper_left = "", $wrapper_right = "") {
// 배너를 저장하는 테이블명 글로벌함수입니다. 솔루션별로 다를수있음
global $happy_banner_tb;

// 배너 SQL을 돌립니다.
$banners_sql = "SELECT * FROM $happy_banner_tb WHERE groupid = "$groupid" AND display = "Y" ORDER BY title ASC";
$banners = query($banners_sql);

// iterator를 쓰기 위한 배열을 굳이 하나 새로 만들어서
$the_banner = array();

// 그 배열에 while문으로 sql결과를 모아놓고
while ($each_banner = mysql_fetch_assoc($banners)) : $the_banner[] = $each_banner; endwhile;

// 배너를 n개의 그룹으로 나눕니다. 등차수열 원리가 적용되어 있습니다.
for ($i = 0; $i < count($the_banner); $i++) {

// m번째 그룹의 1항, 2항, 3항... 만을 가져옵니다.
$j = $mod1 * $i + $mod2;

// 실제 나와야 할 배너의 index를 조정합니다.
$k = $j - 1;

// 이 index에 해당하는 배너가 그 배열에 있으면
if ($the_banner[$k]) {

// 필요한 data를 가져와서 배너를 뿌리고 끝냅니다.
$number = $the_banner[$k]["number"];
$width = $the_banner[$k]["width"];
$height = $the_banner[$k]["height"];
$pngClass = ( strpos($the_banner[$k]["img"],"png") )?" class="png24" ":"";

echo $wrapper_left."<a href=\"banner_link.php?number=$number\" target=\"_blank\"><img src="banner_view.php?number=$number" width=$width height=$height border=0 align="absmiddle" $linkScript $pngClass alt="$link_alt" ></a>".$wrapper_right;
}
}
}



위 함수를 inc/function.php 같은 코어파일에 적당히 넣어놓으신 다음 아무 html 파일에서나 (예를 들어) 이런 식으로 쓰시면 됩니다.

<?php groupped_banners("커뮤니티첫화면", 3, 1, "<div class="slide">", "</div>"); ?>
lorem

<?php groupped_banners("커뮤니티첫화면", 3, 2, "<div class="slide">", "</div>"); ?>
ipsum

<?php groupped_banners("커뮤니티첫화면", 3, 3, "<div class="slide">", "</div>"); ?>
dolor


이렇게 하면 실제로 보이는 화면은 이렇게 됩니다.


[커뮤니티첫화면 1번째배너][커뮤니티첫화면 4번째배너][커뮤니티첫화면 7번째배너]
lorem

[커뮤니티첫화면 2번째배너][커뮤니티첫화면 5번째배너]
ipsum

[커뮤니티첫화면 3번째배너][커뮤니티첫화면 6번째배너]
dolor
추천스크랩소스보기 목록
이전게시글 해피솔루션 통합검색 부분 개선코드 2017-08-11 15:05:14