[教學]5分鐘讓你Blogger的標籤改成樹狀階層式 - 櫻桃椒
[教學] Blogger 文章頁面製作分類與標籤 - 技研可樂
因為 Blogger 只提供標籤功能
要做分類的話有一個最簡單的方式:就是一篇文章一個標籤,直接當分類用
但這樣會有兩個問題
1. 標籤一多時分類會一大坨。 ---- 用樹狀標籤解決
2. 我還是要用標籤怎麼辦。 ---- 用不顯示第一個標籤解決
先上最後結果:
樹狀標籤
一、先去備份主題
參考:105.07.02 如何備份/還原Blogger主題二、再來前往"版面配置",點選"新增小工具"
找到標籤,什麼都不用改直接儲存三、前往"主題",點選"編輯 HTML"
四、跳至小工具,前往剛剛新增的標籤 (Label 2)
如果一開始沒有其他標籤就是 Label 1把以下的區塊
<b:widget id="Label2" locked="false" title="標籤" type="Label"> ....中間省略... </b:widget> ← 看仔細了,要第一個出現的換成
(程式碼修改自[教學]5分鐘讓你Blogger的標籤改成樹狀階層式 - 櫻桃椒
那邊有個地方打錯,還有我加大了縮排距離)
<107.09.16 更新> 把圖片來源從 http 改成 https
<b:widget id='Label2' locked='false' title='文章分類' type='Label' version='1'> <b:includable id='main'> <b:if cond='data:title'> <h2> <data:title/> </h2> </b:if> <div expr:class='"widget-content " + data:display + "-label-widget-content"'> <script> var label_tree = new Object(); function tn(tag) { return tag.substring(1, tag.length - 1); } function build_node(tree, idx, cnt) { if (!tree[idx[0]]) { tree[idx[0]] = new Object(); tree[idx[0]][' _cnt '] = 0; tree[idx[0]][' _item '] = new Array(); } tree[idx[0]][' _cnt '] = parseInt(tree[idx[0]][' _cnt ']) + parseInt(cnt); if (idx.length == 1) { return tree[idx[0]]; } return build_node(tree[idx[0]], idx.slice(1), cnt); } function add_label(_name, _cnt, _url, _dir) { var e1 = new RegExp(& quot; \\[(.+?) \\] & quot;, & quot; g & quot;); var e = new RegExp(& quot; \\[(.+) \\] & quot;, & quot; g & quot;); var m = _name.match(e); var tag = _name; var obj = new Object(); obj[' tag '] = _name; obj[' cnt '] = _cnt; obj[' dir '] = _dir; obj[' url '] = _url; if (m) { obj[' tag '] = _name.substring(m[0].length, _name.length); var m1 = _name.match(e1); if (m1) { node = build_node(label_tree, m1, _cnt); if (node) { node[' _item '].push(obj); } } } else { if (!label_tree[' _item ']) { label_tree[' _item '] = new Array(); } label_tree[' _item '].push(obj); } } function menu_exp(id) { var ul = document.getElementById(& quot; ul_ & quot; + id); var li = document.getElementById(& quot; li_ & quot; + id); if (ul.style.display == & quot; none & quot;) { ul.style.display = & quot; block & quot; li.style.backgroundImage = & quot; url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeHk10S8Ra5ptFR5R4K_faqizdL7Q8VgqcX7n51xkjVIBffZNfb5lfDXq9J5lkie_Cr0kfeUAVAfz1GN-FU1fVLiYu3Y8iSBEsrDwxrNbdAl59JLaTWKYBYVqjvqa6VZsFwR4vFy9Vp_s/)" } else { ul.style.display = & quot; none & quot; li.style.backgroundImage = & quot; url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP2c9vWn9pxQnrE2qjDPzQjSt1gwFUJ5Tc78X4Z7CP1y9CColncVpB_XNn4n3gxcLi3G995EkDrc-MJXdTcbBVZuwN04XNYvo9Y6l8kU80sKKRrsB5eBPLFtR_YHXvrXjRJ4qj04oDfIs/)" } } function draw_obj(obj) { document.write(& quot;& lt; li style =' padding - left: 0px; margin - left: 10px;'& gt;& quot;); document.write(& quot;& lt; a dir ='& quot; +obj[' dir ']+& quot;' href ='& quot; +obj[' url ']+& quot;'& gt;& quot; +obj[' tag ']+& quot;& lt; /a>"); document.write(& quot;& lt; span dir ='& quot; +obj[' dir ']+& quot;'& gt; (& quot; +obj[' cnt ']+& quot;)& lt; /span>"); document.write(& quot;& lt; /li>\n"); } function draw_tree(tree) { for (var tag in tree) { if (tag != ' _item '& amp;& amp; tag != ' _cnt ') { var rid = Math.random(); document.write(& quot;& lt; li class=submenu id = li_ & quot; +rid +& quot; onclick = menu_exp('& quot; +rid +& quot;'); style =' font - weight: bold; padding - left: 20px; margin - left: 8px; background: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP2c9vWn9pxQnrE2qjDPzQjSt1gwFUJ5Tc78X4Z7CP1y9CColncVpB_XNn4n3gxcLi3G995EkDrc-MJXdTcbBVZuwN04XNYvo9Y6l8kU80sKKRrsB5eBPLFtR_YHXvrXjRJ4qj04oDfIs/) no-repeat left 0px;cursor: pointer'>"); document.write(tn(tag)); document.write(& quot; (& quot; +tree[tag][' _cnt ']+& quot;)& quot;); document.write(& quot;& lt; /li>"); document.write(& quot;& lt; ul id = ul_ & quot; +rid +& quot; style =' display: none; padding - left: 20px; margin - left: 8px;'& gt;& quot;); draw_tree(tree[tag]); document.write(& quot;& lt; /ul>\n"); } } if (tree[' _item ']) { for (var i = 0; i & lt; tree[' _item '].length; i++) { draw_obj(tree[' _item '][i]); } } } </script> <b:loop values='data:labels' var='label'> <script> add_label(' <data: label.name /> ',' <data: label.count /> ',' <data: label.url /> ',' <data: blog.languageDirection /> '); </script> </b:loop> <ul> <script> draw_tree(label_tree); </script> </ul> <b:include name='quickedit' /> </div> </b:includable> </b:widget>
有點多,不過這樣樹狀就完成了
使用方式就是利用標籤
例如:[OuO][QuQ]Rust 就會長這樣
不過這樣下面的標籤顯示就會出錯
如下面橘框處那樣,不過正常應該要呈現紅框那樣
經過調整並利用標籤會自動排序,自動忽略掉第一個標籤(分類用)
不顯示第一個標籤
一、重新備份,檔名不要跟剛剛一樣啊 OuO
二、一樣開啟"編輯 HTML"
覺得滾輪會亂跳可以編輯 一、備份下來的 .xml 檔案,記得複製一份原版我是直接用 vscode 編輯啦 OuO
三、找到加入位置
找 <b:include cond="data:post.sharePostUrl" data="post" name="shareButtons"> 用 ctrl+f在下面的 </div> </div> 下面貼上
(程式碼修改自[教學] Blogger 文章頁面製作分類與標籤 - 技研可樂)
<!-- 不顯示分類標籤 START --> <style> span.post-tag-title { font-weight: 700; font-size: 13px; } span.post-tag, span.post-comma { font-size: 13px; } span.post-tag::before { content: '#'; } span.post-no-first-tag-width { margin: 0px 0px 0px 5px; } </style> <span class='post-no-first-tag'> <span class='post-no-first-tag-width'> <br/> <span class='post-tag-title'>標籤:</span> <b:loop values='data:post.labels' var='label' index='index'> <!-- 迴圈值:文章標籤,應用項目 label --> <meta expr:content='data:label.name' property='article:section' /> <b:if cond='data:index != "0"'> <!-- 如果標籤不是第一個 --> <b:if cond='data:label.isLast != "true"'> <!-- 如果標籤不是最後一個 --> <a expr:href='data:label.url' expr:title='data:label.name' rel='section'> <span class='post-tag'><data:label.name/></span> <!-- 顯示標籤名稱 --> </a> <span class='post-comma'>, </span> <b:else/> <a expr:href='data:label.url' expr:title='data:label.name' rel='section'> <span class='post-tag'><data:label.name/></span> <!-- 顯示標籤名稱 --> </a> </b:if> </b:if> </b:loop> </span> </span> <!-- 不顯示分類標籤 END -->
四、關閉預設標籤顯示
好像不能用 "版面控制" 修改了 QuQ可以先去試試看
不行就把以下程式碼註解即可
<!--<div class='post-footer-line post-footer-line-2'><span class='post-labels'> <b:if cond='data:post.labels'> <data:postLabelsLabel/> <b:loop values='data:post.labels' var='label'> <a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='not data:label.isLast'>,</b:if> </b:loop> </b:if> </span> </div>-->
這樣就完成了
最後就是做分類,累 QuQ
重新給每一篇文章一個分類的標籤 (工作量有點大所以我還沒做w
文章分類、標籤雲可以選擇要顯示那些標籤,所以並存不用擔心會有奇怪的標籤出現
參考資料:
下面兩個連結放三次了,很怕被吉 @@
[教學]5分鐘讓你Blogger的標籤改成樹狀階層式 - 櫻桃椒
[教學] Blogger 文章頁面製作分類與標籤 - 技研可樂
-
圖解:Blogger 系統標籤的語法,控制要呈現哪些內容
Blogger Help - Widget Tags for Layouts - index 用法來自這裡
Blogger Theme Data Tags for Widgets
How do I remove the space between inline-block elements?
沒有留言:
張貼留言