LoginSignup
1
0

More than 5 years have passed since last update.

Movable Typeで関連記事を表示するプラグイン「SimilarEntries」をランダム表示にする

Last updated at Posted at 2017-09-28

「SimilarEntries」は、カテゴリー・カスタムフィールド・タグなどが一致している記事を自動表示するMovable Type用プラグインです。

こちらの投稿で解説したとおり、関連記事の表示結果は固定順となります。
https://qiita.com/webbingstudio@github/items/588632a5f0bab9cee9b9
しかし、関連記事を導入する背景(サイト内の回遊率を増やす)を考えると、ランダム表示のほうが望ましいです。

この記事では、強制的にランダム表示に変更する方法について説明します。

注意点

かなり暫定的な方法です。このため以下のリスクがあり、公開後に関与できないサイトでは導入をおすすめできないことを、あらかじめご了承ください。

  • すべての表示結果がランダム表示となります。
  • 表示結果の件数がlimitで指定した数値より少ないとランダムになりません(要検証)。
  • プラグインのコアファイルを差し替えるため、バージョンアップ時に、該当ファイルの修正が都度必要となります。

修正方法

以下のディレクトリにある、SimilarEntries.jsをエディタで開いてください。

Movable Typeをインストールしたディレクトリ/mt-static/plugins/SimilarEntries/js/SimilarEntries.js

30行目から60行目に「array.sort」を行っている箇所があるので、コメントアウトで無効化してください。

SimilarEntries_sort.js
array.sort(function(obj1, obj2){
    for (var i = 0, l = sortCondition.length; i < l; i++) {
        var key    = sortCondition[i]['key'];
・・・
        return 0;
    }
});

その箇所に、以下のコードを挿入して上書き保存してください。
関連データが入っている配列を昇順ソートではなく、シャッフルするようになります。

SimilarEntries_shuffle.js
var shuffle = function(arr) {    
    var n = arr.length;
    var temp, i;

    while (n) {
        i = Math.floor(Math.random() * n--);
        temp = arr[n];
        arr[n] = arr[i];
        arr[i] = temp;
    }
    return arr;
};
array = shuffle(array);

参考

配列をシャッフルするロジック
http://javascript.step-learn.com/contents/J061-array-shuffle.html

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0