现在搞博客不搞个Memos好像就落伍了,我在《四种方式,优雅的展示您的Memos!》里详细地介绍过如何展示Memos。我的博客顶部菜单“哔哔点啥”就是调取的https://memos.laozhang.org数据。
在这里隆重的介绍下空白koobai大佬的博客:https://koobai.com/,他的主题做的非常不错,其中Memos页面非常的Nice。空白大佬非常的无私,早就将他的主题源码分享出来,前段时间就是用了他之前的Memos页面源码,但是那个时候版本还比较低,昨天在他的帮助下,升级到了最新版。这个版本可以说是全功能版了,增加了搜索、标签筛选等功能,极大了增强了用户体验。用了这个新版本,可以完全脱离Memos的后台了。
那现在就来介绍下如何从空白koobai大佬的主题源码中巧搬Memes页面源码的。https://github.com/koobai/blog这里是空白koobai大佬的主题源码,我们打包下载。把如下图中的几个文件单独找出来放新建个Memos文件夹的Js里,便于管理。
再找出下图中图片文件,放在img文件夹里。
1.在Wordpress或是Typecho程序中新建独立页面,插入以下代码
<div class="memos-header"> <div class="intro"> </div> <div class="pagetitle">张sir随笔坚持了三年,每天发布一篇内容,字数不起过200字,主要是记录下点滴,发点牢骚。自前段时间折腾起Memos,并把Memos合并到老张博客的独立页面成了“哔哔点啥”,又集成了评论功能。“哔哔点啥”页面的功能完全和老张随笔重复了。目前一直就在给博客、域名做减少,正好也是利用这个机会。把张sir随笔给停了吧!<span class="bb-load"></span></div> <div id="memos" class="img-hide"></div> </div> <div id="bber"></div> <script src="https://fastly.jsdelivr.net/npm/marked/marked.min.js"></script> <script type="text/javascript"> var bbMemos = { memos : 'https://memos.laozhang.org/', //此处修改成你的Memos网址。 limit : '20', creatorId:'1' , domId: '', } </script> <script src="/memos/js/memos.js"></script> <script src="/memos/js/memos-editor.js"></script> <script src="/memos/js/coco-message.min.js"></script> <script src="/memos/js/view-image.min.js"></script> <script src="/memos/js/moment.min.js"></script> <script src="/memos/js/moment.twitter.min.js"></script> <link rel="stylesheet" href="https://laozhang.org/memos/js/memos.css"> <link href="https://cdn.bootcdn.net/ajax/libs/artalk/2.6.0/ArtalkLite.css" rel="stylesheet"> <script src="https://cdn.bootcdn.net/ajax/libs/artalk/2.6.0/ArtalkLite.js"></script> </script> <script> window.ViewImage && ViewImage.init('.gallery-thumbnail img'); </script>
2.上传我们搬过来的Memos文件夹到你的网站根目录,你可以随意放在任何位置,记得得要修改页面代码里的目录位置即可。
3.修改部分代码
3.1打开Memos.js文件,将里面的Memos网址改为你的。
var bbMemo = { memos: 'https://memos.laozhang.org/',//修改为你的Memos网址 limit: '15', creatorId: '101', domId: '#bber',
3.2修改artalk评论后台地址
//在未展开评论时,默认显示评论数 Artalk.loadCountWidget({ server: 'https://artalk.laozhang.org/',//修改为你的artalk评论后台地址 site: 'memos',//修改为你的Artalk评论系统里站点名称 countEl: '#ArtalkCount' }); }) }
3.3还有一处artalk评论后台地址,修改方法同上
//在未展开评论时,默认显示评论数 Artalk.loadCountWidget({ server: 'https://artalk.laozhang.org/', site: 'memos', countEl: '#ArtalkCount' }); }) }
3.4最后一处artalk评论后台地址,修改方法同上
const artalk = new Artalk({ el: '#memo_' + memo_id, pageKey: '/m/' + memo_id, pageTitle: '', server: 'https://artalk.laozhang.org/',//修改为你的artalk评论地址 site: 'memos',//修改为站点名称 darkMode: 'auto'
3.5找到以下代码代码,修改标签获取地址:
// 显示所有 TAG function showTaglist(){ let bbUrl = 'https://api-memos.laozhang.org/'//修改为你的标签获取地址 let tagListDom = "" fetch(bbUrl).then(res => res.json()).then( resdata =>{ for(let i=0;i < resdata.length;i++){ tagListDom += `<div class="memos-tag-all img-hide" onclick='getTagNow(this)'># ${resdata[i]}</div>` } document.querySelector('#tag-list-all').innerHTML = tagListDomu
关于标签这个功能,非常实用,点击标签后就可以筛选出该标签的所有内容。对于设置方法,我们参照林木木的教程:https://immmmm.com/bb-by-memos/,前提是你在CF上要有域名。
在CF上新建Workers,插入以下代码:
const memos = 'https://memos.laozhang.org/'//修改为你的Memos地址 const openId = '96989db0-xxxxxx'//修改为你的Memos的OpenID async function handleRequest(request) { let url = new URL(request.url) let typeName = url.pathname.substring(1) || '' let fetchUrl = memos+'api/v1/tag?openId='+openId; if(typeName == 'tags'){ fetchUrl = memos+'api/v1/tag?openId='+openId } if(typeName == 'dele'){ let cache = caches.default; cache.delete(request); } const requestHeaders = request.headers.get("Access-Control-Request-Headers"); const requestMethod = request.headers.get("Access-Control-Request-Method"); // 响应预检请求 if (request.method == "OPTIONS") { return new Response('{"Access": "GET"}', { status: 200, headers: { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": requestHeaders ? requestHeaders : "*", "Access-Control-Allow-Methods": requestMethod ? requestMethod : "*", "Access-Control-Expose-Headers": "*", "Access-Control-Max-Age": "86400", "Content-Type": "application/json" } }); } // 处理正式请求 const newRequest = new Request(fetchUrl, request); // 请求头删除来源 newRequest.headers.set("referrer-policy", "no-referrer"); newRequest.headers.delete("Referer"); newRequest.headers.delete("Origin"); // 发起请求 const response = await fetch(newRequest, { cf: { cacheEverything: true } }); const newResponse = new Response(response.body, response); // 处理响应 newResponse.headers.delete("Access-Control-Allow-Credentials"); newResponse.headers.set("Access-Control-Allow-Origin", "*"); newResponse.headers.set("Access-Control-Allow-Headers", requestHeaders ? requestHeaders : "*"); newResponse.headers.set("Access-Control-Allow-Methods", requestMethod ? requestMethod : "*"); newResponse.headers.set('Access-Control-Expose-Headers', '*'); newResponse.headers.set("Access-Control-Max-Age", "86400"); newResponse.headers.set("Content-Type", "application/json"); return newResponse; } addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)); })
在该worders触发器--自定义域里,设置自定义域名,这个可以随你爱好设置,一定要和3.5步骤里地址一致,否则获取不到标签。
4.样式Memos.css修改
到目前为止,基本功能可以实现了,但是样式这块可能和一些博客主题有冲突,这里需要修改一下。特别强调就是,该方面有冲突时再改,不是所有人都需要以下面代码进行修改的。
4.1“查看更多”加载不出问题。
在memos.js文件中,查找到“// animateSummaries();”删除即可。
4.2出现大面积空白问题,
在memos.css中加入以下代码
.artalk.hidden { display: none !important; }
4.3输入OpenID无保存按钮问题,在memos.css文件中,找到下图中代码,修改为红框内容
找到下图代码,添加红框内容
4.4文本框不协调问题,在memos.css中,添加如下代码
.single-content ul li { line-height: 100% !important; margin: 0 !important; }
4.5加载不出内容问题
有部分主题冲突,memos内容一个也加载不出来,这个时候一定要检查下我们在第一步新建的页面里有没有“代码注释”,有的话删掉,是删掉,之后就可以加载出内容了。
经过以上修改,可以完美的与博客整合了。