php,{dede:field name='body' function='GetTopImage(@me)'/},
“在DedeCMS中,列表页调用文章内容第一张原图片(非缩略图)的方法如下:
方法一:通过修改include/extend.func.php文件实现
1、修改include/extend.func.php文件:
打开include/extend.func.php
文件。
在文件末尾添加以下代码:
//取第一张图地址 function firstimg($str_pic) { $str_sub = substr($str_pic, 0, 7) . ".jpg"; //删除缩略图字符串最后七位,然后再补上后缀.jpg return $str_sub; }
2、在模板文件中调用:
在模板文件中使用以下标签调用文章的第一张原图:
[field:litpic function='firstimg(@me)'/]
或者:
<img src="{dede:field name='litpic' function="firstimg(@me)"/}" />
方法二:通过自定义函数getBodyonepic实现
1、创建自定义函数:
打开include/extend.func.php
文件。
在文件末尾添加以下代码:
/**
* 文章内容提取第一张图片
*
* @access public
* @param string $id 文档id
* @param string $addField 字段名
* @return string
*/
if(!function_exists('getBodyonepic')) {
function getBodyonepic($id, $addField='body') {
global $dsql;
$row = $dsql>GetOne("SELECT a.litpic,c.addtable FROM #@__archives AS a LEFT JOIN #@__channeltype AS c ON a.channel=c.id where a.id='$id'");
$addtable = trim($row['addtable']);
if($row['litpic'] == '' || $row['litpic'] == '') {
$litpic = $GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';
}
$row = $dsql>GetOne("SELECT $addField FROM$addtable
WHERE aid=$id");
$body = $row["$addField"];
preg_match_all("/<img([^>]*)s*src=('|")([^'"]+)('|")/",$body,$matches);
$imgsrc_arr = array_unique($matches[3]);
$result = $imgsrc_arr[0] ? $imgsrc_arr[0] : $litpic;
return $result;
}
}
2、在模板文件中调用:
在模板文件中使用以下标签调用文章的第一张原图:
[field:id function=getBodyonepic(@me)/]
或者:
<img src="{dede:field.id function=getBodyonepic(@me)/}" />
相关问答FAQs
1、Q1: 为什么需要调用文章的第一张原图而不是缩略图?
A1: 调用文章的第一张原图而不是缩略图可以避免因缩略图变形或显示不完整而影响页面美观和用户体验,原图通常具有更高的分辨率和更完整的内容展示,能够更好地传达信息和吸引用户。
2、Q2: 如果文章内容中没有图片,会显示什么?
A2: 如果文章内容中没有图片,通常会显示一个默认的图片,这个默认图片的路径可以在代码中进行设置,例如在上述代码中的$litpic = $GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';
这一行,如果没有设置默认图片,可能会显示一个空白或占位符。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1225806.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复