サイト制作するときに必ず必要になるのがサイトマップ。これを動的にできないものかと考えて1日かけて作りました。
実際設定項目増やしたので3日ぐらいかかりましたけど。。。
一応自分用として下記のようなプログラム作ったんですけど、応用編として設定できるファイルとプログラムを分けて作成しました。
下記のデモサイトからダウンロードできます。
スポンサーリンク
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | // ファイル一覧取得関数(サイトマップ用) function sitemapGenerator($dir) { // ディレクトリ名取得 $pattern="#\.+\/#"; $dirname = preg_replace($pattern, "", $dir); if (empty($dirname)) { $dirname = '/'; } else { $dirname = '/' . $dirname . '/'; } // パス取得 $path = dirname(__FILE__) ; $url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']); // ディレクトリからすべてのファイルを取得 $files = scandir($dir); // 取得したファイル名を展開 foreach ($files as $file) { // ファイルかどうか確認する if (is_file($path . $dirname . $file)) { $html = file_get_contents($path . $dirname . $file); $html = mb_convert_encoding($html, mb_internal_encoding(), 'UTF-8,SJIS-win,EUC-JP' ); if (preg_match('#<title>(.*?)</title>#i', $html, $matches)) { $title = $matches[1]; $link[] = '<a href="'. $url . $dirname . $file . '">' . $title . '</a>'; } } } return $link; } $links = sitemapGenerator('./');?> <ul> <?php foreach ($links as $link) :?> <li><?php echo $link;?></li> <?php endforeach;?> </ul> |
今回のものは同じフォルダのファイルだけを取得するんですけどダウンロードできるタイプはサイト自体を取得するようにしてあります。
2階層あるものは取得できないですけど普通のサイト作成には活かせるのかなと思います。