使用织梦的调用方法的时候感觉很简单,但是,有时候有的调用满足不了我们的需求。于是,我们可以自己写调用方法,然后再前端使用


[field:id function=GetUserid(@me,userid)/]

来获取,此处,field:id为我们当前可获取的文章id,GetUserid为我们的方法名,后面在php文件中也要写该方法名的文章,@me为传入参数文章id,userid为我们获取到的用户的id。(前面为思路分析,需要完整代码请拉到底部

想要的需求出来了,(根据文章id获取到该作者的用户id)接下来我们开始分析,可以满足这需求的做法。

1.数据库,我们首先得了解到,我们调用该文章的时候,涉及到的数据库

因为我们是需要调用涉及文章的数据库‘xxxx_archives‘然后我们需要调用涉及用户的数据库‘xxxx_member‘

2.方法,我们需要在PHP文件中创建调用代码,该代码负责调用数据库里的数据传送给前端,起到逻辑处理作用。也就是写一个

function GetUserid($aid,$userid)

3.前端调用方法,也就是开始提到的那个方法

[field:id function=GetUserid(@me,userid)/]

方法合理,开始证实

文件代码:

在 /include/helpers/extend.helper.php中写入function

/**
* 通过aid来获取userid
*
* @param int $aid 文档id
* @return string
*/

function GetUserid($aid,$userid)
{
global $dsql;
$row =$dsql ->GetOne( "select writer from xxxx_archives where id=$aid");
if ($row['writer'] == '0')
{
echo "为空";
}
else
{
$row =$dsql ->GetOne( "select $userid from xxxx_member where uname= '$row[writer]'");
return $row[$userid];;
}
}

在需要调用的部分写入

{dede:arclist typeid=2 row=3 titlelen=150 orderby='id' }
[field:id function=GetUserid(@me,userid)/]
{/dede:arclist}

这样的话就可以调用作者的userid了。


这样的方法还可以用到很多地方,比如你的文章需要调用tag标签。只用在里面写入function

/**
* 获得某文档的所有tag简易版
*
* @param int $aid 文档id
* @return string
*/
if ( ! function_exists('GetTagsjian'))
{
function GetTagsjian($aid)
{

global $dsql;
$tags = '';
$query = "SELECT tag FROM `#@__taglist` WHERE aid='$aid' ";
$dsql->Execute('tag',$query);
while($row = $dsql->GetArray('tag'))
{
$tags .= "<a href='tag.php?".urlencode($row['tag'])."' style='margin-left: 10px;'><span class='post-cat background1 color-white'>".$row['tag']."</span></a>";
//这样写的话$tags返回的数据可以带上样式,样式可以根据自己的想法去调试
}
return $tags;
}
}

然后前端调用

{dede:arclist typeid=2 row=3 titlelen=150 orderby='id' }
[field:id function=GetTagsjian(@me)/]
{/dede:arclist}

这样就可以调用到该文章的所有tag了!