DedeCMS使用扩展函数调用任意数据表的方法

织梦系统有一个extend.func.php文件,我们可以在里面写上自定义函数来实现自己想要的功能,比如今天我们要实现扩展函数来调用Dede的任意一个数据表的内容。

首先修改/include/extend.func.php,里面的把这段代码加进去:


//自定义函数调用数据表   

    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部分。