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} 正在加载评论…