dedecms 基本包含了一個常規網站需要的一切功能,擁有完善的中文學習資料,很容易上手。學會dedecms 的模板修改、欄目新增、內容模型新增和常用的標簽調用方法後,即便我們不懂 php 語言也能獨立完成一個網站了。
在百度網盤中分享,織夢CMS模板制作手冊 http://pan.baidu.com/s/1miQ4HmS
對於本次項目中使用到的方法和技巧總結如下:
一、標簽調用
1. title(標題調用):
首頁:{dede:global.cfg_webname/}。cfg_webname 是網站名稱的變量名,在 dedecms 後台-->系統基本參數-->站點設置中能發現。
列表頁(或單頁面):{dede:field.seotitle/} | {dede:global.cfg_webname/}。{dede:field.seotitle /} 是 seo 標題,在 dedecms 後台,對應欄目的高級選項中能發現,需要保證 seo 標題已經填寫了。而後面加上 | 和網站名稱,是一般網站的做法,也可以不加。
內容頁:{dede:field.title/} | {dede:global.cfg_webname/}。{dede:field.title/} 是內容頁調用的標題方法,不僅在 title 標簽裡可以這樣調用,在其他地方需要用到標題時都可以這樣調用。比如我在項目中使用到的在其它地方:
<nav> <!-- 在手機端,下面的標題才顯示 --> <h1>{dede:field.title/}</h1> <!-- 在手機端,下面的菜單通過切換菜單按鈕進行顯示和隱藏 --> <button id="menu"><i class="iconfont icon-menu"></i></button> <ul class="nav-list clearfix"> <!-- 當前頁面的 a 加上 active 類 --> {dede:include filename='wqxf_nav.htm'/} </ul> </nav>
field 是用於獲取特定欄目或者檔案的字段值及常用的環境變量值。
對於內容頁,{dede:field.title/} 這種形式的調用方法( field.字段/ )能調用很多我們需要的內容。
{dede:field.shorttitle/} 副標題,{dede:field.keywords/} 關鍵詞,{dede:field.description/} 簡介...
首頁和內頁,{field:title/} 這種形式的調用方法( field:字段/ )能調用很多我們需要的內容。
2. 模板的調用:
很多網站的頁頭和頁尾都是一樣的,這種情況下,我們可以把這樣相同的部分提取出來,單獨新建一個模板存放。如果有修改的話,只需要修改一處就可以了,這和把網站的 css 單獨寫在一個文件裡並獨立出來是一個道理。
例如:
我把網站的頁尾部分單獨新建了一個模板存放,取名為 wqxf_footer.htm。當某一個頁面需要用到頁尾部分的代碼時,直接可以這樣:{dede:include filename='wqxf_footer.htm'/}。
同樣的,如果網站頁頭部分一樣,可以這樣:{dede:include filename='wqxf_header.htm'/}。wqxf_header.htm 為文件名,裡面是頁頭部分的代碼。
3. 導航:
導航的調用方法,是循環調用網站欄目名稱。以網站導航只有一級為例,將這代碼新建一個模板 wqxf_nav 存放,
<li><a href="/" title="{dede:global.cfg_indexname/}">{dede:global.cfg_indexname/}</a></li> {dede:channel type='top' row='6' current} <li><a href="[field:typelink/]" title="[field:typename/]">[field:typename/]</a> </li> {/dede:channel}
解釋:
(0). 一般網站欄目裡都沒有首頁這個欄目,所以首頁需要單獨單用,沒法循環,首頁不使用模板調用 {dede:include filename="wqxf_nav.htm"} 的方式。
(1). <li><a href="/" title="{dede:global.cfg_indexname/}">{dede:global.cfg_indexname/}</a></li> 中 / 為網頁主頁鏈接(在系統參數的站點設置裡可以發現),它的變量名為 cfg_indexurl,所以也可以使用 {dede:global.cfg_indexurl/} 調用。
(2). {dede:global.cfg_indexname/} 調用主頁鏈接名,cfg_indexname 是主頁鏈接名的變量名。
(3). type="top" 表示調用頂級欄目,也就是一級欄目。
(4). row="6" 表示調用六條數據,也就是六個欄目,出首頁這個欄目外,我這裡有六個欄目。如果想要調用全部一級欄目,可以不使用。
(5). current 很重要,它表示當前樣式,比如網站處於當前欄目下,該欄目需要該變一下背景色或者改變文本顏色,我將 class='active' 寫在了 a 鏈接標簽下,當然也可以寫在 li 列表項標簽下,如 current
(6). [field:typelink/] 調用欄目鏈接,[field:typename/] 調用欄目鏈接標題。type 為指定欄目調用標簽。
4. 面包屑導航:
列表頁(單頁):{dede:field name='position'/},內容頁:{dede:field name='position'/} > {dede:field.title/}。從 dedecms 的系統參數的核心設置裡可以發現,欄目位置的間隔符號是 " > ",所以我們也使用這種方式增加內容頁的標題。
也可以這樣按照自己寫頁面的 html 那樣,原樣寫出來,如:
<nav class="breadcrumbs container"> <ol> <li> <a href="/" title="{dede:global.cfg_indexname/}">{dede:global.cfg_indexname/}</a> </li> <li>{dede:field.seotitle/}</li> </ol> </nav>
這樣做的好處是,不需要修改模板源文件,去除最後的" > ",樣式都是自己控制好的,看起來美觀一些(把自己寫的樣式也貼上,供參考):
/*面包屑導航*/ .breadcrumbs { position: relative; height: 1.7rem; line-height: 1.7rem; margin-top: 1.5rem; } .breadcrumbs ol { position: absolute; top: 0; left: 0; height: 1.7rem; line-height: 1.7rem; } .breadcrumbs ol li { position: relative; display: inline-block; height: 1.7rem; line-height: 1.7rem; padding-left: 1.2rem; color: #999; font-size: 1rem; } .breadcrumbs ol li:before { content: ">"; position: absolute; top: 0; right: -1rem; } .breadcrumbs ol li:first-child { padding-left: 0; } .breadcrumbs ol li:last-child { padding-left: 1.4rem; } .breadcrumbs ol li:last-child:before { content: ""; } /* 第一個 li 的前面不需要添加生成內容 */ .breadcrumbs ol li a { display: block; color: #666; padding-right: .6rem; padding-left: .6rem; transition: all .4s ease .1s; } @media(min-width: 1200px) { .breadcrumbs ol li a:hover { color: #df4526; } }
看起來是下面的效果
這樣做的壞處是,代碼很多不夠簡潔。
5. 欄目內容:
欄目內容是替代原來欄目單獨頁的更靈活的一種方式,通常用於企業簡介之類的用途。官方建議在欄目模板中用{dede:field.content/}調用。
但是這樣做有一個弊端:
當一個欄目下有兩個子集欄目時,這兩個子集欄目中一個新建了自定義的內容模型,一個使用欄目內容發內容。且它們共用一個模板。這種情況下使用 {dede:field.content/} 是調不出內容的。
這時候就用 sql 的方式調用內容:
{dede:sql sql='Select content from xqxf_arctype where id=12'} [field:content/] {/dede:sql}
解釋:
1. xqxf_arctype 是文章類型的數據庫表,xqxf 是數據庫表前綴。
2. id=12 是欄目 id。
首頁也可以這樣調用欄目內容。
以上這 5 點是標簽調用的大的方面,後面還會更新:列表調用,多級欄目調用...