Browse Source

增加文档内容调用标签

tags/6.0.0
tianya 3 years ago
parent
commit
88425d337c
1 changed files with 69 additions and 0 deletions
  1. +69
    -0
      src/include/taglib/arccontent.lib.php

+ 69
- 0
src/include/taglib/arccontent.lib.php View File

@@ -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;

}

Loading…
Cancel
Save