你可以使用dede标签的内置函数runphp来获取文章里的第一张图片。示例代码如下:,,“php,{dede:field name='body' function='GetFirstImage(@me)'/},` ,,GetFirstImage是一个自定义函数,用于从文章内容中提取第一张图片。具体实现可以参考以下代码:,,`php,function GetFirstImage($str){, preg_match('//i',$str,$match);, return $match[1];,},“ ,,将以上代码添加到include/common.func.php文件中即可。
在DedeCMS织梦内容管理系统中,获取文章里的第一张图片可以通过修改系统源代码实现,以下是具体步骤和代码示例:
第一步:修改include/extend.func.php 文件
1、打开文件:找到并打开include/extend.func.php 文件。
2、添加函数:在文件的最下面插入以下函数代码:
function GetFirstImg($arcid){ global $dsql; $query = "select body FROMdede_addonarticle where aid='$arcid'"; $row = $dsql>GetOne($query); $preg = "/<img.*?src=['"](.+?)['"]/i"; preg_match_all($preg, $row['body'], $match); return $match[1][0]; }第二步:修改include/taglib/arclist.lib.php 文件
1、打开文件:找到并打开include/taglib/arclist.lib.php 文件。
2、查找函数:找到function lib_arclistDone() 函数,大概在475行左右。
3、添加判断语句:在这个函数中找到$row['litpic'] 字段,然后添加以下代码:
if (GetFirstImg($row['id']) != "") { $row['litpic'] = GetFirstImg($row['id']); }通过上述两步修改,可以在DedeCMS织梦系统中调用文章内的第一张图片而非缩略图,如果文章中没有图片,则仍会显示缩略图,这种方法适用于DedeCMS v57 sp1版本,其他版本可能需要稍作调整。
相关问答FAQs
问题1:如何在DedeCMS中调用文章内容中的多张图片作为缩略图?
答:可以通过修改include/extend.func.php 文件中的函数来实现,可以使用以下代码来提取文章中的第n张图片作为缩略图:
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; }}然后在模板标签中使用{dede:field.id function=getBodyonepic(@me)/} 来调用。
问题2:如何确保在没有图片的情况下使用默认缩略图?
答:在上述代码的基础上,可以添加一个判断条件,如果没有匹配到图片,则使用默认缩略图,具体实现如下:
if (count($match[1]) > 0) { $row['litpic'] = $match[1][0];} else { $row['litpic'] = '/images/defaultpic.gif'; // 默认缩略图路径}这样,在没有图片的情况下,系统会自动使用默认的缩略图。
| 问题 | 解答 |
| 如何使用Dede织梦获取文章中的第一张图片 | 可以通过以下步骤实现: |
| 1. 获取文章内容 | 使用Dede织梦的标签功能,获取文章的内容,可以使用标签{dede:field.body/} 来获取文章的正文内容。 |
| 2. 正则表达式匹配图片链接 | 使用正则表达式在获取到的文章内容中匹配第一张图片的链接,以下是一个示例正则表达式: |
| 3. 提取图片链接 | 通过正则表达式提取匹配到的图片链接。 |
| 4. 使用提取到的图片链接 | 将提取到的图片链接用于后续的操作,如显示图片或保存图片等。 |
示例代码(PHP):
<?php// 获取文章内容$content = '{dede:field.body/}';// 正则表达式匹配图片链接$pattern = '/<img.*?src="(.*?)".*?>/';// 提取图片链接$matches = [];preg_match_all($pattern, $content, $matches);// 获取第一张图片链接$image_url = $matches[1][0] ?? '';// 使用提取到的图片链接// ...?>注意:
以上代码仅为示例,实际应用中可能需要根据具体情况进行调整。
正则表达式可能需要根据实际HTML结构进行调整。

QQ客服