织梦自定义php文件,dedecms系统的扩展函数文件extend.func.php(织梦自定义函数方法) - 小俊学习网...

本文介绍了如何在织梦系统extend.func.php中编写自定义函数,如数据表调用、栏目图片获取、内容字段图片提取及栏目内容调用。通过实例展示了如何在文章列表和详情页中使用这些函数,助力二次开发和内容展示的灵活性。
摘要由CSDN通过智能技术生成

在织梦系统有一个extend.func.php文件,我们可以在里面写上自定义函数来实现自己想要的功能。

9965d8253542a166379b46568d23cc6d.png

在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("/]*)\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 .= "%5C%22%24imgsrc%5C%22";

$i++;

}

return $result;

}

// $result .= "%5C%22%24imgsrc%5C%22"; 这里可以给调用图片增加一些样式等。

// 例如:$result .= "%5C%22%24imgsrc%5C%22";

函数调用方法

在 dede:arclist 和 dede:list 标签中调用代码如下:

{dede:arclist addfields='body' channelid='1' row='8'}

[field:body function=getbodypics(@me,3)/]

{/dede:arclist}

{dede:list}

[field:body function=getbodypics(@me,3)/]

{/dede:list}

在内容模板中的调用代码:

{dede:field.body function=getbodypics(@me,3)/}

4、根据栏目id调用栏目内容

在include/extend.func.php文件增加函数

//用typeid调用栏目内容

function get_typecontent($typeid){

global $dsql;

$rs=$dsql->getOne("select content from #@__arctype where id='$typeid'");

return $rs['content'];

}

模板代码

{dede:type typeid=31}[field:id function='get_typecontent(@me)'/]{/dede:type}

...

历史上的今天:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值