迅睿CMS框架是一款PHP8高性能·简单易用的CMS开源开发框架,基于MIT开源许可协议发布,免费且不限制商业使用,是免费开源的产品,以万端互联为设计理念,支持的微信公众号、小程序、APP客户端、移动端网站、PC网站等多终端式管理系统。
联系官方销售客服
1835022288
028-61286886
在不影响升级的情况下,内容关联实现poscms3中的内容关联可以拖动排序,同时可以重复关联同一条内容。比如,可以关联3条id为17的内容。
<?php namespace My\Field; // 这里要改成My前缀 /** * http://www.xunruicms.com * 本文件是框架系统文件,二次开发时不可以修改本文件,可以通过继承类方法来重写此文件 **/ class Related extends \Phpcmf\Field\Related { /** * 字段表单输入 * * @param string $cname 字段别名 * @param string $name 字段名称 * @param array $cfg 字段配置 * @param string $value 值 * @return string */ public function input($field, $value = '') { // 字段禁止修改时就返回显示字符串 if ($this->_not_edit($field, $value)) { return $this->show($field, $value); } // 字段存储名称 $name = $field['fieldname']; // 字段提示信息 $tips = isset($field['setting']['validate']['tips']) && $field['setting']['validate']['tips'] ? '<span class="help-block" id="dr_'.$name.'_tips">'.$field['setting']['validate']['tips'].'</span>' : ''; // 禁止修改 $area = \Phpcmf\Service::C()->_is_mobile() ? '["95%", "90%"]' : '["50%", "45%"]'; // 模块名称 $module = isset($field['setting']['option']['module']) ? $field['setting']['option']['module'] : ''; // $tpl = '<tr id="dr_items_'.$name.'_{id}"><td>{id}</td><td>{value}<input type="hidden" name="data['.$name.'][]" value="{id}"></td><td width="45"><a class="btn btn-xs red" href="javascript:;" onclick="$(\\\'#dr_items_'.$name.'_{id}\\\').remove()"><i class="fa fa-trash"></i></a></td></tr>'; // $url = '/index.php?s=api&c=api&m=related&site='.SITE_ID.'&module='.$module.'&limit='.intval($field['setting']['option']['limit']); // 字段显示名称 $text = ($field['setting']['validate']['required'] ? '<span class="required" aria-required="true"> * </span>' : '').$field['name']; $str = ''; $str.= ' <table class="table table-striped table-bordered fc-sku-table table-hover"> <thead> <tr> <th width="90" style="border-left-width: 1px!important;">Id </th> <th>'.dr_lang('主题').' </th> <th width="50"> </th> </tr> </thead> <tbody id="related_'.$name.'-sort-items">'; $value = @trim($value, ','); if ($value && is_string($value)) { $ids = explode(',', $value); foreach ($ids as $t) { $id = intval($t); $t = \Phpcmf\Service::M()->table(SITE_ID.'_'.$module)->get($id); $value = '<a href="'.$t['url'].'" target="_blank">'.$t['title'].'</a>'; $str.= str_replace(array('{id}', '{value}', '\\'), array($id, $value, ''), $tpl); } } $str.= '</tbody>'; $str.= '</table>'; $str.= '<p>'; $str.= '<button type="button" class="btn blue btn-sm" onClick="dr_add_related_'.$name.'()"> <i class="fa fa-plus"></i> '.dr_lang('关联内容').'</button>'; $str.= '</p>'; $str.= $tips; $str.= ' <script type="text/javascript"> $("#related_'.$name.'-sort-items").sortable(); function dr_add_related_'.$name.'() { layer.open({ type: 2, title: \'<i class="fa fa-cog"></i> '.dr_lang('关联内容').'\', fix:true, shadeClose: true, shade: 0, area: '.$area.', btn: ["'.dr_lang('关联').'"], success: function (json) { if (json.code == 0) { layer.close(); dr_tips(json.code, json.msg); } }, yes: function(index, layero){ var body = layer.getChildFrame(\'body\', index); // 延迟加载 var loading = layer.load(2, { time: 10000 }); $.ajax({type: "POST",dataType:"json", url: "'.$url.'&is_ajax=1", data: $(body).find(\'#myform\').serialize(), success: function(json) { layer.close(loading); if (json.code == 1) { layer.close(index); var temp = \''.$tpl.'\'; var html = ""; for(var i in json.data.result){ var tpl = temp; var v = json.data.result[i]; tpl = tpl.replace(/\{id\}/g, v.id); tpl = tpl.replace(/\{value\}/g, v.value); html+= tpl; } $(\'#related_'.$name.'-sort-items\').append(html); dr_tips(1, json.msg); } else { dr_tips(0, json.msg); } return false; } }); return false; }, content: "'.$url.'&is_ajax=1" }); } </script>'; return $this->input_format($name, $text, $str); } }
{loop $ids $iii} <hr> {content id=$iii module=news} 标题:{$t.title} 内容:{$t.content} 自定义更新时间:{dr_date($t._updatetime, 'Y-m-d')} {/content} <hr> {/loop}