ecshop教程:文章分类或ID自动取内容第一张图做为缩略图展示

(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|
(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>
 
过程一是程序的主体功能,过程二是ecshop模板显示时候的样式表现。
下面讲解一下过程二里面的重要一点的代码:
$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文件
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

上一篇、下一篇文章代码: ?php previous_post_link(%link,) ??php next_post_link(%link,) ? 该代码解析出来的代码大概如下: a href= rel=external nofollow rel=external nofollow /aa href= rel=external nofollow rel=external nofollow /a 通过 get_pr
WordPress目前在最近的版本中为所有需要新窗口打开的链接都自动添加了新的 noopener noreferrer 属性。noopener noreferrer 属性并不是新发布的标准,但 WordPress 4.7.4 版开始的编辑器默认都会添加该属性。新窗口打开超链接的属性 target=_blank 增加 rel=
已经有织梦UTF的站点,需要进行MIP改造,并且是新建一个MIP站点,实现和主站数据通用的话,可以按照以下操作。 我们得宗旨是,尽量不动主站任何东西,所以在这里我对MIP站点的改造,只在主站进行了一项操作 就是添加一个MIP地址的系统参数。 步骤如下: 进入
一、环境要求: Discuz x3.2 UTF8源码安装,服务器环境满足discuz的安装条件之外, 站点须支持 https,否则mip组件将无法使用(主要是组件的要求) 。 二、安装步骤: 1、 安装官方 x3.2版本。 2、登陆后台,开启手机版 3、安装mip模板,先备份手机版模板文件t
由于多数同学对之前教程看不懂以及修改最新mip官方最新调用js和css,所有简化了教程! 第一步:下载附件一;第二步:将附件中e文件夹上传覆盖根目录(安全期间可提前备份e目录) 第三步:将附件三张图片上传根目录 第四步:打开帝国后台模板管理模板组管理导
这里所说的留言板页面,是指独立的ecshop那个留言板栏目(message.php),而不是指商品详情页面底部的用户评论区,通过这个方法,用户可以引用商品的信息,进行商品的讨论和留言。那么在这里留言板里如何才能将商品的缩略图显示出来呢,现在来说一说具体的方