這兩天在修改dedeeims網站的時候,阿頭要求在首頁調用欄目為單頁內容的欄目,由于單頁欄目沒有具體標簽,因此通過{dede:sql}這個標簽來調用,如果沒有修改的話,單頁內容欄目的數據存在數據庫dede_arctype這個表里面,所以可以這樣調用:
- {dede:sql sql="select * from dede_arctype where id=69"}
- [field:typename/]<!--這個是欄目名稱-->
- [field:content function=cn_substr(Html2Text(@me),80)/] <!--截取部分文字作為簡介-->
- {/dede:sql}
關于調用這部分,網上有不少相關的內容,但是問題來了,在排版上要求要配上縮略圖,但是單頁內容沒有縮略圖啊,偶的神啊,繼續(xù)鉆研去,先在網上搜了一下,找到一些方法,其中有一個方法來自百度空間星火視頻教程里面的,具體內容不說,他的方法是自己構建一個函數來獲得文章的第一張圖片,函數如下:
- function firstimg($str)
- {
- $str1 = str_replace('"','',$str);
- preg_match('/<img[^>]*>/i',$str1,$str2);
- $str3 = array_shift($str2);
- $str4 = str_replace('<img ','',$str3);
- $str5 = '<img class=pic '.$str4;
- $str6 = str_replace(' alt= ',' ',$str5);
- return $str6;//開源軟件:Vevb.com
- }
在dedeeims的安裝目錄include下面新建一個extend.func.php,這個是dedeeims留給用戶開發(fā)的自定義函數接口,在common.func.php最后有相關的兩行代碼,建好文件后,把上面的代碼復制進去,然后在需要的地方用.
[field:body function=firstimg('@me')/]
調用(單頁的時候,body改為content),上面的代碼可以拿到圖片,但是有一個問題,它還會把所有的img標簽里面的所有圖片屬性都一起拿到,dedeeims的fck可視化編輯器編輯內容時會有很多額外的標簽,尤其是不懂html代碼的網絡編輯編過的內容,更是慘不忍睹,圖片調用出來后,整個首頁版面都變了,而且不好寫css樣式,我去,繼續(xù)改,后來想了一想,我把它改成了這樣,算是完成了,代碼貼出如下,如果有什么不對的地方,請指教:
- //獲取單頁文章內容第一張圖片
- function firstimg($str)
- {
- $str1 = str_replace('"','',$str);//獲得文章所有內容,去掉所有的雙引號(" "),因為dede核心不允許雙引號
- preg_match('/<img[^>]*>/i',$str1,$str2);//獲得所有的圖片,保存到$str2
- $str3 = array_shift($str2);//利用array_shift()獲得文章內容第一張圖片
- preg_match_all('#src/s*=/s*["/']?([^/s"/']*)#i', $str3 , $TheSrc);//由于dede 的fck 編輯器會帶上很多屬性,為了方便控制樣式,只獲取圖片的src地址
- //通過pint_r($TheSrc)打印得到下面一個二維數組,區(qū)別在于一個前面有src=,一個沒有。取沒有src的:$TheSrc[1][0]
- //Array
- //(
- //[0] => Array([0] => src=.../uploads/allimg/120721/4_120721152925_1.jpg )
- //[1] => Array ( [0] => .../uploads/allimg/120721/4_120721152925_1.jpg ) //開源軟件:Vevb.com
- // )
- return $TheSrc[1][0];
- //返回src地址,前面調用可以用[filed:filedname function=firstimg(@me)]調用 具體為<img src="[filed:filedname function=firstimg(@me)]"/> 可隨意控制樣式
- }
新聞熱點
疑難解答
圖片精選