在DedeCMS(织梦内容管理系统)中,调取文章正文中的图片可以通过多种方法实现,以下是几种常见的方法:
方法一:调用全部图片
1、环境准备:确保织梦版本为DedeCMS V5.7 SP1正式版或以上,PHP版本为7.0.2或通用版本,MySql版本为5.6或5.2以上。
2、代码实现:
找到文件:include/extend.func.php
在文件最下方添加以下代码:
“`php
function Getimgs($aid, $num = 0, $style = ”){
global $dsql;
$imgurls = ”;
//$row = $dsql > getone("Select body Fromdede_addonarticle
where aid=’$aid’"); //若数据库前缀为dede_,则注释此行
$row = $dsql > getone("Select body From#@__addonarticle
where aid=’$aid’");
$imgurls = $row[‘body’];
preg_match_all("/<[img|IMG].*?src="(.*?)".*?/>/", $imgurls, $wordcount);
$count = count($wordcount[1]);
if ($num > $count || $num == 0)
{
$num = $count;
}
for($i = 0;$i < $num;$i++){
if($style == ‘li’)
{
$imglist .='<li><a href="#’.$i.’"><img src="’. trim($wordcount[1][$i]) .’" /></a></li>’;
}else{
$imglist .= ‘<img src="’. trim($wordcount[1][$i]) .’" />’;
}
}
return $imglist;
}
“`
3、调用方式:在需要调用图片的地方使用以下标签:
“`html
{dede:field.id function=Getimgs(@me,5,’li’)/}
“`
其中几个实参 @me(文章id), 5(调用图片数量), ‘li'(两种样式)。
方法二:调用第一张图片
1、修改include/helpers/archive.helper.php文件:
在文件最后添加以下代码:
“`php
/
* 获得某文档的第一个图片
* @param int $aid 文档id
* @return string
*/
if( ! function_exists(‘GetImgs’))
{
function GetImgs($aid)
{
global $dsql;
$query = "select body FROMdede_addonarticle
where aid=’$aid’";
$dsql>Execute(‘body’,$query);
$row = $dsql>GetArray(‘body’);
preg_match(‘/<img(.*)>/i’,$row[‘body’],$str);
$GImgs = $str[0];
return $GImgs;
}
}
“`
2、调用方式:在模板中的调用方法为:
“`html
[field:id function=GetImgs(@me)/]
“`
或者:
“`html
{dede:field name=’litpic’ function="firstimg(@me)"/}
“`
方法三:列表页调用文章正文内容
1、使用dede:arclist标签:
在模板中使用以下代码:
“`html
{dede:arclist flag=’h’ row=’10’}
<h1><a href='[field:arcurl/]’>[field:title/]</a></h1>
<p>[field:id runphp=’yes’] $aid = @me; $row = $GLOBALS[‘dsql’]>GetOne("Select body From ‘dede_addonarticle’ where aid=’$aid’ "); @me = cn_substr(strip_tags("{$row[‘body’]}"),400);[/field:id]<a href='[field:arcurl/]’>【阅读详细】</a></p>
{/dede:arclist}
“`
这种方法可以调用文章内容的一部分,通过调整数字400来设置需要调用的内容长度。
方法四:调用文章第一张图片(非缩略图)
1、修改include/extend.func.php文件:
在文件末尾添加以下代码:
“`php
function GetFirstImg($arcid){
global $dsql;
$query= "SELECT body FROMdede_addonarticle
where aid=’$arcid’";
$row = $dsql>GetOne($query);
preg_match_all("/<img.*?src=[/’/"](.+?)[/’/"].*?>/i", $row[‘body’], $match);
return $match[1][0];
}
“`
2、调用方式:在模板中的调用方法为:
“`html
{dede:field name=’litpic’ function="GetFirstImg(@me)"/}
“`
这种方法可以直接调用文章的第一张图片。
FAQs
1、如何在文章中调用多张图片?
可以使用第一种方法,通过在include/extend.func.php
文件中添加Getimgs
函数,然后在模板中调用该函数,并指定调用图片的数量和样式,调用五张图片并以li
列表形式展示,可以在模板中使用{dede:field.id function=Getimgs(@me,5,'li')/}
。
2、如何调用文章的第一张图片而非缩略图?
可以通过修改include/helpers/archive.helper.php
文件,添加GetImgs
函数,并在模板中调用该函数,如[field:id function=GetImgs(@me)/]
,另一种方法是修改include/extend.func.php
文件,添加GetFirstImg
函数,并在模板中调用该函数,如{dede:field name='litpic' function="GetFirstImg(@me)"/}
,这两种方法都可以实现调用文章的第一张图片。
在织梦DedeCMS中调取文章正文图片,可以通过以下步骤进行:
1. 确定图片标签
需要确认文章正文中的图片是通过哪种方式插入的,织梦DedeCMS中,图片通常是通过<img>
标签插入的,以下是几种常见的图片插入方式:
纯HTML方式:使用<img>
标签直接插入图片。
编辑器方式:使用织梦自带的编辑器(如Ueditor、FCKeditor等)插入图片。
2. 使用模板标签
织梦DedeCMS的模板标签可以方便地获取文章内容中的图片,以下是一些常用的模板标签:
{dede:field.name/}:获取文章的字段值,如标题、内容等。
{dede:field.image/}:获取文章中第一张图片的地址。
示例:
获取文章内容中第一张图片:
<img src="{dede:field.image/}" alt="{dede:field.title/}" />
获取文章内容中所有图片:
{dede:field.content/} <!在这里可以通过正则表达式或其他方法提取图片标签 >
3. 使用正则表达式
如果需要从文章内容中提取所有图片,可以使用正则表达式来匹配<img>
示例(使用PHP):
<?php // 获取文章内容 $content = '{dede:field.content/}'; // 使用正则表达式匹配所有图片 preg_match_all('/<img.*?src="([^"]*)".*?>/i', $content, $matches); // 输出所有图片地址 foreach ($matches[1] as $imgUrl) { echo "<img src="$imgUrl" />"; } ?>
4. 注意事项
权限与安全:确保访问文章内容的用户有相应的权限,并且注意防止XSS攻击。
图片尺寸:可能需要根据实际需求调整图片尺寸。
响应式设计:如果网站采用响应式设计,需要确保图片在不同设备上都能正常显示。
通过以上步骤,您应该能够从织梦DedeCMS中成功调取文章正文图片。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1119886.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复