Blogger部落格安裝【延伸閱讀】(related post)功能的過程和心得 ver.2.0

 

目錄

為什麼要重裝【延伸閱讀】

由於之前【延伸閱讀】(related post)的功能沒有安裝的很好,用了一陣子發現大概有3~4成的文章的延伸閱讀出不來,於是一股偏執發作,又另外花時間找了另外一組程式碼來使用,同時也把安裝的過程和程式碼筆記下來作為未來的資料參考。

先快速講一下這組新的【延伸閱讀】widget的程式碼的優缺點,首先是有縮圖,但縮圖有一些模糊 (已處理,credit to 灰鴿,下面的程式碼已調整) ,另外一點就是在手機上看時,不能自動調整到最適合的寬度。

再來就是雖然可以跟 blogger 預設的 contempo 這個版型相容,但未來要再修改html編碼時卻遇到無法存檔的問題,該問題的排除也蠻花時間,所以會另外寫一篇文記錄那些問題如何排除,這篇文章會先集中講怎麼把這組程式碼安裝進來。

一樣先強調,請先備份完後再做修改,避免無法恢復。

前面有提到當時在安裝時有遇到無法存檔的問題,於是為了避免持續碰到問題,有先將主題的程式碼恢復到原始狀態後才開始安裝,所以如果有已經安裝很多其他程式碼的網友看到這篇文章後,也想畫葫蘆改造自己的部落格時,卻發現不相容想放棄安裝時,有先備份才能避免無法恢復的窘境。

完成後的長相

其實拉到最下面就知道長什麼樣子,不過還是截個圖

                                                                                                                                                                   

延伸閱讀
延伸閱讀安裝成果

                                                                                                                                                                

安裝步驟

而這組【延伸閱讀】安裝只有三個步驟,分別在 head, css, 以及 body 三個區塊找程式碼調整

第一步驟: head 區塊

</head>

請先找到 </head> 程式碼,並在這段程式碼之前加入下列編碼:


<link href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet"/> <script src='https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js'></script>


 

第二步驟: css 區塊

]]></b:skin>

請先找到 ]]></b:skin> 程式碼,並在這段程式碼之前加入下列編碼:



.post-related { display: inline-block; background: #fff; padding: 10px; width:100%; } .post-box .heading { margin-bottom: 10px; text-align: center; margin-top: 10px; position: relative; } .post-box .heading:after { content: "" ; position: absolute; top: 100%; left: 50%; margin-left: -11px; width: 21px; height: 1px; margin-top: 2px; background: #b565a7; } .item-related { width: 31.6%; display: block; float: left; margin-right: 10px; height: 100%; } .item-related:last-child { margin: 0!important; } .item-related .link {display: block; margin: -1px; margin-bottom: 0;} .item-related img {margin-left:0px !important; display: block; opacity: 1; width: 100%; height: 200px; object-fit: cover; } .item-related h3 { font-weight: 400; font-size: 14px; line-height: 1.71429; font-family: Muli; text-transform: uppercase; } img.noops-smly { padding: 0 !important; margin-top: -2px !important; width: 19px; display: inline; } @media (max-width: 520px) .item-related { width: 100%!important; }



第三步驟: body 區塊

<data:post.body/>

請先找到 <data:post.body/> 程式碼,並在這段程式碼之前加入下列編碼:


<b:if cond='data:blog.pageType == &quot;item&quot;'> <script id='related-posts' type='text/javascript'> /*<![CDATA[*/ var relatedTitles = new Array(); var relatedTitlesNum = 0; var relatedUrls = new Array(); var thumburl = new Array(); function related_results_labels_thumbs(json) { for (var i = 0; i < json.feed.entry.length; i++) { var entry = json.feed.entry[i]; relatedTitles[relatedTitlesNum] = entry.title.$t; try {thumburl[relatedTitlesNum]=entry.media$thumbnail.url;} catch (error){ s=entry.content.$t;a=s.indexOf("<img");b=s.indexOf("src=\"",a);c=s.indexOf("\"",b+5);d=s.substr(b+5,c-b-5); if((a!=-1)&&(b!=-1)&&(c!=-1)&&(d!="")) {thumburl[relatedTitlesNum]=d;} else {if(typeof(defaultnoimage) !== 'undefined') thumburl[relatedTitlesNum]=defaultnoimage; else thumburl[relatedTitlesNum]="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKfpMp0ruMeRst5T10EP8BFJ1BjpwZjSPiTi8Rd95UmQ04-UEUynBTyqoruAjc6dDKoG0GFCjK-r84aLbzL4Xd95Hi5MzCPCqw_MtpxzZJuupOoOugwIMi8ttAVKlJ03Pd_9At0zTdvEs/s1600/no_pic_available.jpg";} } if(relatedTitles[relatedTitlesNum].length>35) relatedTitles[relatedTitlesNum]=relatedTitles[relatedTitlesNum].substring(0, 35)+"..."; for (var k = 0; k < entry.link.length; k++) { if (entry.link[k].rel == 'alternate') { relatedUrls[relatedTitlesNum] = entry.link[k].href; relatedTitlesNum++; } } } } function removeRelatedDuplicates_thumbs() { var tmp = new Array(0); var tmp2 = new Array(0); var tmp3 = new Array(0); for(var i = 0; i < relatedUrls.length; i++) { if(!contains_thumbs(tmp, relatedUrls[i])) { tmp.length += 1; tmp[tmp.length - 1] = relatedUrls[i]; tmp2.length += 1; tmp3.length += 1; tmp2[tmp2.length - 1] = relatedTitles[i]; tmp3[tmp3.length - 1] = thumburl[i]; } } relatedTitles = tmp2; relatedUrls = tmp; thumburl=tmp3; } function contains_thumbs(a, e) { for(var j = 0; j < a.length; j++) if (a[j]==e) return true; return false; } function printRelatedLabels_thumbs(current) { for(var i = 0; i < relatedUrls.length; i++) { if((relatedUrls[i]==current)||(!relatedTitles[i])) { relatedUrls.splice(i,1); relatedTitles.splice(i,1); thumburl.splice(i,1); i--; } } var r = Math.floor((relatedTitles.length - 1) * Math.random()); var i = 0; while (i < relatedTitles.length && i < 20 && i<maxresults) { tmb = thumburl[r].replace('s72',''); document.write('<div class="item-related"><a href="' + relatedUrls[r] + '" class="link"><img width="150" height="100" src="'+tmb+'"/></a><h3><a href="' + relatedUrls[r] + '">'+relatedTitles[r]+'</a></h3></div>');i++; if (r < relatedTitles.length - 1) { r++; } else { r = 0; } } relatedUrls.splice(0,relatedUrls.length); thumburl.splice(0,thumburl.length); relatedTitles.splice(0,relatedTitles.length); } function removeHtmlTag(strx, chop) { var s = strx.split("<"); for (var i = 0; i < s.length; i++) { if (s[i].indexOf(">") != -1) { s[i] = s[i].substring(s[i].indexOf(">") + 1, s[i].length) } } s = s.join(""); s = s.substring(0, chop - 1); return s } /*]]>*/ </script> <div class='post-related'> <div class='post-box'> <h4 class='heading common-heading'> <i class="fa fa-th-list" aria-hidden="true"></i> Related Posts</h4> </div> <b:loop values='data:post.labels' var='label'> <script expr:src='&quot;/feeds/posts/default/-/&quot; + data:label.name + &quot;?alt=json-in-script&amp;callback=related_results_labels_thumbs&amp;max-results=6&quot;' type='text/javascript'/> </b:loop> <script type='text/javascript'> var defaultnoimage=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhasC2OZ9iJNAp2afP4pqoGu33KI63z64S_FJmXYL2t3u1H1__ElkPIEsVo8eS7UyBHar6fjNHD8eXJE4fHrr_1vC6qXBfRwMTG-Mm3OpJy8X9oilbtotW0-A3ObSMC35ehKqQDY_0zXys/s400/noimage.png&quot;; var maxresults=6; // Number Of Posts removeRelatedDuplicates_thumbs(); printRelatedLabels_thumbs(&quot;<data:post.url/>&quot;); </script> </div> </b:if>


已知問題 

  • 縮圖會變模糊 ((2022/1/17 更新,感謝 “灰鴿": 提供縮圖模糊的解套,上面編碼已調整)
  • 無法儲存: 調整過程中,可能會遇到 “The Widget Settings In Widget With Id AdSense Is Not Valid” 的錯誤提示,造成無法儲存 (2022/1/17 新解法,可以到版面先關閉,再進行處理)
  • 手機版型在看【延伸閱讀】的推薦文章時,可能無法滿版面
  • 手機版型的圖片縮圖可能會被拉長
  • 由於是恢復原始主題安裝,因此許多的設定要重新設定,尤其是adsense的部分

  

參考網站

 https://danteizm.blogspot.com/2020/04/blogger-related-posts-widget.html

2022/1/17 更新,感謝 “灰鴿”, 提供縮圖模糊無法處理的方式

相關閱讀

留言

liker coins

這個網誌中的熱門文章

汽車過戶費用,證件和流程

iRent 汽車加油要錢嗎?常見 QA一次告訴你

【網路轉貼】台灣的各大學特色

Irent共享機車解開限速實測和感想

新北市youbike服務中心怎麼去交10元欠費

快車肉乾不算推薦的介紹

捷運捷運, 總有天等到你