方法一:通过arclist标签调用附加表字段
要成功获取附加表的内容,必须满足以下两个条件:
1、指定 channelid 属性(注意:这里的channelid是自定义模型的ID,而不是栏目ID)。
2、指定需要获取的附加表字段:addfields='字段1,字段2'。
{dede:arclist addfields='video_description,video_id' row='8' channelid='3'}
[field:video_description /] - [field:video_id /]
{/dede:arclist}
上述代码中,addfields='video_description,video_id' 是附加表中的两个字段。除了这些指定的附加表字段外,其它底层字段如arcurl、title、infos等也能正常调用。
同样地,dede:list 标签也可以调用附加表字段,不过与arclist不同的是,list标签无需指定channelid,因为系统能够自动判断。
{dede:list addfields='video_description,video_id' pagesize='8'}
[field:video_description /] - [field:video_id /]
{/dede:list}
注意:此方法将取出附加表中所有记录的相应字段。
方法二:利用runphp调用附加表内容
DedeCMS 的 dede:arclist 标签可以通过 runphp 实现对附加表内容的调用,这种方法同样适用于其他标签。
{dede:arclist titlelen='26' row='20' orderby='id'}
[field:id runphp="yes"]
$dsql = new DedeSql(false);
$a="SELECT * FROM dede_addongame_tg where aid=@me";
$arcRow = $dsql->GetOne($a);
@me='url="'.$arcRow[sptype].' leixing="'.$arcRow[model];
[/field:id]
{/dede:arclist}
这种方法可以根据列表中每一条记录的不同ID来获取另一个表中某条记录的具体内容。
总结来说,无论是通过指定channelid和addfields属性,还是借助runphp执行SQL查询,都可以有效地从DedeCMS的附加表中提取所需数据。这两种方法各有优势,开发者可以根据具体需求选择最适合的方式。