通行证 | 帐号:
密码:
登录
注册
|
登录
登录
登录
登录
域名空间
旧版主页
免费下载
教程中心
网站首页
技术交流
社群广场
赚积分
技术服务
应用市场
建个小程序
精品项目开发
服务热线
020-28998648
精准搜索
当前位置:
网站首页
社区论坛
官方动态
功能建议
插件模块
风格模板
问题反馈
技术交流
站长杂谈
代码共享
V系列产品
运营交流
社区主页
精品项目开发
分享
收藏
举报
X
问下:fun('sort@sons'方法,如果父栏目是模型1,用此方法只能获取这个栏目下模型1的子栏目,如果有其他模型的子栏目,是不能输出的
wr1688
消费2593.25元
2021-05-07 20:10 20:10
风格开发者
458
6
是不是这样
7
赏礼
赏钱
收藏
点击回复
全部留言
共
6
条
半满
程序开发者
消费:0.3元 2021-05-07 21:26 21:26
6楼
输出方法:
{volist name=":getArray(fun('Sort@son',intval($fid))?:fun('Sort@brother',$fid))" id="name"}
<li {eq name="$key" value="$fid"}class='ck'{/eq}><a href="{:urls('content/index',"fid=$key")}">{$name}</a></li>
{/volist}
结果:
wr1688
消费:2593.25元
华为
2021-05-07 21:27
看下sons能出来授权查询吗
半满
消费:0.3元
2021-05-07 21:29
可以的,sons获取所有子栏目,包括所有下下级,son只获取下一级的栏目,
半满
消费:0.3元
2021-05-07 21:29
@wr1688
wr1688
消费:2593.25元
华为
2021-05-07 22:41
谢了,我再试试
0
赏钱
赏礼
回复
半满
程序开发者
消费:0.3元 2021-05-07 21:16 21:16
6楼
if (!function_exists('get_sort')) {
/**
* 获取具体某个频道下面的栏目相关信息
* @param number $id 为0时,取出所有栏目,大于0时,根据$type参数取值
* @param string $field 取某个字段对应的值,config或者是不存在的字段名,则取出所有配置参数
* @param string $type father时取出所有父级栏目,sons时取出所有下一级栏目,other时优先取子栏目,若无再取同级,若无再取父级兄弟栏目
* @param string $sys_type 指定频道模块
* @return void|number|number[]|array[]|unknown[]|number[]|unknown[]|array|unknown
*/
function get_sort($id = 0, $field = 'name', $type = '', $sys_type = '')
{
$array = sort_config($sys_type);
$_type = $type === '' ? $field : $type; //兼容处理
if ($id > 0) {
if ($_type == 'father') { //所有父栏目,也包括自身,一般用在面包屑导航
$farray = sort_get_father($id, $sys_type);
$self_array = [$id => $array[$id]['name']];
return empty($farray) ? $self_array : $farray + $self_array;
} elseif ($_type == 'sons') { //所有下一级级栏目,也包括自身,一般用在查询数据库
$s_array = [
$id => $field == 'name' ? $array[$id]['name'] : $id,
];
$_pid = 0;
$fpid = []; //把所有父分类都加入到容器
foreach ($array as $key => $rs) {
if (!$rs['pid']) continue;
//$rs['pid']==$id 仅仅第一层直属下级, $rs['pid']==$_pid 下级的下级
if ($rs['pid'] == $id || $rs['pid'] == $_pid || in_array($rs['pid'], $fpid)) {
$s_array[$key] = $field == 'name' ? $array[$key]['name'] : $key;
if (!in_array($rs['pid'], $fpid)) { //把所有父分类都加入容器
$fpid[] = $rs['pid'];
}
$_pid = $key;
}
}
return $s_array;
} elseif ($_type == 'brother') { //取同级栏目
$s_array = [];
$_pid = $array[$id]['pid'];
foreach ($array as $key => $rs) {
if ($rs['pid'] == $_pid) {
$s_array[$key] = $rs['name'];
}
}
return $s_array;
} elseif ($_type == 'other') { //取父级兄弟栏目及本级兄弟栏目及子栏目,一般用在栏目页面方便展示布局
$m_array = [];
$pid = $array[$id]['pid'];
$fpid = $pid ? $array[$pid]['pid'] : null;
$_pid = null;
foreach ($array as $key => $rs) {
if ($fpid !== null && $rs['pid'] == $fpid) { //父级栏目
$m_array[$key] = $rs['name'];
} elseif ($rs['pid'] == $pid) { //同级栏目
$m_array[$key] = $rs['name'];
} elseif ($rs['pid'] == $_pid) { //子栏目
$m_array[$key] = $rs['name'];
}
if ($key == $id) {
$_pid = $id;
}
}
return $m_array;
} elseif ($_type == 'config') {
return $array[$id];
} elseif (isset($array[$id][$_type])) {
return $array[$id][$_type];
} else {
return $array[$id];
}
} elseif ($_type == 'other' && $array) { //fid不存在的话,就只取一级栏目
$farray = [];
foreach ($array as $key => $rs) {
if ($rs['pid'] == 0) {
$farray[$key] = $rs['name'];
}
}
return $farray;
} elseif ($_type == 'all') {
$farray = [];
foreach ($array as $key => $rs) {
$farray[$key] = $rs['name'];
}
return $farray;
}
return $array;
}
}
0
赏钱
赏礼
回复
更多回复
你可能感兴趣的主题
恢复多功能编辑器
3
1
发表回复
精品项目开发
发表圈内新贴
圈内贴子
3650
圈子成员
218
本圈子内的新贴
更多
热门分类
官方动态
功能建议
插件模块
风格模板
问题反馈
技术交流
站长杂谈
代码共享
V系列产品
运营交流
推荐内容
更多
扫一扫访问手机版
3
1
回到顶部
请选择要切换的马甲:
网页即时交流
客服MM
QQ咨询
81684210
咨询热线
020-28998648