PHP でブログに関連記事機能を追加する
「Web 開発」に関連する記事一覧


PHP でブログに関連記事機能を追加する

2017/12/03 17:30
PHP ブログ開発 

このブログ、昔 sqlite と PHP で作ってから、そのままだったのですが、久しぶりに関連記事機能を追加してみました。(個別の記事ページだけに追加)

本当は記事同士の関連度を記事内容から判定して、関連度上位の記事一覧を表示するのがいいのですが、とりあえず以下のような感じで簡易的に実装しました。

  • sqlite データベースに記事ごとのタグを手動で登録
  • 最新の記事から順番にタグがひとつでも一致する記事を検索して 5 つを表示

本当はオフラインでこの辺を事前にやっておいて、html 作っておくのがいいんですが、そこまでやると大変そうだったので、とりあえず毎度構築する感じになっているので、少しブログ重いかもしれません..

しばらくはこれで運用しつつ、また気が向いたら改善しようと思います。

あまり参考にならないと思いますが、一応 PHP の関連記事作成部分だけ貼っておきます。

関連記事の作成

private function areRelatedEntry($entry0, $entry1)
{
    foreach ($entry0->tagList as $tag0)
    {
        foreach ($entry1->tagList as $tag1)
        {
            if ($tag0 == $tag1)
            {
                return true;
            }
        }
    }
    return false;
}

private function createRelatedArticles()
{
    $maxRelatedEntryCount = 5;
    for ($i=$this->size-1; $i >= 0; --$i)
    {
        $entry0 = $this->data[$i];
        if (count($entry0->tagList) == 0)
        {
            continue;
        }

        for ($j=$i - 1; $j >= 0; --$j)
        {
            $entry1 = $this->data[$j];
            if (count($entry1->tagList) == 0)
            {
                continue;
            }
            
            if ($this->areRelatedEntry($entry0, $entry1))
            {
                if (count($entry0->relatedEntries) < $maxRelatedEntryCount)
                {
                    array_push($entry0->relatedEntries, $entry1);
                }
                if (count($entry1->relatedEntries) < $maxRelatedEntryCount)
                {
                    array_push($entry1->relatedEntries, $entry0);
                }
            }
        }
    }
}

関連記事の html タグ作成

public function getRelatedEntriesTag()
{
    $tags = '
'; $tags .= '

関連記事

'; return $tags; }


    このエントリーをはてなブックマークに追加  

にほんブログ村 デザインブログ グラフィックアートへ

0.0148 sec

Copyright(C)2006-2018 wsp All Rights Reserved