「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」を行っている箇所があるので、コメントアウトで無効化してください。
array.sort(function(obj1, obj2){
for (var i = 0, l = sortCondition.length; i < l; i++) {
var key = sortCondition[i]['key'];
・・・
return 0;
}
});
その箇所に、以下のコードを挿入して上書き保存してください。
関連データが入っている配列を昇順ソートではなく、シャッフルするようになります。
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