버그인지는 확실치 않지만 킴스큐 Q&A에 이에 대한 질문을 올렸지만 답변이 달리지

않아서 커스텀으로 직접 SEO가 적용되도록 아래와 같이 수정하였음


1. 증상

- 킴스큐 버전: 1.2.2

- 일단 모든 메뉴, 페이지, 모듈마게시판 모듈이 사용되는 html 페이지의 소스를 까보면 SEO 설정이 정상적으로 되어 있는 것을 확인할 수 있으나 게시판 모듈 이외의 모듈 혹은 페이지가 적용된 메뉴의 html 소스를 까보면 단순히 subject, keywords만 적용이 되어 있음


2. 원인

- 일단 SEO 설정하는 스위치 소스를 보면 아래와 같다. 


<meta name="robots" content="ALL" />

<meta name="generator" content="kimsQ-RB <?php echo $d['admin']['version']?>" /> 

<meta name="author" content="<?php echo $_SERVER['HTTP_HOST']?>" /> 

<meta name="title" content="<?php echo strip_tags($g['meta_tit'])?>" /> 

<meta name="subject" content="<?php echo strip_tags($g['meta_sbj'])?>" /> 

<meta name="keywords" content="<?php echo strip_tags($g['meta_key'])?>" /> 

<meta name="description" content="<?php echo strip_tags($g['meta_des'])?>" />

<meta name="classification" content="<?php echo strip_tags($g['meta_cla'])?>" />

<meta name="reply-to" content="<?php echo strip_tags($g['meta_rep'])?>" />

<meta name="content-language" content="<?php echo strip_tags($g['meta_lan'])?>" />

<meta name="build" content="<?php echo strip_tags($g['meta_bui'])?>" />

<meta name="copyright" content="Copyrights © <?php echo $date['year']?> <?php echo $_SERVER['HTTP_HOST']?> All Rights Reserved" />


게시판 모듈 소스를(bbs/main.php) 보면 아래와 같이 위의 모든 항목의 SEO애 대해 설정하는 부분이 존재하나 _core를 아무리 뒤져봐도 아래와 같이 SEO 설정하는 부분을 찾지 못하였음. 


$_SEO = getDbData($table['s_seo'],'rel=3 and parent='.$B['uid'],'*');

if ($_SEO['uid'])

{

$g['meta_tit'] = $_SEO['title'];

$g['meta_sbj'] = $_SEO['subject'];

$g['meta_key'] = $_SEO['keywords'];

$g['meta_des'] = $_SEO['description'];

$g['meta_cla'] = $_SEO['classification'];

$g['meta_rep'] = $_SEO['replyto'];

$g['meta_lan'] = $_SEO['language'];

$g['meta_bui'] = $_SEO['build'];

}



3. 해결

1) "_core\engine\main.engine.php" 파일에서 70번째 줄의

$_HM = getDbData($table['s_menu'],"id='".$_tmp['id']."' and site=".$s,'*');

의 다음 줄에 


$_SEO = getDbData($table['s_seo'],"rel=1 AND parent=".$_HM['uid'],'*');


와 같이 선언해줌. 여기서 rel=1은 메뉴를 의미하고 $_HM['uid']는 메뉴 UID를 의미. 


2) 같은 파일에서 129번째 줄에 (if ($_HP['pagetype']==1)조건이 끝난 직후)

아래와 같이 선언해줌. 

$_SEO = getDbData($table['s_seo'],"rel=2 AND parent=".$_HP['uid'],'*');


여기서 rel=2은 페이지를 의미하고 $_HP['uid']는 페이지 UID를 의미. 


3) 마지막으로 같은 파일의 맨 마지막 부분의 switch 선언하는 부분 바로 위에

아래와 같이 $_SEO 세부값을 적용해준다. 


if ($_SEO['uid']) {

$g['meta_tit'] = $_SEO['title'];

$g['meta_sbj'] = $_SEO['subject'];

$g['meta_key'] = $_SEO['keywords'];

$g['meta_des'] = $_SEO['description'];

$g['meta_cla'] = $_SEO['classification'];

$g['meta_rep'] = $_SEO['replyto'];

$g['meta_lan'] = $_SEO['language'];

$g['meta_bui'] = $_SEO['build'];

}


이와 같이 해준 이후로는 모든 페이지에서 설정한 SEO가 정상적으로 출력이 됨. 



Posted by 파노카페
: