BLOGGER FTP公開サイトのラベルでの分類方法


使っているBloggerはFTP経由で当店のサーバーにアップしているけど、アーカイブは日付でしかできない。
ラベルでの分類で選択したほうが早く情報を探せるとおもうので、作ってみた。

検索すると、JAVASCRIPTやVPSCRIPT、PERLでやっているのもあったが海外のサイトでの方法で日本語表示にはbase64でエンコードされているのでひとてまかける必要があった・・・ので製作しました。

PHPでラベルのフォルダーに直接ファイル名を取りに行き、日本語ラベル名にエンコードしてjavascriptで書き出しています。

 

<?php
$dir = '/var/-------l/blog.peaks.jp/labels/';#ラベルのパス
$url = 'https://blog.peaks.jp/labels/';
$labellist ="<h2 class='sidebar-title'>".mb_convert_encoding("ラベルリスト", "EUC-JP", "sjis")."</h2><ul class='archive-list'>";

if($handle = opendir($dir)) { #ディレクトリハンドルを獲得
while(false !== $file = readdir($handle)){ #ファイル名獲得
list($filename,$html) = split("\.", $file); #ファイル名と拡張子を分割
if(!$filename){continue;}
$filename = str_replace("__", "/", $filename); #ファイル名にするためbase64で/が__に変更されているのを戻す
$labellist .="<li><a href='$url$file'>";
if (preg_match("/=([A-F0-9]{2})/",$filename)) {
# $labellist .= quoted_printable_decode ($filename); #quoted_printable_decodeでローマ字+日本語に変換
$labellist .= mb_convert_encoding(quoted_printable_decode ($filename), "EUC-JP", "UTF-8") ;#BLOGで設定しているcharsetに合わす場合
}elseif(mb_detect_encoding(base64_decode($filename)) == "UTF-8"){
# $labellist .= base64_decode($filename) ; #encodingがUTF-8ならbase64_decodeで日本語変換
$labellist .= mb_convert_encoding(base64_decode($filename), "EUC-JP", "UTF-8") ; #BLOGで設定しているcharsetに合わす場合
}else{
$labellist .= $filename ; #ローマ字のファイル名はそのまま表示
}
$labellist.="</a></li>";
}
}
closedir($handle); #ディレクトリハンドルを閉じる
$labellist .="</ul>";
header ("Content-Type: text/html; charset=EUC-JP");#javascriptとして表示する
echo "document.write(\"";
echo $labellist;
echo "\");";
?>

って仮にlabel.phpで製作し、テンプレートの好きな位置に
<script type=”text/javascript” src=”http://保存先/label.php”></script>

って書き込み、読み出すと表示されます。このプログはEUC-JPで表示されているからそれに合わせて設定しています。