如何在ECShop中实现根据文章分类或ID自动选择首张图片作为缩略图展示?

avatar
作者
筋斗云
阅读量:0
在ECShop中,可以通过文章分类或ID自动获取内容的第一张图片作为缩略图进行展示。

以下是关于如何设置ECShop文章分类或ID自动取内容第一张图作为缩略图展示的教程:

如何在ECShop中实现根据文章分类或ID自动选择首张图片作为缩略图展示?

修改lib_article.php文件

1、找到并打开网店根目录/includes/lib_article.php文件

在该文件的最尾处(大概在行83处),增加以下代码:

```php

function GetImageSrc($body) {

if( !isset($body) ) {

return '';

} else {

preg_match_all ("/<(img|IMG)(.*)(src|SRC)=[\"|'|]{0,}([h|\/].*(jpg|JPG|gif|GIF|png|PNG))[\"|'|\s]{0,}/isU",$body,$out);

return $out[4];

}

}

```

2、添加get_article_new函数

在上述文件中,继续添加如下代码:

```php

function get_article_new( $id = array(0), $getwhat = '', $num = 0, $isrand = false ) {

$wherestr = '';

$search = '';

if( $getwhat == 'cat' ){

$search = 'cat_id=';

} else {

$search = 'article_id=';

}

for( $i=0; $i<count($id); $i++ ) {

if( $i<count($id)-1 ) {

$wherestr = $wherestr . $search . $id[$i] . ' or ';

} else {

$wherestr = $wherestr . $search . $id[$i];

}

如何在ECShop中实现根据文章分类或ID自动选择首张图片作为缩略图展示?

}

$sql = 'SELECT * FROM ' . $GLOBALS['ecs']->table('article') .

' WHERE (' . $wherestr . ') AND (is_open = 1) ';

if ( $isrand == true ) {

$sql .= ' ORDER BY rand()';

} else {

$sql .= ' ORDER BY add_time DESC, article_type DESC, article_id DESC';

}

if ( $num > 0 ) {

$sql .= ' LIMIT ' . $num;

}

$res = $GLOBALS['db']->getAll($sql);

$articles = array();

foreach ($res AS $id => $row) {

$articles[$id]['title'] = $row['title'];

$articles[$id]['url'] = 'article.php?id=' . $row['article_id'];

$articles[$id]['addtime'] = date($GLOBALS['_CFG']['date_format'], $row['add_time']);

$articles[$id]['content'] = $row['content'];

$imgsrc = GetImageSrc($row['content']);

$articles[$id]['img'] = $imgsrc[0];

}

return $articles;

}

```

增加msg_img.lbi库文件

1、在模板目录的库文件目录中增加msg_img.lbi库文件

添加以下代码到msg_img.lbi文件中:

```php

$this->assign( 'img_art1', get_article_new(array(2),'cat',6) );

```

如何在ECShop中实现根据文章分类或ID自动选择首张图片作为缩略图展示?

添加CSS样式:

```html

<style type="text/css">

.img_art{ width:273px; height:130px; border:#FFF solid 1px; float:left; padding-bottom:10px; overflow:hidden; }

.title { background-color:#D3C08D; height:22px; color:#765935; padding:5px 5px 0px 5px; font-weight:bold;}

.content { padding:5px;}

.Limg {width:100px; height:100px; border:#E0E0E0 solid 1px; padding:1px; text-align:center; margin-right:2px; float:left;}

.Limg img {width:100px; height:100px; border:0px; }

.rcont { width:155px; float:left;}

.rcont li {padding-left: 2em;line-height: 180%;background-image: url(images/news_arrow.gif);background-repeat: no-repeat;background-position: 12px 5px;white-space:nowrap;width:150px;text-overflow:ellipsis;overflow:hidden;}

.rcont a:visited, .rcont a:link {color: #9A6F4A;text-decoration: underline;}

.rcont a:hover {color: #9A6F4A;text-decoration: underline;}

</style>

```

HTML部分:

```html

<div class="img_art">

<div class="title">公司新闻</div>

<div class="content">

<!-{if $img_art1} -->

<!--{foreach from=$img_art1 item=aimg1 name="artimg1"}-->

</div>

</div>

```

通过以上步骤,您就可以在ECShop中实现文章分类或ID自动取内容第一张图作为缩略图的功能,如果有任何疑问,请参考以下相关问题与解答部分:

相关问题与解答

问题解答
如何在ECShop首页调用文章内的缩略图? 您可以在ECShop首页的index.php文件中,使用类似$smarty->assign('class_articles_5', index_get_class_articles(5,3));这样的代码来调用指定分类的文章,并结合上文提到的GetImageSrc函数获取缩略图。
如果文章内容中没有图片,如何处理缩略图的显示? 您可以在GetImageSrc函数中增加一个判断条件,如果没有找到图片,则返回一个默认的图片路径,例如return 'images/ECSHOP_CX.png';

到此,以上就是小编对于“ecshop教程:文章分类或ID自动取内容第一张图做为缩略图展示”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!