게시글 연동 구글 애드센스 애드온 추가

git-svn-id: http://xe-core.googlecode.com/svn/trunk@1934 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2007-07-13 07:36:36 +00:00
parent 8c09488be4
commit c2699bb91b
3 changed files with 149 additions and 0 deletions

View file

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<addon version="0.1">
<title xml:lang="ko">게시글 구글 애드센스 연동</title>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
<name xml:lang="ko">제로</name>
<description xml:lang="ko">
게시글의 상/하단에 구글 애드센스를 추가할 수 있습니다.
추가확장폼에서 사용자에게 구글애드센스 코드를 받게 하여 글쓴이와 연동되는 애드센스 출력이 가능합니다.
이 기능을 사용하지 않거나 사용자가 애드센스 코드를 입력하지 않았다면 기본으로 설정된 애드센스 코드가 사용됩니다.
색상을 입력할때는 # 을 제외한 나머지 6자리의 색상코드를 입력해주세요.
위치를 top 또는 bottom을 입력하시면 게시글 상단 또는 하단에 광고를 출력할 수 있습니다.
</description>
</author>
<extra_vars>
<var name="position">
<title xml:lang="ko">위치</title>
<description xml:lang="ko">top : 게시글 상단, bottom : 게시글 하단 을 지정하실 수 있습니다.</description>
</var>
<var name="ad_client">
<title xml:lang="ko">구글 애드센스 키</title>
<description xml:lang="ko">기본으로 사용될 구글 애드센스 키를 입력해주세요.</description>
</var>
<var name="user_ad_client">
<title xml:lang="ko">회원 키 항목 이름</title>
<description xml:lang="ko">회원의 구글 애드센스를 허락하시려면 가입항목중 구글 키 입력 항목 이름을 입력해주세요.</description>
</var>
<var name="ad_width">
<title xml:lang="ko">가로 길이</title>
<description xml:lang="ko">애드센스의 가로길이를 입력해주세요.</description>
</var>
<var name="ad_height">
<title xml:lang="ko">세로 길이</title>
<description xml:lang="ko">애드센스의 세로길이를 입력해주세요.</description>
</var>
<var name="ad_format">
<title xml:lang="ko">포맷</title>
<description xml:lang="ko">애드센스 포맷을 입력해주세요.</description>
</var>
<var name="ad_type">
<title xml:lang="ko">타입</title>
<description xml:lang="ko">애드센스의 타입을 입력해주세요.</description>
</var>
<var name="ad_channel">
<title xml:lang="ko">채널</title>
<description xml:lang="ko">채널을 입력해주세요. (사용자 정의 구글 애드센스일 경우 사용되지 않습니다)</description>
</var>
<var name="color_border">
<title xml:lang="ko">외곽선 색상</title>
<description xml:lang="ko">외곽선 색상을 입력해주세요.</description>
</var>
<var name="color_bg">
<title xml:lang="ko">배경색</title>
<description xml:lang="ko">배경색상을 입력해주세요.</description>
</var>
<var name="link_color">
<title xml:lang="ko">링크 글자색</title>
<description xml:lang="ko">링크가 걸린 글자의 색상을 입력해주세요.</description>
</var>
<var name="text_color">
<title xml:lang="ko">글자 색 </title>
<description xml:lang="ko">링크가 걸리지 않은 글자의 색을 입력해주세요</description>
</var>
<var name="url_color">
<title xml:lang="ko">URL 색</title>
<description xml:lang="ko">URL의 글자색을 입력해주세요.</description>
</var>
<var name="ui_features">
<title xml:lang="ko">테두리 형태</title>
<description xml:lang="ko">테두리 형태를 입력해주세요.</description>
</var>
<var name="background_image">
<title xml:lang="ko">배경 이미지를 입력해주세요.</title>
<description xml:lang="ko">접근가능한 웹서버에 올린 배경 이미지의 URL을 입력해주세요.</description>
</var>
</extra_vars>
</addon>

View file

@ -0,0 +1,23 @@
<?php
if(!defined("__ZBXE__")) exit();
/**
* @file google_adsense.addon.php
* @author zero (zero@nzeo.com)
* @brief google_adsense를 게시글의 /하단에 출력할 있도록 한다.
*
* 모든 출력이 끝난후에 사용이 .
**/
// called_position이 before_module_init일때만 실행
if($called_position != 'before_display_content' || Context::getResponseMethod()=="XMLRPC") return;
require_once("./addons/google_adsense/google_adsense.lib.php");
if($addon_info->position == "top") $pos_regx = "!<\!--BeforeDocument\(([0-9]+),([0-9]+)\)-->!is";
else $pos_regx = "!<\!--AfterDocument\(([0-9]+),([0-9]+)\)-->!is";
$GLOBALS['__g_addon_info__'] = $addon_info;
$output = preg_replace_callback($pos_regx, matchDocument, $output);
?>

View file

@ -0,0 +1,50 @@
<?php
function matchDocument($matches) {
$addon_info = $GLOBALS['__g_addon_info__'];
$source_code = $matches[0];
$document_srl = $matches[1];
$member_srl = $matches[2];
// 사용자 입력을 지원하면 해당 회원의 정보에서 구글 키를 가져옴
if($member_srl && $addon_info->user_ad_client) {
$oMemberModel = &getModel('member');
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
$key = $member_info->{$addon_info->user_ad_client};
if($key) $addon_info->ad_client = $key;
}
$adsense_code = addAdSense($addon_info);
return $source_code.$adsense_code;
}
function addAdSense($addon_info) {
$script_code = <<<EndOfScript
<script type="text/javascript"><!--
google_ad_client = "{$addon_info->ad_client}";
google_ad_width = "{$addon_info->ad_width}";
google_ad_height = "{$addon_info->ad_height}";
google_ad_format = "{$addon_info->ad_format}";
google_ad_type = "{$addon_info->ad_format}";
google_ad_channel = "{$addon_info->ad_type}";
google_color_border = "{$addon_info->color_border}";
google_color_bg = "{$addon_info->color_bg}";
google_color_link = "{$addon_info->link_color}";
google_color_text = "{$addon_info->text_color}";
google_color_url = "{$addon_info->url_color}";
google_ui_features = "{$addon_info->ui_features}";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
EndOfScript;
if($addon_info->background_image) $backgroundStyle = sprintf('background-image:url(%s)', $addon_info->background_image);
$script_code = sprintf('<div style="width:%dpx;height:%dpx;%s;margin:10px 0 10px 0px;">%s</div>',$addon_info->ad_width, $addon_info->ad_height, $backgroundStyle, $script_code);
return $script_code;
}
?>