[PHP] 영카트5에 사용할 수 있는 사이트맵 생성 코드
영카트5에 등록된 상품의 사이트맵을 생성하는 PHP 코드이다. 사이트맵 생성 Class 는 https://github.com/o/sitemap-php/blob/master/Sitemap.php 를 이용한다. 사이트맵 xml 파일은 sitemap
디렉토리에 저장되며 웹서버의 파일 쓰기 권한이 부여되어야 한다.
<?php
if (PHP_SAPI != 'cli')
die('');
require_once './_common.php';
require_once G5_LIB_PATH.'/Sitemap.php';
session_write_close();
if (isset($argv[1]) && $argv[1])
define('SITE_URL', set_http($argv[1]));
if (!defined('SITE_URL') || SITE_URL == '')
die('Please specify your site url.');
$sitemap = new Sitemap(SITE_URL);
$path = G5_PATH.'/sitemap/';
if (!is_writable($path))
die('You do not have write permission.');
$sitemap->setPath($path);
// index
$sitemap->addItem('/');
// item
$sql = " select it_id, it_update_time from `{$g5['g5_shop_item_table']}` where it_use = '1' and it_soldout = '0' ";
$result = sql_query($sql);
for ($i = 0; $row = sql_fetch_array($result); $i++) {
if (!$row['it_id'])
continue;
$sitemap->addItem('/shop/item.php?it_id='.$row['it_id'], '1.0', 'daily', substr($row['it_update_time'], 0, 10));
}
// sitemap create
$sitemap->createSitemapIndex(SITE_URL.'/sitemap/', 'Today');
위 코드를 실행하는 쉘스크립트 코드는 아래와 같다.
#!/bin/sh
DIRECTORY=$(cd `dirname $0` && pwd)
cd "${DIRECTORY}"
sudo -u www-data php sitemap.php "$1"
위 쉘스크립트 실행은 아래와 같이 한다.
$ ./sitemap.sh example.com
쉘 상에서는 G5_URL 등의 상수가 제대로 정의되지 않기 때문에 사용할 수 있어 sh 파일 실행 때 도메인을 지정하는 방법으로 구현했다. 예제 코드와 Class 파일은 첨부된 압축파일에 포함되어 있다.
crotntab 에 등록할 때는 아래와 같이 하면 된다.
# sitemap
1 5 * * * /home/example/www/sitemap.sh example.com
사이트맵 url 은 http://example.com/sitemap/sitemap-index.xml
이다.