kamenokoki.com

【128日目】人気記事へのリンクを作成したい-4

Posted:  Last Update:

数日前から「人気記事へのリンクをトップページなどに追加する」という課題に挑戦しています。アクセス数を記載しているファイルから情報を取り出すPHPは作成できたので、今日はリンクを作成していきたいと思います!

一昨日までの成果

昨日は一日休んでしまいました。最終の作業が一昨日です。その時に書いたのがこちらのPHP。アクセス数順にURLを並べ替えています。

<?php
$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をファイルのパス名に置き換えています。

<h3 id="indextitlem">人気記事</h3>
<?php
foreach($link as $value){
$str = str_replace('article', 'articles', $value[1]);
$str = $str.".txt";
echo $str."</br>";
}
?>

無事に書き出せました。

URLをファイル名に置き換える

画像入りのリンクを作成する

では、画像入りのリンクを作っていきましょう。ここはもともとあるPHPからほぼ使いまわせるので、またサクサク進みそうです!

…と言いつつ、日付の設定に苦労しました!とりあえず、完成画面(テスト環境)がこちら!ちゃんと人気順に並んでいます!すごい!

画像入りのリンクを作成する

PHPとHTMLはこんな感じになっています!

<h3 id="indextitlem">人気記事</h3>
<div id="latestparent">
<?php
$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>

今日はここまで

ここで時間が来てしまいました!できれば本番環境にあげたかったのですが、時間がないので今日はやめておきます。

明日は、サイドバーに人気記事のリンクを入れていきたいです。今日作ったものと、既存のリンクの設定を使いまわせるので、簡単に終わるでしょう。そうしたら、いよいよ本番環境に移します!

楽しみです。では、また明日!

記事をシェアする

亀の子に連絡

ランキング参加中!ぽちっとしてね

F2cランキングアイコン 人気ブログランキング ブログランキング・にほんブログ村へ

広告