帝国CMS文章页怎样调用当前数据表与当前栏目信息(适用于非默认表news) 作者:30yi.cn     时间:2020-09-27

简单概括
核心就一个调用方式:$tbname = $class_r[$GLOBALS[navclassid]][tbname];本函数可以取得当前表名。如果要获取父栏目id、爷爷栏目id也可以通过本方式。

帝国CMS一套内容模板适用于多个不同栏目,且多个栏目使用多个数据表时,文章页怎样取得当前表并做栏目热点/时间排序就是个问题。

解决思路很简单,获取当前栏目id,基于栏目id倒推出表名,而后放到灵动内部。

一、获取当前栏目数据表名
<?
    $tbname = $class_r[$GLOBALS[navclassid]][tbname];
?>
这里标红的tbname,就是表名。如果要获取父栏目id,也是可以使用这个方法的。

二、循环
[e:loop={"SELECT title,titleurl from [!db.pre!]ecms_$tbname where classid ='$GLOBALS[navclassid]' order by newstime desc LIMIT 10",10,24,0}]
<li>
    <em <?if($bqno<=3){?> class="cur"<?}?>><?=$bqno?></em>
    <a href="<?=$bqr['titleurl']?>" title="<?=$bqr['title']?>" target="_blank"><?=$bqr['title']?></a>
</li>
[/e:loop]
这样就能高效取得数据。


此外:
还有个更简单的方法,但效率比上面的方法低10倍不止,尤其是数据过1万的情况下,本方法效率极低。如果数据量过10万,本方法是噩梦。
这里也顺带贴一下,新手可以使用。
[e:loop={'selfinfo',10,0,0,"id<>'$navinfor[id]'",'newstime desc'}]
      <a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a>
[/e:loop]

更多帝国CMS开发问题,可以咨询在线客服