如何在 Blogger 文章加延伸閱讀、相關文章?
其實我最近文荒,不知道要寫什麼,剛好有網友留言詢問我的「延伸閱讀」是不是用程式碼自動產生的。老實說還真不是,因為之前查到的方法都是要去修改主題,我個人超討厭直接修改主題的,這樣換主題還要再重弄一次。
所以,我花了點時間研究別人的程式再搭配自己的想法,寫出一個我自己喜歡的。
原理是抓取相同標籤的文章,隨機選 5 篇顯示在文章後面。
步驟基本和之前一樣,新增 HTML/JavaScript 小工具,並貼入程式碼,想知道的可以去看「如何在 Blogger 文章加目錄索引?」或「如何在 Blogger 裡放程式碼?」這兩篇文章內有寫。
這次要貼的程式碼如下:
所以,我花了點時間研究別人的程式再搭配自己的想法,寫出一個我自己喜歡的。
原理是抓取相同標籤的文章,隨機選 5 篇顯示在文章後面。
步驟基本和之前一樣,新增 HTML/JavaScript 小工具,並貼入程式碼,想知道的可以去看「如何在 Blogger 文章加目錄索引?」或「如何在 Blogger 裡放程式碼?」這兩篇文章內有寫。
這次要貼的程式碼如下:
說明:
- <style type="text/css">
- .relative-posts {
- background: #fff;
- margin: 30px 8px;
- padding: 32px;
- line-height: 30px;
- }
- .relative-posts h3 {
- border-bottom: 1px solid rgba(0, 0, 0, 0.12);
- padding-bottom: 15px;
- margin: 0;
- }
- </style>
- <script type="text/javascript">
- $(function () {
- var bloggerUrl = 'https://girlwebdeveloper2.blogspot.com/';
- var relativePosts = {};
- var relativePostCount = 5;
- function displayRealativePosts() {
- var relativePostArray = Object.values(relativePosts);
- var displayPosts = [];
- if (relativePostArray.length > relativePostCount) {
- var displayIndexes = [];
- while (displayIndexes.length < relativePostCount) {
- var index = Math.floor((relativePostArray.length - 1) * Math.random());
- if (!displayIndexes.includes(index)) {
- displayIndexes.push(index);
- displayIndexes.sort();
- }
- }
- for (var i = 0; i < displayIndexes.length; i++) {
- displayPosts.push(relativePostArray[displayIndexes[i]]);
- }
- } else {
- displayPosts = relativePostArray;
- }
- if (displayPosts.length) {
- var relativeHtml = '<h3>延伸閱讀</h3><ul>';
- for (var i = 0; i < displayPosts.length; i++) {
- displayPosts[i]
- relativeHtml += '<li><a href="' + displayPosts[i].url + '">' + displayPosts[i].title + '</a></li>';
- }
- relativeHtml += '</ul>';
- if ($('.relative-posts').length) {
- $('.relative-posts').html(relativeHtml);
- } else {
- $('.item-view .post-outer').after($('<div>').addClass('relative-posts').html(relativeHtml));
- }
- }
- }
- $('.item-view .post-labels a').each(function(index, tag) {
- $.ajax({
- url: bloggerUrl + 'feeds/posts/default/-/' + $(tag).text() + '?alt=json',
- success: function(res) {
- $.each(res.feed.entry, function(index2, entry) {
- var url = '';
- $.each(entry.link, function(index3, link) {
- if (link.rel == 'alternate') {
- url = link.href;
- }
- });
- if (entry.title.$t != $('.item-view .post-wrapper .post-title').text().replace(/\n/g, '')) {
- relativePosts[entry.id.$t] = {
- title: entry.title.$t,
- url: url,
- };
- }
- });
- displayRealativePosts();
- }
- });
- });
- });
- </script>
- 程式有用到 jQuery,如果網誌沒有載入過的還需另外載入。
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
- 有一個重點一定要注意,就是第 17 行的 bloggerUrl 變數要改成自己網誌的網址,最後要有斜線"/"。
- 第 19 行的 relativePostCount 是最多顯示多少篇文章。
- 如果不想跟我一樣叫延伸閱讀,可以在第 39 行調整。
- 第 1~14 行是 CSS,微調一下顏色和間距。
您好,想請教版大
回覆刪除文內Code碼的背景也是用程式碼帶入的嗎?
還是他跟Blogger文章編輯器的引用有關呢?
試過Blogger的引用還滿簡單的,
很想改成像版大這樣的形式,或是至少可以去掉雙引號的符號XD
我用的方式可能比較麻煩,你可以參考 如何在 Blogger 裡放程式碼? 這篇文章
刪除