【128日目】人気記事へのリンクを作成したい-4
Posted: Last Update:
数日前から「人気記事へのリンクをトップページなどに追加する」という課題に挑戦しています。アクセス数を記載しているファイルから情報を取り出すPHPは作成できたので、今日はリンクを作成していきたいと思います!
一昨日までの成果
昨日は一日休んでしまいました。最終の作業が一昨日です。その時に書いたのがこちらのPHP。アクセス数順にURLを並べ替えています。
$str = file("$mypath/top/access.txt");
foreach($str as $value){
$devide = strpos($value, " ");
$length = strlen($value);
$url = substr($value, 0, $devide);
$count = str_replace(" count:", "", substr($value, $devide, $length));
$link[] = [intval($count), $url];
}
arsort($link);
foreach($link as $value){
echo $value[1]." count:".$value[0]."<br>";
}
?>
今はテストのために「echo」でURLとアクセス数を仮面に表示させています。その結果がこちら。カウント順に並んでいるのが分かります。
今日はトップページに「人気記事」のリンクを入れたい
さて、リンクはトップページと、右側(スマホだと画面下)のサイドバーにリンクを入れていきたいと考えています。
今日はまずトップページに「人気記事」のリンクを入れる作業をやってみたいと思います。作業の順番を考えてみましょう!
- URLをファイル名に置き換える
- 既にあるひな形を使って画像入りのリンクを作成する
うん、考えるまでもなかったですね…。とりあえず分けて作業をしたい2つに別れました。
URLをファイル名に置き換える
まずは「URLをファイル名に置き換える」作業です。以前に置き換えや文字列の対方はやったことがあるので、PHPをサクサク書くぞー!
上のPHPに続いて、下記のHTMLとPHPを書きました。URLをファイルのパス名に置き換えています。
foreach($link as $value){
$str = str_replace('article', 'articles', $value[1]);
$str = $str.".txt";
echo $str."</br>";
}
無事に書き出せました。
画像入りのリンクを作成する
では、画像入りのリンクを作っていきましょう。ここはもともとあるPHPからほぼ使いまわせるので、またサクサク進みそうです!
…と言いつつ、日付の設定に苦労しました!とりあえず、完成画面(テスト環境)がこちら!ちゃんと人気順に並んでいます!すごい!
PHPとHTMLはこんな感じになっています!
<div id="latestparent">
$i = 1;
foreach($link as $value){
$str = str_replace('article', 'articles', $value[1]);
$str = "$mypath/$str.txt";
$date = new datetime(str_replace('/article/', '', $value[1]));
if (is_file($str)) {
require($str);
echo '
<a href="', $myurl."/".$value[1] , '">
<div id="latestchild">
<div id="latestcimg"><img src="',$articletimg,'" alt="',$date->format('Y.m.d'),'記事のイメージ画像"></div>
<div id="latestctitle">
<b> ',$articletitle, '</b>
</div>
<div id="latestcdescription">',$articledescription, '</div>
<div id="indexlinktime">',$date->format('Y.m.d') ,'</div>
</div>
</a>';
$i++;
}
if($i>3){break;}
}
</div>
今日はここまで
ここで時間が来てしまいました!できれば本番環境にあげたかったのですが、時間がないので今日はやめておきます。
明日は、サイドバーに人気記事のリンクを入れていきたいです。今日作ったものと、既存のリンクの設定を使いまわせるので、簡単に終わるでしょう。そうしたら、いよいよ本番環境に移します!
楽しみです。では、また明日!