| @@ -0,0 +1,69 @@ | |||||
| <?php | |||||
| if(!defined('DEDEINC')) exit('Request Error!'); | |||||
| /** | |||||
| * 文档内容调用标签 | |||||
| * | |||||
| * @version $Id: arccontent.lib.php 2020年9月14日 tianya $ | |||||
| * @package DedeCMS.Taglib | |||||
| * @copyright Copyright (c) 2020, DedeBIZ.COM. | |||||
| * @license http://help.dedecms.com/usersguide/license.html | |||||
| * @link http://www.dedecms.com | |||||
| */ | |||||
| require_once(DEDEINC."/channelunit.class.php"); | |||||
| // 这是一个用来调用文档内容的标签,只是提供一种方法,不建议太多地方调用,毕竟比较损耗性能 | |||||
| /* | |||||
| 用法: | |||||
| {dede:arccontent type='pre|next'} | |||||
| [field:body/] | |||||
| {/dede:arccontent} | |||||
| */ | |||||
| function lib_arccontent( &$ctag, &$refObj ) | |||||
| { | |||||
| global $dsql; | |||||
| $aid = $ctag->GetAtt('aid'); | |||||
| $type = $ctag->GetAtt('type'); | |||||
| $revalue = ""; | |||||
| if (in_array($type, array("pre", "next")) && get_class($refObj) === "Archives") { | |||||
| // 在内容页面获取上一篇下一篇内容 | |||||
| $asql = "WHERE id<{$refObj->Fields['id']}"; | |||||
| if ($type === "next") { | |||||
| $asql = "WHERE id>{$refObj->Fields['id']}"; | |||||
| } | |||||
| $row = $dsql->GetOne("SELECT id,channel FROM `#@__arctiny` $asql AND arcrank>-1 AND typeid='{$refObj->Fields['typeid']}' ORDER BY id DESC"); | |||||
| $channel = new ChannelUnit($row['channel'], $refObj->Fields['id']); | |||||
| $fields = $dsql->GetOne("SELECT * FROM `{$channel->ChannelInfos['addtable']}` WHERE aid = {$row['id']}"); | |||||
| } | |||||
| if (!empty($aid)) { | |||||
| // 指定ID获取内容 | |||||
| $row = $dsql->GetOne("SELECT id,channel FROM `#@__arctiny` WHERE id={$aid} AND arcrank>-1"); | |||||
| $channel = new ChannelUnit($row['channel'], $aid); | |||||
| $fields = $dsql->GetOne("SELECT * FROM `{$channel->ChannelInfos['addtable']}` WHERE aid = {$row['id']}"); | |||||
| } | |||||
| $innerText = trim($ctag->GetInnerText()); | |||||
| $ctp = new DedeTagParse(); | |||||
| $ctp->SetNameSpace('field','[',']'); | |||||
| $ctp->LoadSource($innerText); | |||||
| if(is_array($ctp->CTags)) | |||||
| { | |||||
| foreach($ctp->CTags as $tagid=>$ctag) | |||||
| { | |||||
| if(isset($fields[$ctag->GetName()])) { | |||||
| $ctp->Assign($tagid,$fields[$ctag->GetName()]); | |||||
| } | |||||
| } | |||||
| $revalue .= $ctp->GetResult(); | |||||
| } | |||||
| return $revalue; | |||||
| } | |||||