单纯的php标签中是无法获取其他字段的,得利用[field:array runphp='yes']@me['title']...等等[/field:array]再利用全局变量$GLOBLAS['autoindex']获取当前的索引值加以判断,并输出不同的样式,如下(注意是在列表页中):
<!-- 列表 -->
<ul id="data-list" class="hot-news-list clearfix" >{dede:arclist flag="h" row="30" addfields='body' titlelen="24" infolen="110" channelid='1'}
[field:array runphp='yes']
//获取body前4张图片 如果不足4张就用缩略图代替
$patten='/<img.*src=[\'|\"]?(.*?)[\'|\"]\s/i';
preg_match_all($patten,@me['body'],$res);
$imgList=$res[1];
$len=count($imgList);
if($len<4){
$imgList=array_pad($imgList, 4, 'http://www.jirou.com/images/defaultpic.gif');//终于可以
}
/*
if($len<4){
for($i=$len;$i<=(4-$len);$i++){
//$imgList[$i]=@me['litpic']; 不行
// array_push($imgList,'默认图片');也不行
$imgList[$i]='默认图片';
//目测是这样的写法不支持
}
*/
$title=@me['title'];
$litpic=@me['litpic'];
$arcurl=@me['arcurl'];
$pubdate=date('Y-m-d',@me['pubdate']);
@me=($GLOBALS['autoindex']%2)===0?"<li class='hot-news-list-detaile hot-news' >
<h6>$title</h6>
<a href='{$arcurl}'>
<ul>
<li> <img src='{$imgList[0]}' class='hot-news-list-img'></li>
<li> <img src='{$imgList[1]}' class='hot-news-list-img'></li>
<li> <img src='{$imgList[2]}' class='hot-news-list-img'></li>
<li> <img src='{$imgList[3]}' class='hot-news-list-img'></li>
</ul>
</a>
<span>$pubdate</span>
</li>":"<li class='hot-news-list-detaile'>
<a href='{$arcurl}'><img src='{$litpic}' alt='' class='hot-news-list-img'>
<h6>$title</h6>
<span>$pubdate</span>
</a>
</li>";
[/field:array]
{/dede:arclist}
</ul>
<!-- 列表end -->
note:在runphp中用for循环写的代码一直不成功,目测是织梦模板不支持这样的写法,试了好多方法,终于支持array_pad()的写法。