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

在主流都是使用 wordpress 寫部落格的時代,blogger 的開發團隊似乎更注重在整體部落格的穩定和閱讀體驗上,導致各項小插件發展十分遲緩,一個部落格該有的“延伸閱讀”的文章閱讀功能也一直沒有導入,於是只能逼不想離開 blogger 的人,去找相對應的修改方式來處理,對,那個人就是我,幸好還是不寂寞,網路上還能找到相對的文章介紹。

以下就對這個部落格導入“相關文章”、“延伸閱讀”,aka "related post"功能的過程做筆記,未來有需要時可以拿出來檢視,當然,如果你也跟我一樣有這個需求,也歡迎你參考。

強烈建議,如果有興趣測試的朋友,要記得先備份再進行修改。

目錄
原始使用主題
完成效果
修改步驟
已知問題

原始使用主題: 

contempo light

完成效果:

^^^^^^完成後的效果^^^^^^

修改步驟

  • /head前面加 CSS碼和程式碼
  • CSS碼
<style>
#related-posts{
    float:center;
    text-transform:none;
    height:100%;
    padding-top:20px;
    padding-left:5px;
    font-size:15px;
    border-top:1px solid #ddd;
    margin-top:25px
}
#related-posts h2{
    font-size:25px;
    text-transform:none;
    letter-spacing:0em;
    color:#555;
    font-family:Georgia,sans-serif;
    margin-bottom:.7em;
    margin-top:0em;
    padding-top:0em
}
#related-posts a{
    font-family:Georgia,serif;
    text-align:center;
    border-right:1px dotted #DDD;
    color:#2361A1;
    padding:10px 10px 0 10px!important;
    min-height:250px
}
#related-posts a:hover{
    background-color:#E5E5E5
}
</style>
  • 和程式碼
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<script type='text/javascript'>
/*<![CDATA[*/
var post_thumbnail_width = 144;
var post_thumbnail_height = 96;
var max_related_entries = 6;

function escapeRegExp(string){return string.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function replaceAll(str,term,replacement){return str.replace(new RegExp(escapeRegExp(term),"g"),replacement)}function display_related_posts(json_feed){for(var defaultnoimage="
s://i.ibb.co/yS6JvBh/no-image.jpg",post_titles=new Array,title_num=0,post_urls=new Array,post_thumbnail_url=new Array,relatedpoststitle=(window.location.href,"You might also like:"),border_color="#DDDDDD",i=0;i<json_feed.feed.entry.length;i++){var feed_entry=json_feed.feed.entry[i];post_titles[title_num]=feed_entry.title.$t;try{post_thumbnail_url[title_num]=feed_entry.media$thumbnail.url}catch(error){s=feed_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),-1!=a&&-1!=b&&-1!=c&&""!=d?post_thumbnail_url[title_num]=d:"undefined"!=typeof defaultnoimage?post_thumbnail_url[title_num]=defaultnoimage:post_thumbnail_url[title_num]="https://i.ibb.co/yS6JvBh/no-image.jpg"}for(var k=0;k<feed_entry.link.length;k++)"alternate"==feed_entry.link[k].rel&&(post_urls[title_num]=feed_entry.link[k].href,title_num++)}var random_entry=Math.floor((post_titles.length-1)*Math.random()),iteration=0;if(post_titles.length>0){var rp_heading=document.createElement("h2"),textnode=document.createTextNode(relatedpoststitle);rp_heading.appendChild(textnode),document.getElementById("related-posts").appendChild(rp_heading);var rp_container=document.createElement("div");rp_container.setAttribute("style","clear: both;"),rp_container.setAttribute("id","rp-container"),document.getElementById("related-posts").appendChild(rp_container)}for(;iteration<post_titles.length&&20>iteration&&max_related_entries>iteration;)if(post_urls[random_entry]!=currentURL){var rp_anchor=document.createElement("a");0!=iteration?rp_anchor.setAttribute("style","text-decoration:none;padding:10px;float:left;border-left: none "+border_color+";"):rp_anchor.setAttribute("style","text-decoration:none;padding:10px;float:left;"),rp_anchor.setAttribute("id","rp-anchor-"+iteration),rp_anchor.setAttribute("href",post_urls[random_entry]),document.getElementById("rp-container").appendChild(rp_anchor);var rp_img=document.createElement("img");rp_img.setAttribute("style","width:"+post_thumbnail_width+"px;height:"+post_thumbnail_height+"px; border:1px solid #CCCCCC;"),rp_img.setAttribute("id","rp-img-"+iteration);var pin=String(post_thumbnail_url[random_entry].match(/\/s72-c\//));post_thumbnail_url[random_entry]=replaceAll(post_thumbnail_url[random_entry],pin,"/w"+post_thumbnail_width+"-h"+post_thumbnail_height+"-p/"),rp_img.setAttribute("src",post_thumbnail_url[random_entry]),rp_img.setAttribute("alt","Matched post excerpt thumbnail in the post footer."),document.getElementById("rp-anchor-"+iteration).appendChild(rp_img);var rp_para=document.createElement("div");rp_para.setAttribute("style","width:"+post_thumbnail_width+"px; height:"+post_thumbnail_height+"px;border: 0pt none ; margin: auto; padding-top: 18px; line-height:1.6;"),rp_para.setAttribute("id","rp-para-"+iteration);var textnode=document.createTextNode(post_titles[random_entry]);rp_para.appendChild(textnode),document.getElementById("rp-anchor-"+iteration).appendChild(rp_para),iteration++,random_entry<post_titles.length-1?random_entry++:random_entry=0}else iteration++,random_entry<post_titles.length-1?random_entry++:random_entry=0;post_urls.splice(0,post_urls.length),post_thumbnail_url.splice(0,post_thumbnail_url.length),post_titles.splice(0,post_titles.length)}
/*]]>*/
</script>
</b:if> 
    • 程式碼有 3個 設定值以及一個敘述,建議依個人需求修改
      • 縮圖寬度: post_thumbnail_width 
          • 預設值是 144
          • 目前部落格沒調整
          • 在6吋的手機上一行可以出現2個縮圖
      • 縮圖高度: post_thumbnail_height
          • 預設值是 96
          • 目前部落格沒調整
      • 最大相關文章數: max_related_entries
          • 預設值是 6
          • 最多一次出現6篇文章
          • 測試了幾篇,發現很難超過5篇,讓出現的縮圖可以對稱
      • 敘述修改: 
        • 程式碼中可以搜尋"You might also like this",找到後,把雙引號中間的字改成中文,便可以呈現中文效果
        • 目前是用 或許你也可以看一下,代替 You might also like this
  • 在主題中找對應變數後,根據變數數量,加入特定程式碼
    • 先搜尋 class=‘post-footer
    • 先確認有幾個,個人的部落格程式中有5個
    • 5個 class='post-footer 下方都加這一段 
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<div id='related-posts'>
<b:loop index='labelcount' values='data:post.labels' var='label'>
<script>
  var currentURL = &#39;<data:blog.url/>&#39;;
</script>
<b:if cond='data:labelcount &lt; 1'>
<script async='async' expr:src='&quot;/feeds/posts/default/-/&quot; + data:label.name + &quot;?alt=json-in-script&amp;callback=display_related_posts&quot;' type='text/javascript'/></b:if></b:loop>
</div><div style='clear:both'/>
</b:if> 

已知問題 

  • 跟精選文章的 widget會衝突
  • 修改後,由於更動到原始網頁設計,在主題頁無法預覽 contempo light 的縮圖
  • 抓標籤的邏輯推測是在各文章的標籤比對,只要有一個相同,便會隨機編入  
  • 也會有文章下面跑不出來相關閱讀的功能,原因暫時不明
  • 正常出現相關文章的比例大概是7成,此功能大致可以滿足一般使用者

參考網站

https://shofan.blogspot.com/2019/09/blogger-bloggerreleated-post.html

https://www.freshtechtips.com/2019/05/related-posts-widget-for-blogger-blogspot.html

相關閱讀

留言

liker coins

這個網誌中的熱門文章

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

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

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

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

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

快車肉乾不算推薦的介紹

捷運捷運, 總有天等到你