POST TIME:2017-11-13 00:29
織夢的縮略圖變形的問題一直為大家所詬病,在縮略圖問題的處理上,織夢程序確實做的不大好。織夢DedeCMS對縮略圖的處理方式是按比例對正文的第一張圖片進行縮放的,如果圖片尺寸與縮略圖的尺寸不符合,就會造成圖片擠壓或者拉伸從而失真。有一種解決的辦法是采用裁切的方式,按固定的比例對圖片剪裁,來解決縮略圖失真的問題,這種方法可以去看織夢DedeCms5.7縮略圖變形解決方法一文。
今天主要是整理下織夢DedeCMS調取文章正文圖片的方法,雖然在織夢DedeCms批量提取第一張圖片為縮略圖一文中也談到了文章正文圖片的調用,但是哪個是重新生成縮略圖的。今天的這個方法則是調用正文中的第一張圖片,以便有足夠大、足夠清新的圖來進行一些特效、幻燈等的效果處理。實現的方法可以使用織夢的SQL標簽,也可以自定義函數來進行處理。原理是織夢文章的圖片路徑都是存儲在dede_uploads表(默認前綴)里面的,具體的SQL標簽調用可以參考下織夢DedeCMS模板標簽sql調用代碼大全一文。
下面主要說一下采用自定義函數實現調用文章正文內容圖片的方法。在include目錄下的helpers文件夾中的extend.helper.php文件中添加如下的函數:
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 ;
} } |
注意把修改為自己的域名。在首頁或者頻道頁面的模板中使用如下的調用方式調用文章正文圖片。
[field:id function="simgs(@me)"/]
這個函數默認是調用三張正文圖片,可以自己根據情況調整數量和顯示的樣式等信息。這種調用的方式有一些缺點,就是如果圖片的路徑沒有保存到dede_uploads表中,就調用不出來,有些采集軟件發布的文檔就會出現這種情況。更好的方式是直接調用文檔內容,然后正則匹配文檔中的圖片地址,這種方法在以后的文章中再說。
上一篇:如何安裝網上下載的織夢源碼