外贸网站建设,外贸网站建设公司,跨境电商独立站

PB关联推荐文章修改成关联推荐栏目

时间:2026-10-06   访问量:1001

PB后台原来的关联推荐一般是推荐相关的文章。

如果我们需要修改成关联某些栏目下的子栏目,则只需要修改content.html中,找到扩展字段为22的,

1000行左右》

                          
  {if($value->type==22)}
<input type="hidden" name="[value->name]" id="[value->name]-value" value="{$content->{$value->name}}">
<div class="layui-input-block">
    <div id="[value->name]" class="xm-select-demo"></div>
</div>
<script>
    var [value->name] = xmSelect.render({
        el: '#[value->name]',
        language: 'cn',
        toolbar: {show: true},
        filterable: true,
        theme: {color:'{fun=get_config('systemcolor')}'},
        on: function(data){
            var arr = data.arr;
            var str='';
            for(j = 0,len=arr.length; j < len; j++) {
               if(arr.length-1 == j){
                   str+=arr[j]['value'];
               } else {
                   str+=arr[j]['value']+',';
               }
            }
            $("#[value->name]-value").val(str);
        },
        data: [
            {php}
            // 1. 获取你在字段里配置的主栏目ID
            $pids = explode(',', $value->value); 
            
            // 2. 获取当前文章已经保存过的历史选中的栏目ID
            $name2 = $value->name;
            $saved_values = isset($this->vars['content']->$name2) ? explode(',', $this->vars['content']->$name2) : array();

            if(!empty($pids)){
                $pid_string = implode(',', array_map('intval', $pids));
                
                // 【已修正】使用 scode+0 解决字符串排序错乱问题
                $sub_menus = \core\basic\Db::table('ay_content_sort')
                    ->field('scode, name')
                    ->where("pcode IN ($pid_string)")
                    ->order('scode+0 ASC') 
                    ->select();
                
                // 4. 循环输出给前端 xmSelect
                foreach ($sub_menus as $menu) {
                    $selected = in_array($menu->scode, $saved_values) ? 'true' : 'false';
                    echo '{name: "'.$menu->name.'", value: "'.$menu->scode.'", selected: '.$selected.'},';
                }
            }
            {/php}
        ]
    })
</script>
{/if}


2000》行左右

                       
{if($value->type==22)}
<input type="hidden" name="[value->name]" id="[value->name]-value" value="{$content->{$value->name}}">
<div class="layui-input-block">
    <div id="[value->name]" class="xm-select-demo"></div>
</div>
<script>
    var [value->name] = xmSelect.render({
        el: '#[value->name]',
        language: 'cn',
        toolbar: {show: true},
        filterable: true,
        theme: {color:'{fun=get_config('systemcolor')}'},
        on: function(data){
            var arr = data.arr;
            var str='';
            for(j = 0,len=arr.length; j < len; j++) {
               if(arr.length-1 == j){
                   str+=arr[j]['value'];
               } else {
                   str+=arr[j]['value']+',';
               }
            }
            $("#[value->name]-value").val(str);
        },
        // 直接在 data 中通过 PHP 输出对应的栏目列表以及动态高亮选中状态
        data: [
            {php}
            // 1. 获取你在自定义字段里配置的父级主栏目ID
            $pids = explode(',', $value->value); 
            
            // 2. 获取当前编辑的文章已经保存过的历史选中的栏目ID
            $name2 = $value->name;
            $saved_values = isset($this->vars['content']->$name2) ? explode(',', $this->vars['content']->$name2) : array();

            if(!empty($pids)){
                // 安全过滤父级栏目ID
                $pid_string = implode(',', array_map('intval', $pids));
                
                // 3. 核心修改:查询栏目表,并使用 scode+0 解决字符串排序错乱问题
                $sub_menus = \core\basic\Db::table('ay_content_sort')
                    ->field('scode, name')
                    ->where("pcode IN ($pid_string)")
                    ->order('scode+0 ASC') 
                    ->select();
                
                // 4. 循环输出给前端 xmSelect
                foreach ($sub_menus as $menu) {
                    // 判断当前循环的子栏目是否在文章已保存的历史数组里
                    $selected = in_array($menu->scode, $saved_values) ? 'true' : 'false';
                    echo '{name: "'.$menu->name.'", value: "'.$menu->scode.'", selected: '.$selected.'},';
                }
            }
            {/php}
        ]
    })
</script>
{/if}



正在加载评论…