织梦123,专注于模板建站,让建站变得简单!QQ客服
织梦123-完整无错的dedecms织梦模板|网站源码下载站
当前位置 : 当前位置 :织梦123 > 织梦教程 > 织梦dedecms根据栏目id调用栏目内容、body中的图片(可多张)

织梦dedecms根据栏目id调用栏目内容、body中的图片(可多张)

在dedecms中,一般在文件extend.func.php写入自定义函数,实现二次开发的代码。路径:\include\extend.func.php
 
1、调用任意数据表
 
//自定义函数调用数据表    
function table($table, $field, $id){
global $dsql;
$primarys = array();
$table = strpos($table, '#@_') === false?(strpos($table, 'dede_') === false?'dede_'.$table:str_replace('dede_','dede_',$table)):$table;
$dsql -> Execute("me","SHOW COLUMNS FROM `$table`");
while ($r = $dsql->GetArray()){
if($r['Key'] == 'PRI') $primarys[] = $r['Field'];
}
if(!empty($primarys)){
$primary = $primarys[0];
$result = $dsql -> GetOne("SELECT `$field` FROM `$table` WHERE `$primary`= $id");
}
return isset($result[$field])?$result[$field]:$result[$field];
}
 
在我们需要调用数据的地方加上调用代码:
 
{dede:field.字段 function='table("要调用的数据表","要调用的字段",@me)'/} //内容页,首页调用代码
[field:字段 function='table("要调用的表名","要调用的字段",@me)'/] //列表页频道页调用代码
 
举例
 
{dede:field.id function='table("dede_addonarticle","body",@me)'/}
 
调用id为本文id的文章的body部分
 
2、获取本栏目图片,判断本栏目没有图片调用顶级图片
 
/*
  * 获取本栏目图片,只有找不到时候才返回顶级图片
  * $typeid 栏目id
  * $default_pic 找不到时候默认图片
  * [field:id function='get_channel_pic(@me)'/]
  * */
function get_channel_pic($typeid,$default_pic="/images/defaultpic.gif")
{
        global $dsql;
        $row = $dsql->GetOne("SELECT arcpic,topid FROM dede_arctype WHERE id= $typeid");
if(empty($row['arcpic'])){
        if(0 == $row['topid']){
                return $default_pic;
        }else{
                $row1 = $dsql->GetOne("SELECT arcpic FROM dede_arctype WHERE id= $row[topid]");
                return (empty($row1['arcpic']))?$default_pic:$row1['arcpic'];
        }
}else{
        return $row['arcpic'];
}
}
 
3、调用body中的图片(可多张)
独立提取 body字段中(可以是自定义字段名称)图片,可以自定义调用图片数量
 
代码加入到 \include\extend.func.php 文件中
 
function getbodypics($string, $num)
{
preg_match_all("/<img([^>]*)\s*src=('|\")([^'\"]+)('|\")/",$string,$matches);
$imgsrc_arr = array_unique($matches[3]);
$count = count($imgsrc_arr);
$i = 0;
foreach($imgsrc_arr as $imgsrc)
{
if($i == $num) break;
$result .= "<img src=\"$imgsrc\"/>";
$i++;
}
return $result;
}

// $result .= "<img src=\"$imgsrc\"/>"; 这里可以给调用图片增加一些样式等。
// 例如:$result .= "<img class='imgs' src=\"$imgsrc\"/>";
 
函数调用方法
在 dede:arclist 和 dede:list 标签中调用代码如下:
 
{dede:arclist addfields='body'  channelid='1' row='8'}  
[field:body function=getbodypics(@me,3)/]
{/dede:arclist}
<!-- body 可以改为自定义字段名称。 channelid为内容模型id,数字3,为调用图片数量,可以根据需要更改 -->

{dede:list}
[field:body function=getbodypics(@me,3)/]
{/dede:list}
<!--body 可以改为自定义字段名称,但是需要在新建自定义字段时,一定要选择 【使字段可以在列表的底层模板中获得】-->
 
在内容模板中的调用代码:
 
{dede:field.body function=getbodypics(@me,3)/}
<!-- body 可以改为自定义字段名称,3为调用图片数量。-->
 
4、根据栏目id调用栏目内容
在include/extend.func.php文件增加函数
 
//用typeid调用栏目内容
function get_typecontent($typeid){
    global $dsql;
    $rs=$dsql->getOne("select content from dede_arctype where id='$typeid'");

return $rs['content'];
}
 
模板代码
 
 {dede:type typeid=31}[field:id function='get_typecontent(@me)'/]{/dede:type}

【声明】织梦123除付费类源码经过测试外,其他素材未做测试,不保证完整性,网站上部分源码仅限学习交流,请勿用于商业用途。如损害你的权益请联系客服给予处理,谢谢支持。

最新模板推荐

二维码
意见反馈
×