联系官方销售客服

1835022288

028-61286886

求助 版主:论坛审计组
在不影响升级的情况下内容关联实现中的内容关联可以拖动排序同时
类型:迅睿CMS 更新时间:2019-11-27 14:20:39

在不影响升级的情况下,内容关联实现poscms3中的内容关联可以拖动排序,同时可以重复关联同一条内容。比如,可以关联3条id为17的内容。


image.png



回帖
  • 靠悬赏赚钱买授权
    #1楼    靠悬赏赚钱买授权
    2019-11-27 12:46:52
    Chrome 0
    dayrui/My/Field/Related.php
    <?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);
       }
    
    
    }
  • 晕菜菜
    #2楼    晕菜菜
    2019-11-27 13:33:42
    Chrome 0
    前段怎么调用?只能出一条呢~~靠悬赏(设置悬赏)赚钱买授权
  • 靠悬赏赚钱买授权
    #3楼    靠悬赏赚钱买授权
    2019-11-27 13:37:02
    Chrome 0
    看在赏金的份上show.html{php $ids=explode(",", $字段名称);}
    {loop $ids $iii}
    <hr>
    {content id=$iii module=news}
    标题:{$t.title}
    内容:{$t.content}
    自定义更新时间:{dr_date($t._updatetime, 'Y-m-d')}
    {/content}
    <hr>
    {/loop}
    满意答案
  • 晕菜菜
    #4楼    晕菜菜
    2019-11-27 14:20:39
    Chrome 0
    @靠悬赏(设置悬赏)赚钱买授权:非常棒~签约长期支持~送授权~啊哈哈