设置ecshop文章分类或ID取第一张图作为缩略图
来源:互联网 发布:c语言谭浩强pdf下载 编辑:程序博客网 时间:2024/06/05 18:13
(1)找到 网店根目录/includes/lib_article.php文件,并在最尾处增加以下代码(大概在行83处):
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];
}
}
/**
* 按文章ID号或文章分类ID号取得文章
* @param array $id 文章ID或文章分类ID
* @param string $getwhat 以何种方式取文章.当参数为'cat'时以文章分类ID取,其他都以文章ID取
* @param integer $num 控制显示多少条文章.当参数为0时则全部显示
* @param boolean $isrand 是否随机显示文章.
*/
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];
}
}
$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;
}
(2)在模板目录的库文件目录中增加:msg_img.lbi库文件
代码如下:
<?php
$this->assign( 'img_art1', get_article_new(array(2),'cat',6) );
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<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>
<div class="img_art">
<div class="title">公司新闻</div>
<div class="content">
<!-- {if $img_art1} -->
<!--{foreach from=$img_art1 item=aimg1 name="artimg1"}-->
{if $smarty.foreach.artimg1.index eq 1 }
<div class="Limg">
<a href="{$aimg1.url}" target="_blank"><img src="{$aimg1.img}" alt="{$aimg1.title|escape:html}" /></a>
</div>
{/if}
<!--{/foreach}-->
<div class="rcont">
<ul>
<!--{foreach from=$img_art1 item=ali1 name="artli1"}-->
{if $smarty.foreach.artli1.index neq 1 }
<li><a href="{$ali1.url}" title="{$ali1.title|escape:html}" target="_blank">{$ali1.title|truncate:16:"..."}</a></li>
{/if}
<!--{/foreach}-->
</ul>
</div>
<!-- {else} -->
暂无文章
<!-- {/if} -->
</div>
</div>
过程一是程序的主体功能,过程二是模板显示时候的样式表现。
下面讲解一下过程二里面的重要一点的代码:
$this->assign( 'img_art1', get_article_new(array(2),'cat',6) );
这里是调用程序的get_article_new()函数,参数意思是取文章分类ID号为2,并且取6篇.当然本函数还支持随机显示文章。但这里要注意EC是有缓存机制的,可能在选择了随机的时候没有发现文章有变化,但当重新打开浏览器或过了缓存时间后重新刷新浏览器文章显示就有变化了。
过程二,行25代码
{if $smarty.foreach.artimg1.index eq 1 }
这里控制的是显示偱环中的文章图片第一条文章。如果想左边显示两张图片,则可以适当改动要显示的条件等。
过程二,行34代码
{if $smarty.foreach.artli1.index neq 1 }
这里就是在显示文章列表时不重复已经显示过的图片。
其他基本上都是样式布局了。我是将CSS直接写进了库文件中,这样不用改动原来的STYTLE.css文件
(责任编辑:最模板)
本文转自最模板,原文地址:http://www.zuimoban.com/php/ecshop/501.html
- 设置ecshop文章分类或ID取第一张图作为缩略图
- 文章中获取第一张图片作为文章缩略图
- 织梦 调用文章第一张图片 非缩略图
- dedecms V5.6 批量提取第一个图片作为缩略图(支持文章和图集模型
- 为 ECShop 文章添加缩略图
- ECSHOP调用分类文章
- 织梦dedecms网站列表调用文章或图集的第一张图片原图地址标签
- dede调用文章内第一张图
- dede图片集swf 上传使用图集的第一幅图作为缩略图时小于系统设置时的bug
- ecshop首页调用文章缩略图方法
- dede调用图集第一张图片为缩略图,而且是大图不是缩略图
- wordpress获取文章中第一张图片或第一个视频
- dedecms不生成缩略图提取第一张图片最为缩略图
- MySQL建立一个数据库中有多张表,每个表中都有id作为主键,为什么第一张表会报错?
- php获取文章中第一张图路径
- ecshop调用指定文章分类的方法
- ecshop指定分类文章和产品调用
- ECSHOP调用分类文章,ECSHOP调用公告的方法
- Django模板例子
- 最近遇到的问题
- 位域
- 通信的几个概念
- python 的logging
- 设置ecshop文章分类或ID取第一张图作为缩略图
- cocos2d-x中luajit的使用
- Eclipse快捷键_10个最高效的快捷键
- Deepin Linux Desktop, 截图工具剖析(五) python - lambda, list, dictionary
- 初窥Linux 之 我最常用的20条命令
- 怎样使myeclipse中的js文件不报错
- VC LIST控件使用方法
- 七头猪小组新手训练场第3弹
- 砖块阴影字Bricks