| 제목 | SEO 관련 고민을 하다가 | ||
|---|---|---|---|
| 글쓴이 | 천재작곡가 | 작성시각 | 2015/11/06 10:25:49 |
|
|
|||
|
Hook을 이용한 레이아웃 사용중 SEO를 더 간편하게 넣을수 없을까 고민하다가 라이브러리를 한번 만들어봤습니다. 아직 초짜의 실력이라, 좋은코딩은 아니지만 고수님들의 조언을 얻을수 있을까 하고 한번 올려봅니다. 감사합니다! ◎ appliction/config/site_config.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**************************************************
*
* SEO 를 위한 메타 태그 설정
*
**************************************************/
$config['site_title'] = '싱투미!';
$config['site_keywords'] = '싱투미,Single';
$config['site_robot'] = 'index,follow';
◎ application/config/autoload.php
$autoload['config'] = array('site_config');
◎ application/libraries/Seo.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Seo {
private $title = NULL; // <title>$title</title>
private $desc = NULL; // <meta name="description" contents="$desc">
private $keywords = NULL;
private $charset = NULL;
private $robots = NULL;
private $og_title = NULL;
private $og_type = NULL;
private $og_img = NULL;
private $og_url = NULL;
/********************************************************************************************
* 생성자
*******************************************************************************************/
function __construct($data = array()) {
$CI =& get_instance();
$this->title = $CI->config->item('site_title');
$this->keywords = $CI->config->item('site_keywords');
$this->charset = $CI->config->item('charset');
$this->robots = $CI->config->item('robots');
$this->set_meta($data);
}
/********************************************************************************************
* 배열 설정을 메타로 한번에 설정한다.
*******************************************************************************************/
public function set_meta($meta = array()) {
foreach($meta as $key=>$val) {
if($key === "title") {
// 타이틀일 경우에만 사이트 타이틀을 붙여준다.
$this->set_title($val);
}
else {
$this->$key = $val;
}
}
}
/********************************************************************************************
* 페이지 타이틀을 변경합니다.
*******************************************************************************************/
public function set_title($title) {
$CI =& get_instance();
$this->title = $title . ' - ' . $CI->config->item('site_title');
}
/********************************************************************************************
* 현재 설정값을 이용하여 세팅된 Meta 태그값을 내보냅니다.
*
* @return String $output 세팅된 Meta 태그
*******************************************************************************************/
public function output(){
$output = "<meta chaset='{$this->charset}'>"
. "<title>{$this->title}</title>"
. '<meta http-equiv="X-UA-Compatible" content="IE=edge">'
. '<meta name="viewport" content="width=device-width, initial-scale=1">';
if( $this->keywords ) {
$output .= "<meta name='keywords' content='{$this->keywords}' />";
}
if( $this->desc ) {
$output .= "<meta name='description' content='{$this->desc}' />";
}
if( $this->robots ) {
$output .= "<meta name='robots' content='{$this->robots}' />";
}
if( $this->og_title) {
$output .= "<meta property='og:title' content='{$this->og_title}' />";
}
if( $this->og_type) {
$output .= "<meta property='og:type' content='{$this->og_type}' />";
}
if( $this->og_img) {
$output .= "<meta property='og:image' content='{$this->og_img}' />";
}
if( $this->og_url) {
$output .= "<meta property='og:url' content='{$this->og_url}' />";
}
return $output;
}
/********************************************************************************************
* 소멸자
*******************************************************************************************/
function __destruct() {
}
}
◎ 각 컨트롤러
/**************************************************
* 현재 페이지의 SEO관련 세팅을 실행한다. (required)
**************************************************/
$meta = array(
"title" => "메인페이지"
);
$this->seo->set_meta($meta);
◎ 뷰
<!DOCTYPE html> <html lang="ko"> <head><?php echo $this->seo->output();?></head> |
|||
| 태그 | SEO | ||
| 다음글 | CI 3.0.3 base_url(), site_url(... (2) | ||
| 이전글 | ie에서 발생하는 SESSION 오류 (3) | ||
|
한대승(불의회상)
/
2015/11/06 13:18:38 /
추천
0
|
|
변종원(웅파)
/
2015/11/06 18:01:14 /
추천
0
포럼소스에서는 뷰에만 해당 메타태그가 삽입되도록 작업 되어 있는데 hook으로 전역적으로 제어하는 것도 좋네요. ^^
|
|
스카이
/
2015/11/30 23:23:02 /
추천
0
저도 SEO 작업에 관심이 많습니다.
참고하겠습니다. |
소중한 자료 잘 사용 하겠습니다.