- Timestamp:
- 2010/03/11 10:35:11 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tmp/version-2_5-test/data/class/pages/LC_Page_Sitemap.php
r16582 r18609 60 60 var $staticURL; 61 61 62 63 /** ページデータ */64 var $arrPageData;65 66 62 /** ページリスト */ 67 63 var $arrPageList; … … 78 74 function init() { 79 75 parent::init(); 80 $this->staticURL = array(SITE_URL, MOBILE_SITE_URL, SITE_URL . "rss/index.php"); 76 77 $this->staticURL = array(); 78 79 $this->staticURL[] = SITE_URL . 'rss/' . DIR_INDEX_URL; 80 if (USE_MOBILE !== false) { 81 $this->staticURL[] = MOBILE_SITE_URL; 82 } 81 83 } 82 84 … … 104 106 print("<?xml version='1.0' encoding='UTF-8'?>\n"); 105 107 print("<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'>\n"); 106 107 // 静的なページを処理108 foreach($this->staticURL as $url) {109 $this->createSitemap($url, '', 'daily', 1.0);110 }111 108 112 109 // TOPページを処理 … … 116 113 'daily', 1.0); 117 114 115 // 静的なページを処理 116 foreach ($this->staticURL as $url) { 117 $this->createSitemap($url, '', 'daily', 1.0); 118 } 119 118 120 // 編集可能ページを処理 119 121 $editablePages = $this->getEditablePage($this->arrPageList); 120 foreach ($editablePages as $editablePage) {122 foreach ($editablePages as $editablePage) { 121 123 $this->createSitemap($editablePage['url'], 122 124 $this->date2W3CDatetime($editablePage['update_date'])); … … 125 127 // 商品一覧ページを処理 126 128 $products = $this->getAllProducts(); 127 foreach ($products as $product) {129 foreach ($products as $product) { 128 130 $this->createSitemap($product['url'], '', 'daily'); 129 }130 $mobileProducts = $this->getAllProducts(true);131 foreach($mobileProducts as $mobileProduct) {132 $this->createSitemap($mobileProduct['url'], '', 'daily');133 131 } 134 132 135 133 // 商品詳細ページを処理 136 134 $details = $this->getAllDetail(); 137 foreach ($details as $detail) {135 foreach ($details as $detail) { 138 136 $this->createSitemap($detail['url'], 139 137 $this->date2W3CDatetime($detail['update_date'])); 140 }141 $mobileDetails = $this->getAllDetail(true);142 foreach($mobileDetails as $mobileDetail) {143 $this->createSitemap($mobileDetail['url'],144 $this->date2W3CDatetime($mobileDetail['update_date']));145 138 } 146 139 … … 192 185 function getTopPage($pageData) { 193 186 $arrRet = array(); 194 foreach ($pageData as $page) {187 foreach ($pageData as $page) { 195 188 if ($page['page_id'] == "1") { 196 $page['url'] = SITE_URL . $page['url'];197 189 $arrRet[0] = $page; 198 190 return $arrRet; … … 209 201 function getEditablePage($pageData) { 210 202 $arrRet = array(); 211 $i = 0; 212 foreach($pageData as $page) { 203 foreach ($pageData as $page) { 213 204 if ($page['page_id'] > 4) { 214 $arrRet[$i] = $page; 215 $i++; 205 $arrRet[] = $page; 216 206 } 217 207 } … … 222 212 * すべての商品一覧ページを取得する. 223 213 * 224 * @param boolean $isMobile モバイルページを取得する場合 true225 214 * @return array 検索エンジンからアクセス可能な商品一覧ページの情報 226 215 */ 227 function getAllProducts($isMobile = false) { 216 function getAllProducts() { 217 218 // XXX: 商品登録の無いカテゴリーは除外する方が良い気もする 228 219 $conn = new SC_DBConn(); 229 220 $sql = "SELECT category_id FROM dtb_category WHERE del_flg = 0"; 230 221 $result = $conn->getAll($sql); 231 222 232 $mobile = "";233 if ($isMobile) {234 $mobile = "mobile/";235 }236 237 223 $arrRet = array(); 238 for ($i = 0; $i < count($result); $i++) {224 foreach ($result as $row) { 239 225 // :TODO: カテゴリの最終更新日を取得できるようにする 240 $page = array("url" => SITE_URL . sprintf("%sproducts/list.php?category_id=%d", $mobile, $result[$i]['category_id'])); 241 $arrRet[$i] = $page; 226 227 $page["url"] = SITE_URL . 'products/list.php?category_id=' . $row['category_id']; 228 $arrRet[] = $page; 229 230 // モバイルサイト 231 if (USE_MOBILE !== false) { 232 $page["url"] = MOBILE_SITE_URL . 'products/list.php?category_id=' . $row['category_id']; 233 $arrRet[] = $page; 234 } 242 235 } 243 236 return $arrRet; … … 247 240 * すべての商品詳細ページを取得する. 248 241 * 249 * @param boolean $isMobile モバイルページを取得する場合 true250 242 * @return array 検索エンジンからアクセス可能な商品詳細ページの情報 251 243 */ 252 function getAllDetail( $isMobile = false) {244 function getAllDetail() { 253 245 $conn = new SC_DBConn(); 254 246 $sql = "SELECT product_id, update_date FROM dtb_products WHERE del_flg = 0 AND status = 1"; 255 247 $result = $conn->getAll($sql); 256 248 257 $mobile = "";258 if ($isMobile) {259 $mobile = "mobile/";260 }261 262 249 $arrRet = array(); 263 for ($i = 0; $i < count($result); $i++) { 264 $page = array("url" => SITE_URL. sprintf("%sproducts/detail.php?product_id=%d", $mobile, $result[$i]['product_id']), 265 "update_date" => $result[$i]['update_date']); 266 $arrRet[$i] = $page; 250 foreach ($result as $row) { 251 252 $page["update_date"] = $row['update_date']; 253 254 $page["url"] = SITE_URL . substr(DETAIL_P_HTML, strlen(URL_DIR)) . $row['product_id']; 255 $arrRet[] = $page; 256 257 // モバイルサイト 258 if (USE_MOBILE !== false) { 259 $page["url"] = SITE_URL . substr(MOBILE_DETAIL_P_HTML, strlen(URL_DIR)) . $row['product_id']; 260 $arrRet[] = $page; 261 } 267 262 } 268 263 return $arrRet; … … 278 273 */ 279 274 function getPageData($where = '', $arrVal = ''){ 280 $objDBConn = new SC_DbConn; // DB操作オブジェクト281 $sql = ""; // データ取得SQL生成用282 $arrRet = array(); // データ取得用275 $objDBConn = new SC_DbConn; // DB操作オブジェクト 276 $sql = ""; // データ取得SQL生成用 277 $arrRet = array(); // データ取得用 283 278 284 279 // SQL生成(url と update_date 以外は不要?) 285 280 $sql .= " SELECT"; 286 $sql .= " page_id"; // ページID287 $sql .= " ,page_name"; // 名称288 $sql .= " ,url"; // URL289 $sql .= " ,php_dir"; // php保存先ディレクトリ290 $sql .= " ,tpl_dir"; // tpl保存先ディdレクトリ291 $sql .= " ,filename"; // ファイル名称292 $sql .= " ,header_chk "; // ヘッダー使用FLG293 $sql .= " ,footer_chk "; // フッター使用FLG294 $sql .= " ,author"; // authorタグ295 $sql .= " ,description"; // descriptionタグ296 $sql .= " ,keyword"; // keywordタグ297 $sql .= " ,update_url"; // 更新URL298 $sql .= " ,create_date"; // データ作成日299 $sql .= " ,update_date"; // データ更新日281 $sql .= " page_id"; // ページID 282 $sql .= " ,page_name"; // 名称 283 $sql .= " ,url"; // URL 284 $sql .= " ,php_dir"; // php保存先ディレクトリ 285 $sql .= " ,tpl_dir"; // tpl保存先ディdレクトリ 286 $sql .= " ,filename"; // ファイル名称 287 $sql .= " ,header_chk "; // ヘッダー使用FLG 288 $sql .= " ,footer_chk "; // フッター使用FLG 289 $sql .= " ,author"; // authorタグ 290 $sql .= " ,description"; // descriptionタグ 291 $sql .= " ,keyword"; // keywordタグ 292 $sql .= " ,update_url"; // 更新URL 293 $sql .= " ,create_date"; // データ作成日 294 $sql .= " ,update_date"; // データ更新日 300 295 $sql .= " FROM "; 301 296 $sql .= " dtb_pagelayout"; … … 306 301 } 307 302 308 $sql .= " ORDER BY page_id"; 309 310 return $objDBConn->getAll($sql, $arrVal); 303 $sql .= " ORDER BY page_id"; 304 305 $pageData = $objDBConn->getAll($sql, $arrVal); 306 307 // URL にプロトコルの記載が無い場合、SITE_URL を前置する。 308 foreach (array_keys($pageData) as $key) { 309 $page =& $pageData[$key]; 310 if (!preg_match('|^https?://|i', $page['url'])) { 311 $page['url'] = SITE_URL . $page['url']; 312 } 313 $page['url'] = preg_replace('|/' . preg_quote(DIR_INDEX_FILE) . '$|', '/' . DIR_INDEX_URL, $page['url']); 314 } 315 unset($page); 316 317 return $pageData; 311 318 } 312 319
Note: See TracChangeset
for help on using the changeset viewer.
