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结构进行调整。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1202298.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复