使用织梦的调用方法的时候感觉很简单,但是,有时候有的调用满足不了我们的需求。于是,我们可以自己写调用方法,然后再前端使用
[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(
a
i
d
,
aid,
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了!