You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.6 KiB
130 lines
3.6 KiB
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
/**
|
|
* Class Sitemap
|
|
* ------------------------------------------------------------------------
|
|
* 사이트맵
|
|
*/
|
|
class Sitemap extends WB_Controller {
|
|
|
|
/**
|
|
* 사이트맵에 등록할 일반 페이지들
|
|
*/
|
|
function pages()
|
|
{
|
|
$data['list'] = array();
|
|
|
|
// 메인페이지
|
|
$data['list'][] = array(
|
|
"loc" => base_url("/"),
|
|
"lastmod" => date('Y-m-d'),
|
|
"priority" => "0.8",
|
|
"changefreq" => "daily"
|
|
);
|
|
|
|
$list = $this->db->get('sitemap')->result_array();
|
|
|
|
if( count($list) > 0 )
|
|
{
|
|
foreach($list as $row)
|
|
{
|
|
$data['list'][] = array(
|
|
"loc" => base_url($row['sit_loc']),
|
|
"lastmod" => date('Y-m-d'),
|
|
"priority" => "{$row['sit_priority']}",
|
|
"changefreq" => $row['sit_changefreq']
|
|
);
|
|
}
|
|
}
|
|
|
|
$this->layout = FALSE;
|
|
$result = $this->load->view('tools/sitemap_pages', $data, TRUE);
|
|
echo $result;
|
|
}
|
|
|
|
/**
|
|
* 통합 사이트맵
|
|
*/
|
|
function index()
|
|
{
|
|
$list = $this->db->where('brd_lv_read','0')->get('board')->result_array();
|
|
|
|
ob_start();
|
|
echo "<?xml version=\"1.0\" encoding=\"" . config_item('charset') . "\"?".">\n";
|
|
echo "<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n";
|
|
|
|
echo "<sitemap>".PHP_EOL;
|
|
echo "<loc>".base_url('sitemap_1.xml')."</loc>".PHP_EOL;
|
|
echo "</sitemap>";
|
|
|
|
|
|
foreach ($list as $row) {
|
|
echo "<sitemap>".PHP_EOL;
|
|
echo "<loc>" . base_url("sitemap_".$row['brd_key'].".xml") . "</loc>\n";
|
|
echo "</sitemap>\n";
|
|
}
|
|
|
|
echo "</sitemapindex>\n";
|
|
|
|
$xml = ob_get_clean();
|
|
|
|
echo $xml;
|
|
|
|
}
|
|
|
|
/**
|
|
* 게시판별 사이트맵
|
|
* @param $brd_key
|
|
*/
|
|
function board($brd_key)
|
|
{
|
|
if(empty($brd_key))
|
|
{
|
|
die('잘못된 접근입니다.');
|
|
}
|
|
|
|
$board = $this->boardlib->get($brd_key, TRUE);
|
|
|
|
if( !$board OR $board['brd_lv_read'] > 0 )
|
|
{
|
|
die('이 게시판은 사이트맵을 사용하지 않습니다.');
|
|
}
|
|
|
|
$list = $this->db->where('post_secret', 'N')->where('post_status','Y')->where('brd_key', $brd_key)->from('board_post')->get()->result_array();
|
|
|
|
$data['list'] = array();
|
|
|
|
// 게시판 자체 사이트맵 추가
|
|
// 게시판글 최종수정일 가져오기
|
|
$max_date = $this->db->select_max('upd_datetime', 'max')->where('post_status','Y')->where('brd_key',$brd_key)->from('board_post')->get()->row(0)->max;
|
|
$data['list'][] = array(
|
|
"loc" => base_url("/board/{$brd_key}"),
|
|
"lastmod" => date('Y-m-d', strtotime($max_date)),
|
|
"priority" => "0.7",
|
|
"changefreq" => "daily"
|
|
);
|
|
|
|
foreach($list as $row)
|
|
{
|
|
$data['list'][] = array(
|
|
"loc" => base_url("/board/{$brd_key}/{$row['post_idx']}"),
|
|
"lastmod" => date('Y-m-d', strtotime($row['upd_datetime'])),
|
|
"priority" => "0.7",
|
|
"changefreq" => "daily"
|
|
);
|
|
}
|
|
|
|
$this->layout = FALSE;
|
|
$result = $this->load->view('tools/sitemap_pages', $data, TRUE);
|
|
echo $result;
|
|
}
|
|
|
|
function __construct()
|
|
{
|
|
parent::__construct();
|
|
|
|
header('content-type: text/xml');
|
|
header('cache-control: no-cache, must-revalidate');
|
|
header('pragma: no-cache');
|
|
}
|
|
}
|