[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 파일은 첨부된 압축파일에 포함되어 있다.

sitemap.tar.gz

crotntab 에 등록할 때는 아래와 같이 하면 된다.

# sitemap
1 5 * * * /home/example/www/sitemap.sh example.com

사이트맵 url 은 http://example.com/sitemap/sitemap-index.xml 이다.

편리

PHP와 MariaDB, jQuery 등을 사용해 게시판, 쇼핑몰 솔루션을 개발합니다. 그누보드5와 영카트5 개발에 참여 했습니다. Linux와 Nginx는 물론 WordPress, Git 등에도 관심이 많습니다. 자전거 타기 및 사진 촬영을 취미로 하고 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.