| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- // +----------------------------------------------------------------------
- // |
- // +----------------------------------------------------------------------
- // |
- // +----------------------------------------------------------------------
- // |
- // +----------------------------------------------------------------------
- // |
- // +----------------------------------------------------------------------
- // +----------------------------------------------------------------------
- // | 栏目模型
- // +----------------------------------------------------------------------
- namespace addons\cms\model;
- use think\Model;
- /**
- * 模型
- */
- class Category extends Model
- {
- protected $name = 'cms_category';
- public function getArrparentidAttr($value, $data)
- {
- return is_array($value) ? $value : ($value ? explode(',', $value) : []);
- }
- public function getArrchildidAttr($value, $data)
- {
- return is_array($value) ? $value : ($value ? explode(',', $value) : []);
- }
- public function getSettingAttr($value, $data)
- {
- return is_array($value) ? $value : (array) json_decode($data['setting'], true);
- }
- public function setSettingAttr($value)
- {
- return is_array($value) ? json_encode($value) : $value;
- }
- public function getOrderList($modelid, $tag)
- {
- $param = app()->request->get();
- $fields = ModelField::where(['modelid' => $modelid, 'isorder' => 1])
- ->order('listorder', 'desc')
- ->field('id,title,name')
- ->select()
- ->toArray();
- if (empty($fields)) {
- return [];
- }
- $sort = isset($param['sort']) && in_array($param['sort'], array_map(function ($vo) {return $vo['name'];}, $fields)) ? $param['sort'] : 'default';
- $order = isset($param['order']) && in_array(strtolower($param['order']), ['desc', 'asc']) ? $param['order'] : '';
- $isDefaultSort = $sort === 'default';
- // 构造默认排序
- $orderList = [
- 'data' => $isDefaultSort ? $tag['order'] : "$sort $order",
- 'list' => [[
- 'title' => '默认',
- 'field' => 'default',
- 'url' => '?' . http_build_query(array_merge($param, ['sort' => 'default'])),
- 'active' => $isDefaultSort,
- 'order' => $order,
- ]],
- ];
- foreach ($fields as $field) {
- $currentField = $field['name'];
- $isActive = $currentField === $sort;
- $tempOrder = $isActive && $order === 'desc' ? 'asc' : 'desc';
- $orderList['list'][] = [
- 'title' => $field['title'],
- 'field' => $currentField,
- 'url' => '?' . http_build_query(array_merge($param, ['sort' => $currentField, 'order' => $tempOrder])),
- 'active' => $isActive,
- 'order' => $tempOrder,
- ];
- }
- return $orderList;
- }
- //刷新栏目索引缓存
- public function category_cache()
- {
- $data = Category::order("listorder DESC")->column('catdir,parentid', 'id');
- cms_cache("Category", $data);
- return $data;
- }
- }
|