2011年11月22日

Blogger 推文系統 V1.0 自訂安裝說明

Wayne Fu 0 A+
2012.5.2 公告:

推文系統 V2.0 已經發佈,請見「WPS 部落格推文系統發佈網頁


一、替代方式

由於安裝的動作不少,如果想先快速體驗一下推文的功能,可參考「Blogger 推文系統簡易安裝及使用說明」進行簡易安裝。


二、準備動作

請先參照「利用 Google 問卷(試算表)當小型資料庫__(一)製作資料庫」、「利用 Google 問卷(試算表)當小型資料庫__(二)讀取、儲存資料庫」這兩篇文章,建立自己的 Google 試算表當資料庫,並記下文中提到的試算表相關亂數字串。


三、安裝程式碼

1. 請先下載「WPS-share-111126.js」這個檔案,放在自己的網頁空間。

2. 到 Blogger 後台 → 範本 → 編輯 HTML

3. 一般而言推文應該緊接在文章後面,而文章後面通常有下面這一段程式碼:

<b:if cond='data:post.hasJumpLink'>
<div class='jump-link'>
<a expr:href='data:post.url + "#more"' expr:title='data:post.title'><data:post.jumpText/></a>
</div>
</b:if>

4. 找到類似上面的程式碼後,在後面貼上以下程式碼,或者想放在別的位置請找適當的地方放:

<b:if cond='data:blog.pageType == "item"'>
<script src='http://你的網頁空間/WPS-share-111126.js' type='text/javascript'/>
</b:if>

5. 如果暫時沒有網頁空間,可以先使用下面這個連結:

<b:if cond='data:blog.pageType == "item"'>
<script src='http://wayne-fu.googlecode.com/files/WPS-share-111126.js' type='text/javascript'></script>
</b:if>

但用以上這個連結,將無法使用自己的 Google 試算表當資料庫,而既然放棄簡易安裝、選擇進階安裝方式,那麼找個網頁空間是必須的動作。

2011.11.25 增補

建議使用「Google Code」空間,可外連 js 檔。(可參考此篇介紹「Google Code 簡易使用教學」)

如果沒有網頁空間,那麼可以把 js 檔的內容塞到範本裡面,例如把第 5 點的字串改成以下:


<b:if cond='data:blog.pageType == "item"'>
<script type='text/javascript'>
//<![CDATA[
WPS-share-111126.js 的內容全部複製到此區間
//]]>
</script>
</b:if>


四、修改程式碼

打開「WPS-share-111126.js」這個 js 檔(用文書編輯軟體,例如以 word 開啟,編碼務必請選 unicode 格式),內容很長,不過要改成自己的資料庫只需要更改兩~三個地方而已:

  1. function WPSjson(json){WPS("js",json)}
  2.  
  3. function WPS(hh,ii,jj,kk,ll,mm){
  4.   function ChoosePush(c){
  5.     var e=document.getElementById("push1")
  6.     var f=document.getElementById("Push1BG")
  7.     if (c==1){
  8.       e.innerHTML="推文"
  9.     }
  10.     if (c==2){
  11.       e.innerHTML="箭頭"
  12.       f.style.backgroundColor="#d0e0e3"
  13.     }
  14.     if (c==3){
  15.       e.innerHTML="噓文"
  16.       f.style.backgroundColor="#d9ead3"
  17.     }
  18.     document.getElementById("push2").style.display="none"
  19.     document.getElementById("push3").style.display="none"
  20.   }
  21.  
  22.   function show23(){
  23.     document.getElementById("push1").innerHTML="推文"
  24.     document.getElementById("push2").style.display="block"
  25.     document.getElementById("push3").style.display="block"
  26.   }
  27.  
  28.   function SubmitPush(e){
  29.     if(PushCount>1){alert("已連續推文兩次,建議採取留言方式發表意見!");return}
  30.  
  31.     var a=top.location+""
  32.     var aa=a.indexOf(".html")
  33.     var url=a.substring(0,aa+5)
  34.   
  35.     var b=document.getElementById("push1").innerHTML
  36.     var psc, psb, pst, Ipush
  37.  
  38.     if(b=="推文"){
  39.       psc="#e69138"
  40.       psb="#e69138 1px solid"
  41.       pst="推"
  42.       Ipush=1
  43.     }
  44.     if(b=="箭頭"){
  45.       psc="#3d85c6"
  46.       psb="#3d85c6 1px solid"
  47.       pst="→"
  48.       Ipush=2
  49.     } 
  50.     if(b=="噓文"){
  51.       psc="#6aa84f"
  52.       psb="#6aa84f 1px solid"
  53.       pst="噓"
  54.       Ipush=3
  55.     }
  56.  
  57.     var c=document.getElementById("InputPushName").value
  58.     var d=document.getElementById("InputPushText").value
  59.     if(c=="" || c=="暱稱" || d=="" || d=="推文內容"){
  60.       alert("請完整輸入暱稱、推文內容")
  61.       return
  62.     }
  63.     var t=c+d
  64.     var big=/[^\x00-\xff]/g
  65.     var small=/[\x00-\xff]/g
  66.     var tb,ts
  67.     var arr = t.match(big)
  68.     if(arr){tb=arr.length}
  69.     var arr = t.match(small)
  70.     if(arr){ts=arr.length}
  71.     if((tb*2+ts+2)>100){
  72.       alert("推文內容過長,請分段推文,或改採留言方式!")
  73.       return
  74.     }
  75.  
  76.     var name=c.replace(/</g,"&lt;").replace(/>/g,"&gt;")
  77.     var text=d.replace(/</g,"&lt;").replace(/>/g,"&gt;")
  78.  
  79.     if(PushCount==0){
  80.       var f=(e*1)+1
  81.       document.getElementById("NewPush1").style.display="block"
  82.       document.getElementById("npp1").style.color=psc
  83.       document.getElementById("npp1").style.border=psb
  84.       document.getElementById("npp1").innerHTML=pst
  85.       document.getElementById("npn1").innerHTML=name
  86.       document.getElementById("npt1").innerHTML=":"+text
  87.       document.getElementById("nf1").innerHTML=f+"F"
  88.     }
  89.  
  90.     if(PushCount==1){
  91.       document.getElementById("NewPush2").style.display="block"
  92.       document.getElementById("npp2").style.color=document.getElementById("npp1").style.color
  93.       document.getElementById("npp2").style.border=document.getElementById("npp1").style.border
  94.       document.getElementById("npp2").innerHTML=document.getElementById("npp1").innerHTML
  95.       document.getElementById("npn2").innerHTML=document.getElementById("npn1").innerHTML
  96.       document.getElementById("npt2").innerHTML=document.getElementById("npt1").innerHTML
  97.       document.getElementById("nf2").innerHTML=document.getElementById("nf1").innerHTML
  98.  
  99.       var f=(e*1)+2
  100.       document.getElementById("npp1").style.color=psc
  101.       document.getElementById("npp1").style.border=psb
  102.       document.getElementById("npp1").innerHTML=pst
  103.       document.getElementById("npn1").innerHTML=name
  104.       document.getElementById("npt1").innerHTML=":"+text
  105.       document.getElementById("nf1").innerHTML=f+"F"
  106.     }
  107.  
  108.     var name=escape(c)
  109.     var text=escape(d)
  110.  
  111.     var SubmitUrl="https://docs.google.com/spreadsheet/formResponse?hl=zh_TW&formkey=dHlSSnRRR0w5eGFzRExRTWRjbWNLN0E6MQ&ifq&entry.0.single="+url+"&entry.1.single="+Ipush+"&entry.2.single="+name+"&entry.3.single="+text+"&submit=Submit"
  112.  
  113.     document.getElementById("SubmitUrl").src=SubmitUrl
  114.  
  115.     PushCount=PushCount+1
  116.     document.getElementById("InputPushText").value=""
  117.   }
  118.  
  119.   function DelDefault(e){
  120.     if (e==1){
  121.       if(document.getElementById("InputPushName").value=="暱稱")document.getElementById("InputPushName").value="";
  122.     }
  123.     if (e==2){
  124.       if(document.getElementById("InputPushText").value=="推文內容")document.getElementById("InputPushText").value=""
  125.     }
  126.   }
  127.  
  128.   function PushSwitch(op,np,me,main,alt){
  129.     function ps(sec){
  130.       var e = document.getElementById(sec);
  131.       if(e.style.display == 'block'){e.style.display = 'none';}
  132.       else {e.style.display = 'block';}
  133.     }
  134.     ps(np)
  135.     ps(op)
  136.  
  137.     me.innerHTML = (me.innerHTML == main) ? alt : main;
  138.   }
  139.  
  140.   function PushTable(pp,pn,pt,time,f){
  141.     var ps,pst
  142.     if(pp==1){
  143.       ps="style='color:#e69138; border:#e69138 1px solid;'"
  144.       pst="推"
  145.     }
  146.     if(pp==2){
  147.       ps="style='color:#3d85c6; border:#3d85c6 1px solid;'"
  148.       pst="→"
  149.     } 
  150.     if(pp==3){
  151.       ps="style='color:#6aa84f; border:#6aa84f 1px solid;'"
  152.       pst="噓"
  153.     }
  154.  
  155.     document.write("<tr'><td align='center' width='20' "+ps+">"+pst+"</td><td width='440' style='border: #e8d6c1 1px solid; background-color: #f8f8f8; word-wrap:break-word; word-break: break-all;'><span style='color: #45818e; font-weight: bold;'>"+pn+"</span><span>:"+pt+"</span></td><td style='font-size:9pt; background-color: #eeeeee; border: #e8d6c1 1px solid;' width='110'>"+time+"</td><td style='color:#bbbbbb'>"+f+"F</td></tr>")
  156.   }
  157.  
  158.   function WPSmain(json) {
  159.     if(!json.feed.entry){PushForm()}
  160.     var a = json.feed.entry.length
  161.     var PostUrl = json.feed.entry[0].gsx$url.$t
  162.     var PushPost = new Array()
  163.     var PushName = new Array()
  164.     var PushText = new Array()
  165.     var PushTime = new Array()
  166.  
  167.     for (var i = 0; i < a; i++) { 
  168.       var pp = json.feed.entry[i].gsx$ipush.$t
  169.       var pn = unescape(json.feed.entry[i].gsx$name.$t)
  170.       var pt = unescape(json.feed.entry[i].gsx$text.$t)
  171.       var time = json.feed.entry[i].title.$t;
  172.     
  173.       var s=time.lastIndexOf(":")
  174.       var nt=time.substring(0,s)
  175.       if (nt.indexOf("上午 ")>0){time=nt.replace("上午 ","")}
  176.       if (nt.indexOf("下午 ")>0){
  177.         var ss=nt.indexOf("下午")
  178.         var hr=nt.substring(ss+3,ss+5)
  179.         if (hr==12){time=nt.replace("下午 ","")}
  180.         else {
  181.           if (hr==11 || hr==10){
  182.             if (hr==11)time=nt.replace("下午 11","23")
  183.     if (hr==10)time=nt.replace("下午 10","22")
  184.   }      
  185.          else {
  186.           hr=nt.substring(ss+3,ss+4)*1
  187.           nhr=hr+12
  188.           var m=nt.substring(ss+4)
  189.           var d=nt.substring(0,ss)
  190.           time=d+nhr+m
  191.           }
  192.         }
  193.       }
  194.       PushPost.push(pp)
  195.       PushName.push(pn)
  196.       PushText.push(pt)
  197.       PushTime.push(time)
  198.     }
  199.  
  200.     if (a>5){
  201.       document.write("<span id='PushTop'></span><table id='OldPush' style='display:none' width='100%' valign='middle'>")
  202.  
  203.       for(var i=0; i<a; i++){
  204.         var f=i+1
  205.         PushTable(PushPost[i],PushName[i],PushText[i],PushTime[i],f)
  206.       }
  207.       document.write("</table>")
  208.       document.write("<table><tr><td align='center' width='500'><a href='#PushTop' onclick='WPS(\"PushSwitch\",\"OldPush\",\"NewPush\",this,\"按此顯示舊推文\",\"按此隱藏舊推文\")'>按此顯示舊推文</div></td><td width='30'><span style='float:right'><img alt='關於「推文系統」' height='20' onclick='WPS(\"PushInfo\")' src='http://lh5.ggpht.com/-46DMP10l7D0/TrIZTxfDzPI/AAAAAAAACFU/aAnaTT2Goqk/info.png' style='cursor: pointer; color: #3778cd;' title='關於「推文系統」' width='20'/></span></td></tr></table>")
  209.  
  210.       document.write("<table id='NewPush' width='100%' style='display:block' valign='middle'>")
  211.       for(var i=a-5; i<a; i++){
  212.         var f=i+1
  213.         PushTable(PushPost[i],PushName[i],PushText[i],PushTime[i],f)
  214.       }
  215.       document.write("</table>")
  216.     }
  217.  
  218.     if (a<=5){
  219.       document.write("<table width='100%' valign='middle'>")
  220.  
  221.       for(var i=0; i<a; i++){
  222.         var f=i+1
  223.         PushTable(PushPost[i],PushName[i],PushText[i],PushTime[i],f)
  224.       }
  225.       document.write("</table>")
  226.     }
  227.  
  228.     function PushForm(a){
  229.       if(!a){var a=0}
  230.       document.write("<table id='NewPush2' style='display:none' width='100%' valign='middle'><tr><td id='npp2' align='center' width='20'></td><td width='440' style='border: #e8d6c1 1px solid; background-color: #f8f8f8; word-wrap:break-word; word-break: break-all;'><span id='npn2' style='color: #45818e; font-weight: bold;'></span><span id='npt2'></span></td><td width='110' align='center' style='background-color: #eeeeee; border: #e8d6c1 1px solid;'>不久前</td><td id='nf2' style='color:#bbbbbb'></td></tr></table>")
  231.       document.write("<table id='NewPush1' style='display:none' width='100%' valign='middle'><tr><td id='npp1' align='center' width='20'></td><td width='440' style='border: #e8d6c1 1px solid; background-color: #f8f8f8; word-wrap:break-word; word-break: break-all;'><span id='npn1' style='color: #45818e; font-weight: bold;'></span><span id='npt1'></span></td><td width='110' align='center' style='background-color: #eeeeee; border: #e8d6c1 1px solid;'>1 秒前</td><td id='nf1' style='color:#bbbbbb'></td></tr></table>")
  232.  
  233.       document.write("<table width='100%' valign='middle' style='float:left'><tr><td id='Push1BG' align='center' width='40' style='background-color: #fff2cc; border:#000000 1px solid;'><span style='cursor: pointer;' id='push1' onmouseover='WPS(\"show23\");this.style.color=\"#999999\";document.getElementById(\"Push1BG\").style.backgroundColor=\"#fff2cc\";' onmouseout='this.style.color=\"#444444\";' onclick='WPS(\"ChoosePush\",\"1\")'>推文</span></td><td width='450'><input size='4' type='text' id='InputPushName' value='暱稱' style='background-color: #dddddd;' onmouseover='WPS(\"DelDefault\",\"1\")'/><input size='30' id='InputPushText' value='推文內容' style='background-color: #eeeeee;' onmouseover='WPS(\"DelDefault\",\"2\")'/><input size='4' type='button' value='送出' onclick='WPS(\"SubmitPush\",\""+a+"\")'/><iframe id='SubmitUrl' name='SubmitUrl' width='0' height='0' frameborder='0' scrolling='no' src=''></iframe></td></tr><tr><td align='center' width='40'><span id='push2' onmouseover='this.style.color=\"#999999\";' onmouseout='this.style.color=\"#444444\";' style='background-color: #d0e0e3; display:none;cursor: pointer;border:#000000 1px solid;' onclick='WPS(\"ChoosePush\",\"2\")'>箭頭</span></td></tr><tr><td align='center' width='40'><span id='push3' onmouseover='this.style.color=\"#999999\";' onmouseout='this.style.color=\"#444444\";' style='background-color: #d9ead3; display:none;cursor: pointer;border:#000000 1px solid;' onclick='WPS(\"ChoosePush\",\"3\")'>噓文</span></td></tr></table>")
  234.     }
  235.   PushForm(a)
  236.   }
  237.  
  238.   function PushInfo(){
  239.     var X=(screen.width-250)/2;
  240.     var Y=(screen.height-160)/2;
  241.  
  242.     var a=window.open("","PushInfo","toolbar=0, location=0, statusbar=yes, menubar=0, scrollbars=yes, resizable=yes, titlebar=0, width=250, height=160, top="+Y+", left="+X+"");
  243.  
  244.     a.document.write("<div style=\"background: url(http://lh6.ggpht.com/_aBGIyeaH_hM/TQbqkfsmkjI/AAAAAAAAA8g/vqz3hYUma9I/bg_white.jpg);\"><center>WPS 推文系統:V 1.00</p></p>程式設計:<a style=\"cursor: pointer; color: #3778cd;\" href=\"http://wayne-fu.blogspot.com/\" target=\"_blank\">WFU BLOG</a></p></p><a style=\"cursor: pointer; color: #3778cd;\" href=\"http://wayne-fu.blogspot.com/2011/10/comment-system-8-push-comment.html\" target=\"_blank\">發佈網頁</a> || <a style=\"cursor: pointer; color: #3778cd;\" href=\"http://wayne-fu.blogspot.com/2011/10/push-comment-manual.html\" target=\"_blank\">使用說明</a></p></p><input type=\"button\" value=\"確定\" onclick=\"self.close()\"/></center></div>");
  245.   }
  246.  
  247.   if(hh=="js"){WPSmain(ii)}
  248.   if(hh=="ChoosePush"){ChoosePush(ii)}
  249.   if(hh=="show23"){show23()}
  250.   if(hh=="SubmitPush"){SubmitPush(ii)}
  251.   if(hh=="DelDefault"){DelDefault(ii)}
  252.   if(hh=="PushSwitch"){PushSwitch(ii,jj,kk,ll,mm)}
  253.   if(hh=="PushTable"){PushTable(ii,jj,ll,ll,mm)}
  254.   if(hh=="PushInfo"){PushInfo()}
  255. }
  256.  
  257. function PushJson(){
  258.     var a=top.location+""
  259.     var aa=a.indexOf(".html")
  260.     var PushPostUrl=a.substring(0,aa+5)
  261.  
  262.     document.write("<scr"+"ipt type='text/javascript' src='https://spreadsheets.google.com/feeds/list/0AikclfTTti-0dHlSSnRRR0w5eGFzRExRTWRjbWNLN0E/od6/public/values?hl=zh_TW&q="+PushPostUrl+"&alt=json-in-script&callback=WPSjson'></sc"+"ript>")
  263. }
  264.  
  265. var PushCount=0
  266. PushJson()

DG:紅字部分請置換為「利用 Google 問卷(試算表)當小型資料庫__(一)製作資料庫」→「三、製作資料庫」→ 第 2 個步驟所得到自己的試算表身份證

FL~FN:如果想要自訂問卷的問題標題的話,紅字部分請填入自訂標題,注意如有大寫的字母全部改為小寫。如果沒有要變動則這幾行不用變更。

JB:在「利用 Google 問卷(試算表)當小型資料庫__(一)製作資料庫」→「三、製作資料庫」→ 第 10 個步驟所得到自己試算表的字串,此行紅字部分請置換為對應的字串。

改完以上這幾行,存檔時以 word 為例,編碼務必請選 unicode 格式,上傳到自己的網頁空間即完成安裝。


五、程式碼說明

如果對 javascript 不熟,可以略過本章節;而如果想要自訂配置,可以參考一下這一段的內容。

其實這個 js 檔很難一行行說明,因此從執行順序來說明或許比較恰當。

JE:PushCount 變數儲存使用者連續推文的次數。

JF→IW、IW→IZ:找出目前文章網址,放到 PushPostUrl 這個變數。

JB:重點在於使用了「q=文章網址」這個參數,使得 Json 格式的資料不會太長;如果該文章尚無任何推文的話,那麼完全沒有資料會篩選出來,可節省許多傳輸資料的時間;最後篩出來的資料交給 WPSjson 這個函數處理。

A→C→IM→FB~FC:如果該文章目前無任何推文的話,執行 HT 行 PushForm 函數(直接印出輸入推文的表單)

FD~FI:替推文系統需要顯示的資料設陣列──推噓文種類、暱稱、推文內容、時間。

FK~GP:依序從 Json 讀入資料到以上設立的陣列,其中為了處理時間的格式多了好幾行的空間。

GR~GZ:預設推文最多顯示五筆,如果推文超過五筆,超過五筆的舊推文全部隱藏起來;印出推文的表格交給 PushTable 函數處理。

HB~HH:印出最後五筆推文。

HJ~HR:推文小於五筆時,全部印出。

IA→HT~HZ:把處理 Json 得到的推文筆數放到變數 a,傳送到 PushForm 函數,印出推文輸入表單。另外印出兩排表單並隱藏起來,當輸入新推文時,再逐一打開這兩排表單,由變數 a 決定這兩排表單是幾樓的推文。

AB:當填完表單送出推文時,會啟動 SubmitPush 函數處理資料。

AC:如字面上所述。

AE~AG:準備儲存文章網址到資料庫。

AI~BC:處理推文種類,準備儲存到資料庫。

BE~BF:讀取暱稱、推文內容。

BG~BJ:如字面上所述。

BK~BV:判斷輸入內容長短,控制不超過兩行的長度,超過就顯示 BT 行。

BX~BY:在 name(暱稱) 及 text(推文內容)兩個變數, 把「<」、「>」這兩個符號轉換為「&lt;」、「&gt;」,封鎖推文內容的 HTML 標籤及語法。

CA~DB:根據已推文次數,顯示之前隱藏的兩排表格並印出輸入內容。

DD~DE:這次 name(暱稱) 及 text(推文內容)兩個變數要存到試算表,用 escape 函數轉換所以無法正常顯示的字元。

DG:設定要存到資料庫的網址內容,分別存入 url(文章網址)、Ipush(推文種類)、name(暱稱)、text(推文內容)。

DI→HY:當初在 HY 行設了一個 Iframe,這個 Iframe 很特別,長、寬設為零所以看不到,src(網址)也設為空字串(""),所以這個 Iframe 不會執行。現在我們已經有了推文資料,使用 DI 行的指令動態給予 Iframe 網址,如此 Iframe 就悄悄地幫我們送出資料,而不會影響螢幕上的輸出畫面,這一行是非常重要的一個技巧,也是推文功能最終能實現的關鍵。

DK:處理完資料後,推文次數加一。

DL:處理完資料後,把推文內容清空。

以上為主要程式的流程,還有一些函數沒有提到,不過大多與版面配置、動態效果有關,想要做細部調整的站長們請再自行研究一下了。


2011.11.26 增補

六、改表格顏色

三咪一犬的窩 於【留言 #01】詢問表格顏色,為便於閱讀,將部分內容增補到此:

自訂表格顏色需修改 js 檔,而修改 js 檔務必注意本文「四、修改程式碼」的紅字,否則會發生慘劇。

修改舊推文表格的顏色要改 EY 行:

A:「span style='color: #45818e;」 這裡是暱稱的顏色,把 #45818e 換成需要的顏色即可

B:「<span>:"+pt+」這裡是推文內容,改成「<span style='color: #xxxxxx;'>:"+pt+」,把 #xxxxxx 換成需要的推文內容顏色

C:「<td style='font-size:9pt;」這裡是時間,改成「<td style='color: #xxxxxx; font-size:9pt;」把 #xxxxxx 換成你要的時間顏色

D:「style='color:#bbbbbb'」這是樓層的顏色


修改 新推文x2 的表格(就是 1 秒前、不久前那兩個),要改 HV、HW 這兩行:

E:「span id='npn2'」以及「span id='npn1'」這兩個地方後面的 color 是暱稱的色碼

F:HV行「span id='npt2'」這裡是推文內容,改成「span id='npt2' style='color: #xxxxxx;'」,HW行「span id='npt1'」也是一樣改法

G:HV行「style='background-color: #eeeeee;」改成「style='background-color: #eeeeee; color: #xxxxxx;」可增加時間字體顏色;HW行也是一樣。

H:HV行「td id='nf2'」後面的 color 可改樓層顏色;HW行「td id='nf1'」後面一樣的改法。

如果要改背景色,可改 background-color 後面的色碼。

另外,js 檔放上網頁空間後,如果之後 js 檔內容有修改,要重新上傳,請改不同的檔名,如果相同的檔名瀏覽器內會有 cache ,可能會誤判,仍然採用舊的 js 檔內容,所以改檔名是最保險的方法。
0 0
如這篇文章對你有幫助,歡迎「分享」到 FB、「追蹤」粉絲團、「訂閱」最新文章

3 則留言:

  1. Hi, 站長你好, 首先感謝你提供這個資訊讓我們使用, 我有幾個小問題要請教你

    1. 我現在目前想先使用你提供的簡易教學就好, 但是我構想的是, 我可以複製你的.js檔就好, 然後修改之後傳到我的空間去嗎? (會有資料庫寫不進去的問題嗎?)

    2. 上個問題所提到的修改就是想要修改推文內容的字體顏色, 如果第一個問題是可以解決的, 我想請問是不是可以教我怎麼改字體顏色呢?

    感謝你的教導唷!! 期待你的回覆!!

    回覆刪除
  2. 好複雜啊!! (更讓我敬佩你的實力跟耐心!! 請接受小弟一拜!!)

    我去準備咖啡來好好研究一下好了!!
    成功了再來跟你報告!! 感恩!!

    回覆刪除
  3. 成功了成功了成功了!!

    我簡單改了一下~變得很清楚囉!!!!!!!!!


    超感謝的!! 感恩感恩!!

    我已經訂閱你的部落格~期待你發表新文章!! 感恩!!

    回覆刪除
⏩ 提問請詳細描述狀況,並附網址或截圖,如提供的資訊不足,則無法回覆。

張貼留言注意事項:

◎ 勾選「通知我」可收到後續回覆的mail!
◎ 請在相關文章留言,與文章無關的主題可至「Blogger 社團」提問。
◎ 請避免使用 Safari 瀏覽器,否則無法登入 Google 帳號留言(只能匿名留言)!
◎ 提問若無法提供足夠的資訊供判斷,可能會被無視。建議先參考這篇「Blogger 提問技巧及注意事項」。
◎ CSS 相關問題非免費諮詢,建議使用「Chrome 開發人員工具」尋找答案。
◎ 手機版相關問題請參考「Blogger 行動版範本的特質」→「三、行動版範本不一定能執行網頁版工具」;或參考「Blogger 行動版範本修改技巧 」,或本站 Blogger 行動版標籤相關文章。
◎ 非官方範本問題、或貴站為商業網站,請參考「Blogger 免費諮詢 + 付費諮詢
◎ 若是使用官方 RWD 範本,請參考「Blogger 推出全新自適應 RWD 官方範本及佈景主題」→ 不建議對範本進行修改!
◎ 若留言要輸入語法,"<"、">"這兩個符號請用其他符號代替,否則語法會消失!
◎ 為了過濾垃圾留言,所有留言不會即時發佈,請稍待片刻。
◎ 本站「已關閉自刪留言功能」。

TOP