|
- <?php
- if (!defined('DEDEINC')) exit('dedebiz');
- /**
- * 文档内容调用标签
- *
- * @version $Id: arccontent.lib.php 2020年9月14日 tianya $
- * @package DedeBIZ.Taglib
- * @copyright Copyright (c) 2022, DedeBIZ.COM
- * @license https://www.dedebiz.com/license
- * @link https://www.dedebiz.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;
- }
|