feat: implement random selection of sidebar navigation links on each load
This commit is contained in:
1 parent
e50e2ea6ea
commit
4cfc2585cd
1 file changed
+12
-2
+12
-2
@@ -153,9 +153,15 @@
|
|||||||
})();
|
})();
|
||||||
|
|
||||||
/* --------------------------------------------------------
|
/* --------------------------------------------------------
|
||||||
Randomise the order of the navigation / pages list on each load
|
Sidebar nav: show a random selection of links on each load.
|
||||||
|
The plugin renders the full list (set its "amount" high); we shuffle it
|
||||||
|
and reveal only SHOW_COUNT items — so it rotates through ALL articles
|
||||||
|
while keeping the sidebar short. All links stay in the DOM (good for
|
||||||
|
internal linking/crawl); the extras are just visually hidden.
|
||||||
-------------------------------------------------------- */
|
-------------------------------------------------------- */
|
||||||
(function () {
|
(function () {
|
||||||
|
var SHOW_COUNT = 3; // how many random links to display; change to taste
|
||||||
|
|
||||||
function shuffle(arr) {
|
function shuffle(arr) {
|
||||||
for (var i = arr.length - 1; i > 0; i--) {
|
for (var i = arr.length - 1; i > 0; i--) {
|
||||||
var j = Math.floor(Math.random() * (i + 1));
|
var j = Math.floor(Math.random() * (i + 1));
|
||||||
@@ -168,7 +174,11 @@
|
|||||||
var items = Array.prototype.filter.call(ul.children, function (el) {
|
var items = Array.prototype.filter.call(ul.children, function (el) {
|
||||||
return el.tagName === 'LI';
|
return el.tagName === 'LI';
|
||||||
});
|
});
|
||||||
shuffle(items).forEach(function (li) { ul.appendChild(li); });
|
shuffle(items);
|
||||||
|
items.forEach(function (li, i) {
|
||||||
|
ul.appendChild(li); // apply shuffled order
|
||||||
|
li.style.display = (i < SHOW_COUNT) ? '' : 'none'; // reveal only the first N
|
||||||
|
});
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user