织梦DEDECMS dede:arclist,dede:list获取附加表字段内容
来源:互联网 发布:淘宝怎么抢网红现货 编辑:程序博客网 时间:2024/05/19 02:31
以前用织梦DEDECMS做二次开发时获取附加表字段内容都是通过runphp执行SQL查询获得,最近看了看手册,发现一个非常简便的方法。
用arclist调用于附加表字段的方法:
要获取附加表内容,必须符合两个条件
1、指定 channelid 属性
2、指定要获得的字段 addfields=’字段1,字段’
如:
{dede:arclist addfields=’video_description,video_id’ row=’8′ channelid=’3′}
[field:video_description /] – [field:video_id /]
{/dede:arclist}
其中addfields=’video_description,video_id’是附加表中的两个字段,channelid是项目指定的内容频道模型的id而不是项目本身的id。除指定的附加表字段外,其它底层字段如arcurl,title,infos等均能正常调用。
同样,dede:list标签也可调取附加表字段,和arclist不同的是不用指定channeli同时也不用指定addfields,因为系统能自动判断。
调用格式如下:
在larc.listview.class.php 文件中将 找到$addtable = $this->ChannelUnit->ChannelInfos['addtable']; 将else条件中的两句话给替换成//获取附加表信息 下面这代码( 替换后效代码样式如红字显示):
//获取附加表信息
$addfield = trim($ctag->GetAtt('addfields'));
$addfieldsSql = '';
$addfieldsSqlJoin = '';
if($addfield != '' && !empty($channelid))
{
$row = $dsql->GetOne("SELECT addtable FROM `#@__channeltype‘ WHERE id='$channelid' ");
if(isset($row['addtable']) && trim($row['addtable']) != '')
{
$addtable = trim($row['addtable']);
$addfields = explode(',', $addfield);
$row['addtable'] = trim($row['addtable']);
$addfieldsSql = ",addf.".join(',addf.', $addfields);
$addfieldsSqlJoin = " LEFT JOIN `$addtable` addf ON addf.aid = arc.id ";
}
}
//获得附加表的相关信息
$addtable = $this->ChannelUnit->ChannelInfos['addtable'];
if($addtable!="")
{
$addJoin = " LEFT JOIN `$addtable` ON arc.id = ".$addtable.'.aid ';
$addField = '';
$fields = explode(',',$this->ChannelUnit->ChannelInfos['listfields']);
foreach($fields as $k=>$v)
{
$nfields[$v] = $k;
}
if(is_array($this->ChannelUnit->ChannelFields) && !empty($this->ChannelUnit->ChannelFields))
{
foreach($this->ChannelUnit->ChannelFields as $k=>$arr)
{
if(isset($nfields[$k]))
{
if(!empty($arr['rename'])) {
$addField .= ','.$addtable.'.'.$k.' as '.$arr['rename'];
}
else {
$addField .= ','.$addtable.'.'.$k;
}
}
}
}
}
else
{
//获取附加表信息
$addfield = trim($ctag->GetAtt('addfields'));
$addfieldsSql = '';
$addfieldsSqlJoin = '';
if($addfield != '' && !empty($channelid))
{
$row = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$channelid' ");
if(isset($row['addtable']) && trim($row['addtable']) != '')
{
$addtable = trim($row['addtable']);
$addfields = explode(',', $addfield);
$row['addtable'] = trim($row['addtable']);
$addfieldsSql = ",addf.".join(',addf.', $addfields);
$addfieldsSqlJoin = " LEFT JOIN `$addtable` addf ON addf.aid = arc.id ";
}
}
}
- 织梦DEDECMS dede:arclist,dede:list获取附加表字段内容
- 织梦DEDECMS dede:arclist,dede:list获取附加表字段内容
- 织梦DEDECMS {dede:arclist},{dede:list}获取附加表字段内容
- 织梦DEDECMS dede:arclist,dede:list获取附加表字段内容
- DeDeCMS列表页用dede:arclist和dede:list标签调用附加表字段
- arclist标签中调用附加表字段-DEDECMS教程
- 在dede:arclist、dede:list等标签中调用附加字段
- 织梦 dede:arclist
- dedecms的dede:list和dede:arclist分页问题(包括列表序号)
- DEDE 【arclist】增加按权重排序 dedecms v5.6列表页标签{dede:list增加按权重排序标签
- dede:list调用自定义属性和 dede:arclist的区别
- dede:list和dede:arclist有什么区别
- dede分页标签应用list与arclist
- DEDE主页调用自定义模型的附加表字段的方法,首页调用自定义字段
- dedecms 的这个dede:arclist里怎么调用全局变量?
- dedecms如何调用附加表字段~
- dedecms自定义附加表字段的调用
- dede:arclist 实现分页!-
- android 中如何监听耳机键消息
- poj 2404 中国邮递员
- foreach(int i in a);for(int i : a);
- jqGrid 各种参数 详解
- 获得样式属性和外联样式
- 织梦DEDECMS dede:arclist,dede:list获取附加表字段内容
- GCC 命令行详解
- JS的构造函数
- linux 3.6.0添加系统调用代码
- 扩展Eclipse和MyEclipse的自动提示
- something would be.
- 创建,删除快捷图标shortcut android
- mvcpager 帮助文档
- 玩转C链表