POST TIME:2017-11-13 00:29
織夢的縮略圖變形的問題一直為大家所詬病,在縮略圖問題的處理上,織夢程序確實做的不大好。織夢DedeCMS對縮略圖的處理方式是按比例對正文的第一張圖片進行縮放的,如果圖片尺寸與縮略圖的尺寸不符合,就會造成圖片擠壓或者拉伸從而失真。有一種解決的辦法是采用裁切的方式,按固定的比例對圖片剪裁,來解決縮略圖失真的問題,這種方法可以去看織夢DedeCms5.7縮略圖變形解決方法一文。
今天主要是整理下織夢DedeCMS調(diào)取文章正文圖片的方法,雖然在織夢DedeCms批量提取第一張圖片為縮略圖一文中也談到了文章正文圖片的調(diào)用,但是哪個是重新生成縮略圖的。今天的這個方法則是調(diào)用正文中的第一張圖片,以便有足夠大、足夠清新的圖來進行一些特效、幻燈等的效果處理。實現(xiàn)的方法可以使用織夢的SQL標(biāo)簽,也可以自定義函數(shù)來進行處理。原理是織夢文章的圖片路徑都是存儲在dede_uploads表(默認前綴)里面的,具體的SQL標(biāo)簽調(diào)用可以參考下織夢DedeCMS模板標(biāo)簽sql調(diào)用代碼大全一文。
下面主要說一下采用自定義函數(shù)實現(xiàn)調(diào)用文章正文內(nèi)容圖片的方法。在include目錄下的helpers文件夾中的extend.helper.php文件中添加如下的函數(shù):
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/*** 多縮略圖插件** @return string*/if( ! function_exists('simgs')){function simgs($aid){global $dsql;$arcRow = GetOneArchive($aid);$docdir =$arcRow[typedir];$docurl = str_replace('{cmspath}','http://www.noniu.com',"$docdir");$sql = "SELECT url FROM dede_uploads WHERE arcid='$aid' ORDER BY aid DESC LIMIT 3";$dsql->SetQuery($sql);$dsql->Execute();while ($row = $dsql->GetArray()) {$spics .= "<a href="".$docurl."/$arcRow[aid].html"><img alt="$arcRow[title]" src="$row[url]"></a>";}return $spics;}} |
注意把修改為自己的域名。在首頁或者頻道頁面的模板中使用如下的調(diào)用方式調(diào)用文章正文圖片。
[field:id function="simgs(@me)"/]
這個函數(shù)默認是調(diào)用三張正文圖片,可以自己根據(jù)情況調(diào)整數(shù)量和顯示的樣式等信息。這種調(diào)用的方式有一些缺點,就是如果圖片的路徑?jīng)]有保存到dede_uploads表中,就調(diào)用不出來,有些采集軟件發(fā)布的文檔就會出現(xiàn)這種情況。更好的方式是直接調(diào)用文檔內(nèi)容,然后正則匹配文檔中的圖片地址,這種方法在以后的文章中再說。
