Files
BESCMS/dayrui/App/Cms/Action/Category.php
T

95 lines
2.7 KiB
PHP

<?php
// 栏目
if (!$dirname) {
$dirname = 'share';
}
$module = \Phpcmf\Service::L('cache')->get('module-'.$system['site'].'-'.$dirname);
if (!$module) {
return $this->_return($system['return'], "模块({$dirname})尚未安装");
} elseif (!$module['category']) {
return $this->_return($system['return'], "模块({$dirname})没有栏目数据");
}
$show = isset($param['show']) && $param['show'] ? 1 : 0; // 有show参数表示显示隐藏栏目
$return = [];
if (isset($param['pid'])) {
$param['pid'] = explode(',', (string)$param['pid']);
}
if (isset($param['catid']) && $param['catid']) {
$param['id'] = $param['catid'];
}
if (isset($param['id']) && $param['id']) {
$arr = explode(',', $param['id']);
if ($arr) {
$new = [];
foreach ($arr as $t) {
if ($t && isset($module['category'][$t]) && $module['category'][$t]) {
$new[$t] = $module['category'][$t];
}
}
$module['category'] = $new;
}
}
if ($module['category']) {
foreach ($module['category'] as $t) {
if (!$t['show'] && !$show) {
continue;
} elseif (isset($param['pid']) && !dr_in_array($t['pid'], $param['pid'])) {
continue;
} elseif (isset($param['mid']) && $t['mid'] != $param['mid']) {
continue;
} elseif (isset($param['tid']) && $t['tid'] != (int)$param['tid']) {
continue;
} elseif (isset($param['child']) && $t['child'] != (int)$param['child']) {
continue;
} elseif (isset($system['more']) && !$system['more']) {
unset($t['field'], $t['setting']);
}
if ($t['tid'] == 2) {
// 外链栏目
} else {
$t['url'] = dr_url_rel(dr_url_prefix($t['url'], $module['mid'], $system['site'], $this->_is_mobile));
}
$return[] = $t;
}
}
// order
if ($system['order']) {
$arr = explode(',', $system['order']);
foreach ($arr as $t) {
$a = explode('_', $t);
$b = strtolower(end($a));
if (in_array($b, ['desc', 'asc', 'instr'])) {
$a = str_replace('_'.$b, '', $t);
} else {
$a = $t;
$b = 'desc';
}
if ($b == 'instr') {
} else {
$return = dr_array_sort($return, $a, $b);
}
}
}
// num参数
if ($system['num']) {
if (is_numeric($system['num'])) {
$return = array_slice($return, 0, $system['num']);
} elseif (strpos($system['num'], ',') !== false) {
list($a, $b) = explode(',', $system['num']);
$return = array_slice($return, max(0, $a - 1), $b);
}
}
if (!$return) {
return $this->_return($system['return'], '没有匹配到内容');
}
return $this->_return($system['return'], $return, '');