hexo-theme-fluid icon indicating copy to clipboard operation
hexo-theme-fluid copied to clipboard

友链随机排序

Open Sukablich opened this issue 3 years ago • 5 comments

也不会写代码,只能希望大佬添加这个功能了🙃

Sukablich avatar Jul 11 '22 15:07 Sukablich

在layout文件夹中的link.ejs文件中添加以下代码 function randomsort(a, b) { return Math.random()>.5 ? -1 : 1; //用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1 } theme.links.itemsUniversity.sort(randomsort); 这里的‘itemsUniversity’改为你主题中的组名(应该是items开头的)

目前这个代码只能在hexo -d之后随机一次,多次刷新网页还没有实现

Nuts-sugar avatar Jul 21 '22 09:07 Nuts-sugar

在layout文件夹中的link.ejs文件中添加以下代码 function randomsort(a, b) { return Math.random()>.5 ? -1 : 1; //用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1 } theme.links.itemsUniversity.sort(randomsort); 这里的‘itemsUniversity’改为你主题中的组名(应该是items开头的)

目前这个代码只能在hexo -d之后随机一次,多次刷新网页还没有实现

是个实现方法,也可以通过 hexo.inject 实现,不需要修改源文件。另外因为是静态生成,所以只能在生成的时候随机,想动态随机可以通过 JS

zkqiang avatar Jul 21 '22 09:07 zkqiang

在layout文件夹中的link.ejs文件中添加以下代码 function randomsort(a, b) { return Math.random()>.5 ? -1 : 1; //用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1 } theme.links.itemsUniversity.sort(randomsort); 这里的‘itemsUniversity’改为你主题中的组名(应该是items开头的) 目前这个代码只能在hexo -d之后随机一次,多次刷新网页还没有实现

是个实现方法,也可以通过 hexo.inject 实现,不需要修改源文件。另外因为是静态生成,所以只能在生成的时候随机,想动态随机可以通过 JS

求教动态随机😂

mcxiaolan avatar Jul 21 '22 10:07 mcxiaolan

求教动态随机😂

可以等其他人提供代码,这种功能不会添加到 Fluid 中的

zkqiang avatar Jul 21 '22 10:07 zkqiang

以下代码可以实现页面刷新时随机排列友链,示例网址https://xiyu.pro/links/ ,如果你的源码存在inject.js,请添加以下内容

injects.linksComments.raw('randomLinks', '<script> let parentElement = document.querySelector(".links"); let childElements = Array.from(parentElement.querySelectorAll(".card"));childElements.sort(function() {return 0.5 - Math.random();});parentElement.innerHTML = "";childElements.forEach(function(child) {parentElement.appendChild(child);});</script>');

如果不存在,请在“scripts\inject.js”这个路径新增inject.js文件,并在js里添加以下内容

hexo.extend.filter.register('theme_inject', function(injects) {
	injects.linksComments.raw('randomLinks', '<script> let parentElement = document.querySelector(".links"); let childElements = Array.from(parentElement.querySelectorAll(".card"));childElements.sort(function() {return 0.5 - Math.random();});parentElement.innerHTML = "";childElements.forEach(function(child) {parentElement.appendChild(child);});</script>');
});

如果以上内容帮助到你,你可以赞赏本项目负责人,多少随意

image

xiyuvi avatar Dec 15 '23 07:12 xiyuvi