首先附上网上的方法:
文章列表刚进行了个性化,想有些分类调用图片显示,可调不了file_url的图片.
方法如下:
在includes/lib_article.php
查找
<div> <div id="code0"> <ol> <li>$arr[$article_id]['content'] = $row['content'];</li> <li>$arr[$article_id]['article_img'] = $row['article_img'];</li> </ol> </div> </div>
后面加入
<div> <div id="code1"> <ol> <li>$arr[$article_id]['file_url'] = $row['file_url'];</li> </ol> </div> </div>
然后模板页中调用,即可
<div> <div id="code2"> <ol> <li> src=\'#\'" /li> </ol> </div> </div> <div><em> </em></div>
但是这种方法发现调用的图片必须是在发布文章的时候作为附件上传的文章,如果碰到的是文章中中插入的是一些远程的连接,就不能实现功能了。要想实现调用文章中的第一张图片作为缩略图,根据网上的经验做出如下:
原理:使用正则匹配判断分离文章中的<img标签。
1、打开ecshop目录下的include目录下的lib_article.php。
找到
if ($requirement != '') { $sql = 'SELECT article_id, title, author, add_time, file_url, open_type' . ' FROM ' .$GLOBALS['ecs']->table('article') . ' WHERE is_open = 1 AND title like \'%' . $requirement . '%\' ' . ' ORDER BY article_type DESC, article_id DESC'; } else { $sql = 'SELECT article_id, title, author, add_time, file_url, open_type, description' . ' FROM ' .$GLOBALS['ecs']->table('article') . ' WHERE is_open = 1 AND ' . $cat_str . ' ORDER BY article_type DESC, article_id DESC'; }
替换为:
if ($requirement != '') { $sql = 'SELECT article_id, title, author, content, add_time, file_url, open_type' . ' FROM ' .$GLOBALS['ecs']->table('article') . ' WHERE is_open = 1 AND title like \'%' . $requirement . '%\' ' . ' ORDER BY article_type DESC, article_id DESC'; } else { $sql = 'SELECT article_id, title, author, content, add_time, file_url, open_type, description' . ' FROM ' .$GLOBALS['ecs']->table('article') . ' WHERE is_open = 1 AND ' . $cat_str . ' ORDER BY article_type DESC, article_id DESC'; }
上面是在循环文章列表的时候将文章的内容从数据库中查询出来。
2、找到:
$arr[$article_id]['url'] = $row['open_type'] != 1 ? build_uri('article', array('aid'=>$article_id), $row['title']) : trim($row['file_url']);
在他的下边新增一行写入:
preg_match_all("/<img(.*?)src=\"(.*?)\"[^>]*\/>/is",$row['content'],$myarr); if($myarr[2][0]){ $arr[$article_id]['thum_url'] = $myarr[2][0]; }
3、此时在articel_cat.dwt中用{$article.thum_url}标签就可以调出文章中第一张图片的路径。