Tạo cây thư mục cho bài viết / widget



Mở Rộng + | - Thu Lại

Hướng dẫn tạo cây thư mục trong bài viết/widget theo yêu cầu của bạn v.QUYẾT tại đây
Để tạo cây thư mục bạn sử dụng code sau

<style>
.treeview ul{
margin: 0px;
padding: 0;
}
.treeview li{
background: white url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5XfADGGu5UwYzmu-ZLGVE4WNIMZQJJZ2MPWmMTe_uLF1wk-MmflYXeiTPDo23pwR8uuPkK-m9kqVQ-iUn34v9cdpV2wflTPkAw_X46zqjcchOBx_ExG3qfpFnb5pKhIq4k3vI9WiINYY/s400/list.gif) no-repeat 0px 3px;
list-style-type: none;
padding-left: 32px;
margin-bottom: 3px;
}
.treeview li.submenu{
background: white url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOELzwTkCQ9XhZNbil46ZfZypT7RueYE8AKFtyX-DyrTHmxjqtt0TV0MP1eUCzPiw39aQLSTKRzLQF_F9S7ktg_ixT85yGfMQIXgrasELw3NhBNFtPiIazQDq3yoTcyb_tF9ZYnGrAq0Y/s400/closed.gif) no-repeat  0px 3px;
cursor: hand !important;
cursor: pointer !important;
}
.treeview li.submenu ul{
display: none;
}
.treeview .submenu ul li{
cursor: default;
}
</style>
<script type="text/javascript" >
var persisteduls=new Object()
var ddtreemenu=new Object()
ddtreemenu.closefolder="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOELzwTkCQ9XhZNbil46ZfZypT7RueYE8AKFtyX-DyrTHmxjqtt0TV0MP1eUCzPiw39aQLSTKRzLQF_F9S7ktg_ixT85yGfMQIXgrasELw3NhBNFtPiIazQDq3yoTcyb_tF9ZYnGrAq0Y/s400/closed.gif" //set image path to "closed" folder image
ddtreemenu.openfolder="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Z2_3RudKEc6q3dj3aVUUt77sXh5DIi_M2h_5VfpfmylwhR1h1kzwFoy1u1HVYf2_7LgVIdbIuXyn1z33D1pauv6Um3hqAcnTFiYDMK1qFlC7dllzddMfI0ZxcrP6u-BP03gKUQVDNOw/s400/open.gif" //set image path to "open" folder image
//////////No need to edit beyond here///////////////////////////
ddtreemenu.createTree=function(treeid, enablepersist, persistdays){
var ultags=document.getElementById(treeid).getElementsByTagName("ul")
if (typeof persisteduls[treeid]=="undefined")
persisteduls[treeid]=(enablepersist==true && ddtreemenu.getCookie(treeid)!="")? ddtreemenu.getCookie(treeid).split(",") : ""
for (var i=0; i<ultags.length; i++)
ddtreemenu.buildSubTree(treeid, ultags[i], i)
if (enablepersist==true){ //if enable persist feature
var durationdays=(typeof persistdays=="undefined")? 1 : parseInt(persistdays)
ddtreemenu.dotask(window, function(){ddtreemenu.rememberstate(treeid, durationdays)}, "unload") //save opened UL indexes on body unload
}
}
ddtreemenu.buildSubTree=function(treeid, ulelement, index){
ulelement.parentNode.className="submenu"
if (typeof persisteduls[treeid]=="object"){ //if cookie exists (persisteduls[treeid] is an array versus "" string)
if (ddtreemenu.searcharray(persisteduls[treeid], index)){
ulelement.setAttribute("rel", "open")
ulelement.style.display="block"
ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
}
else
ulelement.setAttribute("rel", "closed")
} //end cookie persist code
else if (ulelement.getAttribute("rel")==null || ulelement.getAttribute("rel")==false) //if no cookie and UL has NO rel attribute explicted added by user
ulelement.setAttribute("rel", "closed")
else if (ulelement.getAttribute("rel")=="open") //else if no cookie and this UL has an explicit rel value of "open"
ddtreemenu.expandSubTree(treeid, ulelement) //expand this UL plus all parent ULs (so the most inner UL is revealed!)
ulelement.parentNode.onclick=function(e){
var submenu=this.getElementsByTagName("ul")[0]
if (submenu.getAttribute("rel")=="closed"){
submenu.style.display="block"
submenu.setAttribute("rel", "open")
ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
}
else if (submenu.getAttribute("rel")=="open"){
submenu.style.display="none"
submenu.setAttribute("rel", "closed")
ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.closefolder+")"
}
ddtreemenu.preventpropagate(e)
}
ulelement.onclick=function(e){
ddtreemenu.preventpropagate(e)
}
}
ddtreemenu.expandSubTree=function(treeid, ulelement){ //expand a UL element and any of its parent ULs
var rootnode=document.getElementById(treeid)
var currentnode=ulelement
currentnode.style.display="block"
currentnode.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
while (currentnode!=rootnode){
if (currentnode.tagName=="UL"){ //if parent node is a UL, expand it too
currentnode.style.display="block"
currentnode.setAttribute("rel", "open") //indicate it's open
currentnode.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
}
currentnode=currentnode.parentNode
}
}
ddtreemenu.flatten=function(treeid, action){ //expand or contract all UL elements
var ultags=document.getElementById(treeid).getElementsByTagName("ul")
for (var i=0; i<ultags.length; i++){
ultags[i].style.display=(action=="expand")? "block" : "none"
var relvalue=(action=="expand")? "open" : "closed"
ultags[i].setAttribute("rel", relvalue)
ultags[i].parentNode.style.backgroundImage=(action=="expand")? "url("+ddtreemenu.openfolder+")" : "url("+ddtreemenu.closefolder+")"
}
}
ddtreemenu.rememberstate=function(treeid, durationdays){ //store index of opened ULs relative to other ULs in Tree into cookie
var ultags=document.getElementById(treeid).getElementsByTagName("ul")
var openuls=new Array()
for (var i=0; i<ultags.length; i++){
if (ultags[i].getAttribute("rel")=="open")
openuls[openuls.length]=i //save the index of the opened UL (relative to the entire list of ULs) as an array element
}
if (openuls.length==0) //if there are no opened ULs to save/persist
openuls[0]="none open" //set array value to string to simply indicate all ULs should persist with state being closed
ddtreemenu.setCookie(treeid, openuls.join(","), durationdays) //populate cookie with value treeid=1,2,3 etc (where 1,2... are the indexes of the opened ULs)
}
////A few utility functions below//////////////////////
ddtreemenu.getCookie=function(Name){ //get cookie value
var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
if (document.cookie.match(re)) //if cookie found
return document.cookie.match(re)[0].split("=")[1] //return its value
return ""
}
ddtreemenu.setCookie=function(name, value, days){ //set cookei value
var expireDate = new Date()
//set "expstring" to either future or past date, to set or delete cookie, respectively
var expstring=expireDate.setDate(expireDate.getDate()+parseInt(days))
document.cookie = name+"="+value+"; expires="+expireDate.toGMTString()+"; path=/";
}
ddtreemenu.searcharray=function(thearray, value){ //searches an array for the entered value. If found, delete value from array
var isfound=false
for (var i=0; i<thearray.length; i++){
if (thearray[i]==value){
isfound=true
thearray.shift() //delete this element from array for efficiency sake
break
}
}
return isfound
}
ddtreemenu.preventpropagate=function(e){ //prevent action from bubbling upwards
if (typeof e!="undefined")
e.stopPropagation()
else
event.cancelBubble=true
}
ddtreemenu.dotask=function(target, functionref, tasktype){ //assign a function to execute to an event handler (ie: onunload)
var tasktype=(window.addEventListener)? tasktype : "on"+tasktype
if (target.addEventListener)
target.addEventListener(tasktype, functionref, false)
else if (target.attachEvent)
target.attachEvent(tasktype, functionref)
}
</script>
<a href="javascript:ddtreemenu.flatten('treemenu1', 'expand')">Expand  +</a> | <a href="javascript:ddtreemenu.flatten('treemenu1', 'contact')">- Contract</a>
<p></p>
<ul id="treemenu1" class="treeview">
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li>Thư Mục 1
    <ul>
    <li><a href="#">Link 1.1</a></li>
    <li><a href="#">Link 1.2</a></li>
    </ul>
</li>
<li><a href="#">Link 3</a></li>
<li>Thư Mục 2
    <ul>
    <li><a href="#">Link 2.1</a></li>
    <li>Thư Mục 2.1
        <ul>
        <li><a href="#">Link 2.1.1</a></li>
        <li><a href="#">Link 2.1.2</a></li>
        </ul>
    </li> 

</ul>
</li>
<li><a href="#">Link 4</a></li>
</ul>
<script type="text/javascript">
//ddtreemenu.createTree(treeid, enablepersist, opt_persist_in_days (default is 1))
ddtreemenu.createTree("treemenu1", true)
ddtreemenu.createTree("treemenu2", false)
</script>

  • Nội dung cây thư mục nằm trong đoạn code mình bôi màu xanh 
  • Bạn nên copy xong dán đoạn code ra trình soạn thảo sau đó chỉnh sửa trước khi đưa vào bài viết
  • Áp dụng phương pháp này bạn có thể tạo cây thư mục các nhãn (label) bằng cách tạo một widget HTML/Javascript mới sau đó sử dụng code phía trên. Ví dụ như cây thư mục ở trên cùng bài viết này
Hi vọng bài viết sẽ giúp được ít nhiều trong việc thiết kế blog của bạn. Chúc thành công!
9 Comments
Comments

9 comments

11/11/12
Cám ơn bạn nhé.
Bài viết rất hữu ích với mình ^^
25/11/12
bạn ơi cho mình hỏi : màu nền blogs của mình là màu đen , và màu chữ của NHẬN XÉT BÀI VIẾT cũng là màu đen , khi một người nhận xét thì màu nền và màu chữ cùng màu đen nên không nhìn thấy gì hết , bạn có thẻ cho mình hướng dẫn khắc phục được không , thank bạn nhiều lắm
26/11/12
Mình xin đưa ra một phương án khắc phục cho bạn đó là chuyển comments mặc định của blog sang threaded comments sau đó chỉnh sửa lại tyle và màu sắc cho nó. Về cách thao tác bạn tham khảo tại bài viết này
Nếu có vấn đề gì trong lúc thực hiện cứ comments mình sẽ giải thích cho :) :) :)
26/11/12
Hoặc bạn có thể thay đổi màu nền cho phần comment theo hướng dẫn sau
1.Vào blogger > Mẫu > Chỉnh sửa HTML
2.Chèn code bên dưới vào trước thẻ ]]></b:skin>
.comments-content{
background: [co="blue"]#xxxxxx[/co];
}

Với [co="blue"]xxxxxx[/co] là mã màu. Xem bảng mã màu tại đây
3.Lưu lại template
Anonymous
29/12/12
(fu)
Bạn ơi, mình đang gặp 1 vấn đề với code cây thư mục này, bạn có thể giúp mình sửa đc ko?

+ Hiện tại: Khi nhấn vào biểu tượng folder hoặc tiêu đề thư mục thì các folder con đc mở.

+ Bạn sửa thành: Chỉ khi nhấn vào biểu tượng folder thì mở (nhấn vào tiêu đề ko mở).

Thanks bạn! :)
Bạn có thể vào đây để dowload phần mềm tạo tree menu với nhiều tùy chọn

Cảm ơn bạn đã ghé thăm Troll VL !
» Tạm thời ngăn không cho comment với chế độ ẩn danh vì có một số bạn không có thành ý cố tình spam. Mong các bạn thông cảm!
» Bạn nên viết bằng Tiếng Việt có dấu để mọi người dễ đọc, dễ bình luận
» Để liên hệ,góp ý và đóng góp bài viết bạn click vào đây
Sử dụng các thẻ sau cho comments
» Chèn nội dung vào blockquote <b rel="quote">Nội dung blockquote</b>
» Chèn nội dung vào note <em rel="note">Nội dung note</em>
» Chèn code vào khung pre <i rel="pre">Nội dung code</i>
» Chèn hình ảnh <i rel="image">Link hình ảnh</i>
» Chèn video từ youtube [youtube]link video[/youtube]
» Chèn link <i rel="anchor">Link</i>

Insert Emoticons
:cuoi
:hihi
:thank
:haha
:meu
:cry
:oaoa
1cuoi
:D
@@
:p
:o
:vi
:ko
:ca
:why
:xin
:lanh
:im
:aoi
:ado
:mda
:tat
0:khoa
a:ab
k:ac
q:ad
w:ae
e:af
l:ag
g:ah
8:ai
9:aj
9:ag
:9a
*Phải có khoảng trống trước các code mới hiển thị mặt cười


Mã Hóa Code Tạo và xem trước comments Cancel Reply
-->