使用 dedecms 的runphp 接口 编写一个 函数.利用channel标签的ID变量或得。
函数。
function GetChannelArticleNum($id){
if(!$id || !is_numeric($id)) return 0;
$dsql = new DedeSql();
require_once(dirname(__FILE__)."/inc_channel_unit_functions.php");
$sql = TypeGetSunID($id,$dsql);
$dsql -> SetQuery("Select count(*) as c From #@__archives where {$sql}");
$row = $dsql -> GetOne();
return $row['c'];
}
将该函数放入 inc_functions.php 中
示例调用方法.
{dede:channel type='top' row='8'} | [field:typename/] ([field:ID runphp='yes'] @me = GetChannelArticleNum(@me);[/field:ID]){/dede:channel}
改变 | [field:typename/] ([field:ID runphp='yes'] @me = GetChannelArticleNum(@me);[/field:ID]) 可获得更多形式。
如果你使用该方法没有效果,请打开 inc_typelink.php(以下是在 dedecms v3.1的情况,4.x版本请对应查看)
查找函数 function GetChannelList 体内的
if($row=$this->dsql->GetArray())
{
加上一行 $row['id'] = $row['ID'];
这是dedecms 里面一个奇怪的问题。 [field:ID /] 经常获得不到值,有时又是可以的,而用$row['id'] = $row['ID']; 后即可用 [field:ID /]获得, 可能是 $row['ID'] 在某个地方没打引号被作为了一个常量。。。。。。