亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP生成sitemap.xml地圖函數

2024-05-04 23:19:35
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:


<?php

/**
 *    網站地圖更新控制器
 *
 *    @author    Garbin
 *    @usage    none
 */
class SitemapApp extends FrontendApp
{
    function __construct()
    {
        $this->SitemapApp();
    }
    function SitemapApp()
    {
        parent::__construct();
        $this->_google_sitemmap_file = ROOT_PATH . '/data/google_sitemmap.xml';
    }

    function index()
    {
        if (!Conf::get('sitemap_enabled'))
        {
            return;
        }
        $from = empty($_GET['from']) ? 'google' : trim($_GET['from']);
        switch ($from)
        {
            case 'google':
                $this->_output_google_sitemap();
            break;
        }
    }

    /**
     *    輸出Google sitemap
     *
     *    @author    Garbin
     *    @return    void
     */
    function _output_google_sitemap()
    {
        header("Content-type: application/xml");
        echo $this->_get_google_sitemap();
    }

    /**
     *    獲取Google sitemap
     *
     *    @author    Garbin
     *    @return    string
     */
    function _get_google_sitemap()
    {
        $sitemap = "";
        if ($this->_google_sitemap_expired())
        {
            /* 已過期,重新生成 */

            /* 獲取有更新的項目 */
            $updated_items = $this->_get_updated_items($this->_get_google_sitemap_lastupdate());

            /* 重建sitemap */
            $sitemap = $this->_build_google_sitemap($updated_items);

            /* 寫入文件 */
            $this->_write_google_sitemap($sitemap);
        }
        else
        {
            /* 直接返回舊的sitemap */
            $sitemap = file_get_contents($this->_google_sitemmap_file);
        }

        return $sitemap;
    }

    /**
     *    判斷Google sitemap是否過期
     *
     *    @author    Garbin
     *    @return    boolean
     */
    function _google_sitemap_expired()
    {
        if (!is_file($this->_google_sitemmap_file))
        {
            return true;
        }
        $frequency = Conf::get('sitemap_frequency') * 3600;
        $filemtime = $this->_get_google_sitemap_lastupdate();

        return (time() >= $filemtime + $frequency);
    }

    /**
     *    獲取上次更新日期
     *
     *    @author    Garbin
     *    @return    int
     */
    function _get_google_sitemap_lastupdate()
    {
        return is_file($this->_google_sitemmap_file) ? filemtime($this->_google_sitemmap_file) : 0;
    }

    /**
     *    獲取已更新的項目
     *
     *    @author    Garbin
     *    @return    array
     */
    function _get_updated_items($timeline = 0)
    {
        $timeline && $timeline -= date('Z');
        $limit = 5000;
        $result = array();
        /* 更新的店鋪 */
        $model_store =& m('store');
        $updated_store = $model_store->find(array(
            'fields'    => 'store_id, add_time',
            'conditions' => "add_time >= {$timeline} AND state=" . STORE_OPEN,
            'limit'     => "0, {$limit}",
        ));

        if (!empty($updated_store))
        {
            foreach ($updated_store as $_store_id => $_v)
            {
                $result[] = array(
                    'url'       => SITE_URL . '/index.php?app=store&id=' . $_store_id,
                    'lastmod'   => date("Y-m-d", $_v['add_time']),
                    'changefreq'=> 'daily',
                    'priority'  => '1',
                );
            }
        }
        /* 更新的文章 */
        $model_article =& m('article');
        $updated_article = $model_article->find(array(
            'fields'    => 'article_id, add_time',
            'conditions'=> "add_time >= {$timeline} AND if_show=1",
            'limit'     => "0, {$limit}",
        ));
        if (!empty($updated_article))
        {
            foreach ($updated_article as $_article_id => $_v)
            {
                $result[] = array(
                    'url'       => SITE_URL . '/index.php?app=article&act=view&article_id=' . $_article_id,
                    'lastmod'   => date("Y-m-d", $_v['add_time']),
                    'changefreq'=> 'daily',
                    'priority'  => '0.8',
                );
            }
        }

        /* 更新的商品 */
        $model_goods =& m('goods');
        $updated_goods = $model_goods->find(array(
            'fields'        => 'goods_id, last_update',
            'conditions'    => "last_update >= {$timeline} AND if_show=1 AND closed=0",
            'limit'         => "0, {$limit}",
        ));
        if (!empty($updated_goods))
        {
            foreach ($updated_goods as $_goods_id => $_v)
            {
                $result[] = array(
                    'url'       => SITE_URL . '/index.php?app=goods&id=' . $_goods_id,
                    'lastmod'   => date("Y-m-d", $_v['last_update']),
                    'changefreq'=> 'daily',
                    'priority'  => '0.8',
                );
            }
        }

        return $result;
    }

    /**
     *    生成Google sitemap
     *
     *    @author    Garbin
     *    @param     array $items
     *    @return    string
     */
    function _build_google_sitemap($items)
    {
        $sitemap = "<?xml version=/"1.0/" encoding=/"UTF-8/"?>/r/n<urlset xmlns=/"http://www.sitemaps.org/schemas/sitemap/0.9/">/r/n";
        $sitemap .= "    <url>/r/n        <loc>" . htmlentities(SITE_URL, ENT_QUOTES) . "</loc>/r/n        <lastmod>" . date('Y-m-d', gmtime()) . "</lastmod>/r/n        <changefreq>always</changefreq>/r/n        <priority>1</priority>/r/n    </url>";
        if (!empty($items))
        {
            foreach ($items as $item)
            {
                $sitemap .= "/r/n    <url>/r/n        <loc>" . htmlentities($item['url'], ENT_QUOTES) . "</loc>/r/n        <lastmod>{$item['lastmod']}</lastmod>/r/n        <changefreq>{$item['changefreq']}</changefreq>/r/n        <priority>{$item['priority']}</priority>/r/n    </url>";
            }
        }
        $sitemap .= "/r/n</urlset>";

        return $sitemap;
    }

    /**
     *    寫入Google sitemap文件
     *
     *    @author    Garbin
     *    @param     string $sitemap
     *    @return    void
     */
    function _write_google_sitemap($sitemap)
    {
        file_put_contents($this->_google_sitemmap_file, $sitemap);
    }
}

?>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美在线x视频| 欧美精品www| 中日韩美女免费视频网址在线观看| 国产精品视频精品| 日韩在线观看网站| 日韩精品一区二区视频| 欧美精品日韩三级| 欧美整片在线观看| 国产一区二区久久精品| 久久乐国产精品| 久久精品国产综合| 久久精品久久精品亚洲人| 97在线观看免费| 91国偷自产一区二区三区的观看方式| 国产日本欧美一区| 中文字幕国产精品| 中文字幕亚洲欧美在线| 97超碰国产精品女人人人爽| 欧美与黑人午夜性猛交久久久| 亚洲直播在线一区| 日本免费一区二区三区视频观看| 欧美日韩精品中文字幕| 欧美激情a在线| 国产精品久久久久久超碰| 国产日本欧美在线观看| 亚洲tv在线观看| 亚洲一二三在线| 精品久久久久久久大神国产| 理论片在线不卡免费观看| 国产精品露脸av在线| 国产视频久久网| 亚洲片国产一区一级在线观看| 亚洲成人国产精品| 2019国产精品自在线拍国产不卡| 欧美成人一区二区三区电影| 国内精品美女av在线播放| 韩国一区二区电影| 欧美性感美女h网站在线观看免费| 亚洲国产精品成人一区二区| 国语自产精品视频在免费| 欧美孕妇与黑人孕交| 欧美激情va永久在线播放| 欧美激情视频一区二区三区不卡| 国产视频精品自拍| 亚洲欧美一区二区三区久久| 国产精品美女免费视频| 亚洲 日韩 国产第一| 亚洲精品中文字幕女同| 欧美丰满少妇xxxxx| 97视频免费看| 成人黄色中文字幕| 久久艹在线视频| 亚洲国产欧美一区二区三区同亚洲| 中文字幕在线视频日韩| 亚洲欧美国内爽妇网| 欧美精品生活片| 91在线色戒在线| 中文在线资源观看视频网站免费不卡| 久久精品影视伊人网| 日韩精品在线免费播放| 国产精品中文在线| 亚洲人成电影在线播放| 欧美高跟鞋交xxxxxhd| 国产精品永久免费| 久久综合亚洲社区| 57pao成人永久免费视频| 欧美一区亚洲一区| 国内外成人免费激情在线视频| 91成人性视频| 亚洲精品成a人在线观看| 国产精品电影网站| 精品国产31久久久久久| 国产日韩在线看片| 91av成人在线| 九九热r在线视频精品| 日韩av电影中文字幕| 欧美亚洲日本黄色| 欧美人与物videos| 亚洲精品成人久久久| 亚洲人a成www在线影院| 国产亚洲人成网站在线观看| 性欧美办公室18xxxxhd| 色综合久久精品亚洲国产| 欧美人成在线视频| 亚洲一级片在线看| 亚洲www在线观看| 这里只有精品久久| 欧美成人国产va精品日本一级| 精品小视频在线| 人九九综合九九宗合| 欧美与黑人午夜性猛交久久久| 久久久久久亚洲精品中文字幕| 欧美日韩国产在线| 久久久久日韩精品久久久男男| 日韩国产高清污视频在线观看| 91精品视频在线| 不卡av日日日| 青青青国产精品一区二区| 亚洲va久久久噜噜噜久久天堂| 欧美激情中文网| 国产精品成人久久久久| 午夜精品久久久久久久久久久久| 国产精品第8页| 久久久久久亚洲精品不卡| 中文字幕国产精品久久| 91精品国产综合久久香蕉922| 911国产网站尤物在线观看| 国产精品ⅴa在线观看h| 国产午夜精品全部视频在线播放| 日韩在线精品一区| 亚洲国产精品热久久| 国产精品高潮呻吟久久av黑人| 国产美女扒开尿口久久久| 亚洲色图25p| 97**国产露脸精品国产| 成人疯狂猛交xxx| 色悠悠国产精品| 日本高清久久天堂| 国产精品视频在线播放| 中文字幕亚洲色图| 久久人人爽亚洲精品天堂| 亚洲激情自拍图| 成人亲热视频网站| 中文字幕成人在线| 伊人久久大香线蕉av一区二区| 成人a免费视频| 亚洲自拍av在线| 日韩有码片在线观看| www欧美xxxx| 亚洲淫片在线视频| 国产欧美一区二区三区视频| 亚洲精品国产综合久久| 日韩亚洲欧美成人| 成人欧美一区二区三区黑人孕妇| 欧美成人黄色小视频| 国产mv久久久| 欧美激情乱人伦一区| 欧美精品成人在线| 亚洲男人av在线| 国产精品网站大全| 久久露脸国产精品| 91久久国产精品91久久性色| 日韩一二三在线视频播| 亚洲美女av在线| 91九色视频导航| 国产精品99久久久久久白浆小说| 久久精品久久久久久国产 免费| 国产精品女主播| 97精品久久久中文字幕免费| 日本一本a高清免费不卡| 2020久久国产精品| 亚洲成av人乱码色午夜| 久久亚洲精品小早川怜子66| 精品中文字幕在线观看| 久久久久久久久电影| 日韩风俗一区 二区| 亚洲天堂男人天堂女人天堂| 国产精品久久久久久久久久免费| 疯狂蹂躏欧美一区二区精品| 亚洲国产精品人人爽夜夜爽| 亚洲男人天天操| 九色精品美女在线| 日韩精品免费在线视频观看| 国产精品wwww|