需求:
帶標題圖的直接調用標題圖,不帶標題圖的,調用文章的第一張圖片做標題圖,如果文章也沒有圖片,那就調用系統設定的一張圖片。
調用內頁圖片的話,先提取內容頁的字段內容,然后進行正則,得到一個數組,然后判斷數組的長度。
把這個函數放到e/class/connect.php里面,最好是放在//替換列表模板/標簽模板/搜索模板這一段的上方,因為相關代碼都在這一塊,修改方便。
然后再在’$titleurl=sys_ReturnBqTitleLink($r);//鏈接‘這一段的下面加上
’$diyfpic=diy_imgFirst($r);‘ 引入函數;
最后一步:在$listtemp里面加上我們的函數,
$listtemp=str_replace('[!–diyfpic–]',$diyfpic,$listtemp);
這樣就可以做列表模板里面進行調用了。
列表模板里面使用的時候,直接 使用 [!–diyfpic–] 即可。
- function diy_imgFirst($r){
- global $empire,$dbtbpre;
- $fr=$empire->fetch1("select newstext from {$dbtbpre}ecms_news_data_1 where id='$r[id]'");
- $newstext=stripslashes($fr['newstext']);//去除反斜杠并且獲取文章正文內容
- $pattern = "/.*src=\&;([^^]*?)\&;.*/i"; //正則
- preg_match_all($pattern, $newstext, $match);
- if(count($match[1])>=1){
- $diyfpic=$match[1][0];
- }else{
- $diyfpic='/e/data/images/notimg.gif';
- }
- return $diyfpic;
- }
改進版:
- function diy_getimg($r,$n){
- global $empire,$dbtbpre,$class_r;
- $tbname=$class_r[$r[classid]][tbname];
- $fr=$empire->fetch1("select newstext from {$dbtbpre}ecms_".$tbname."_".$r[fstb]." where id='$r[id]'");
- $newstext=stripslashes($fr['newstext']);
- $pattern = "/<img.*?src.*?=.*?[\&;|\&;]([^\s]+\.*?)[\&;|\&;].*?>/i";
- preg_match_all($pattern, $newstext, $match);
- if(count($match[1])>=$n){
- $diypic=$match[1][$n-1];
- }else{
- $diypic='/e/data/images/notimg.gif';
- }
- return $diypic;
- }
完善了下取圖片的正則,將此代碼復制到/e/class/userfun.php文件中(不影響后續程序升級),然后在調用的地方直接調用該函數。不僅僅可以調用第一張圖片
示例:
調用第一張 $pic1=diy_getimg($id,1);
調用第二張 $pic2=diy_getimg($id,2);