diff --git a/module/Cms/Admin/Controller/CatController.php b/module/Cms/Admin/Controller/CatController.php index 3d10201254d7755632c5ba4eab3b09c74c4ebef3..b1e5bddd6c719a90123729d7f8b529e37d8576aa 100644 --- a/module/Cms/Admin/Controller/CatController.php +++ b/module/Cms/Admin/Controller/CatController.php @@ -7,9 +7,12 @@ namespace Module\Cms\Admin\Controller; use Illuminate\Routing\Controller; use ModStart\Admin\Concern\HasAdminQuickCRUD; use ModStart\Admin\Layout\AdminCRUDBuilder; +use ModStart\Field\AbstractField; +use ModStart\Field\Type\FieldRenderMode; use ModStart\Form\Form; use ModStart\Grid\GridFilter; use ModStart\Support\Concern\HasFields; +use Module\Cms\Type\CatUrlMode; use Module\Cms\Type\CmsMode; use Module\Cms\Util\CmsCatUtil; use Module\Cms\Util\CmsModelUtil; @@ -28,8 +31,20 @@ class CatController extends Controller $builder->id('id', 'ID'); $builder->text('title', '名称')->required()->width(200); $builder->text('url', 'URL')->required() + ->hookRendering(function (AbstractField $field, $item, $index) { + if ($field->renderMode() == FieldRenderMode::GRID) { + return CatUrlMode::url($item->toArray()); + } + return null; + }) ->help('字母数字下划线,如,demo 可以通过URL访问 /demo 访问') ->ruleUnique('cms_cat')->ruleRegex('/^[a-zA-Z0-9_\\/]+$/'); + if (modstart_config('CmsUrlMix_Enable', false)) { + $builder->text('fullUrl', '[增强]全路径')->listable(false) + ->help('如 product/list'); + $builder->text('pageFullUrl', '[增强]全路径分页')->listable(false) + ->help('分页请使用 {page} 占位,如 product/list/{page},product/list?page={page}'); + } $modelField = $builder->select('modelId', '模型')->optionModel('cms_model', 'id', 'title')->required(); $modelModeMap = CmsModelUtil::listModeMap(); $modelField->when('in', $modelModeMap[CmsMode::LIST_DETAIL], function ($builder) { diff --git a/module/Cms/Admin/Controller/ContentController.php b/module/Cms/Admin/Controller/ContentController.php index 1311e692aa67fad5f1d575f6b8e403e79e006bbf..47a86d63ddc01543a8a00b047846e44928a14b3b 100644 --- a/module/Cms/Admin/Controller/ContentController.php +++ b/module/Cms/Admin/Controller/ContentController.php @@ -190,6 +190,10 @@ class ContentController extends Controller ->ruleRegex('/^[a-z0-9_]*[a-z][a-z0-9_]*$/') ->help('数字字母下划线组成,不能是纯数字,可以通过 a/别名 别名访问内容'); } + if (modstart_config('CmsUrlMix_Enable', false)) { + $form->text('fullUrl', '[增强]全路径')->listable(false) + ->help('如 product/view/1.html'); + } $form->richHtml('content', '内容'); if (in_array($this->model['mode'], [CmsMode::LIST_DETAIL, CmsMode::PAGE])) { $form->textarea('summary', '摘要'); @@ -215,6 +219,9 @@ class ContentController extends Controller 'catId', 'title', 'alias', 'title', 'summary', 'cover', 'postTime', 'status', 'isRecommend', 'isTop', 'tags', 'author', 'source', ]); + if (modstart_config('CmsUrlMix_Enable', false)) { + $recordValue['fullUrl'] = (empty($data['fullUrl']) ? null : $data['fullUrl']); + } if (empty($recordValue['alias'])) { $recordValue['alias'] = null; } diff --git a/module/Cms/Type/CatUrlMode.php b/module/Cms/Type/CatUrlMode.php new file mode 100644 index 0000000000000000000000000000000000000000..c7ef51e8d90a32beca150d2e90766e8bf8ea60d6 --- /dev/null +++ b/module/Cms/Type/CatUrlMode.php @@ -0,0 +1,16 @@ + $v) { $records[$k]['_model'] = CmsModelUtil::get($v['modelId']); - $records[$k]['_url'] = modstart_web_url($v['url']); + $records[$k]['_url'] = CatUrlMode::url($v); } return $records; }); diff --git a/module/Cms/Util/CmsRouteUtil.php b/module/Cms/Util/CmsRouteUtil.php new file mode 100644 index 0000000000000000000000000000000000000000..df5a4f4c88cbb9d3c8ded3d8185964cbd227df74 --- /dev/null +++ b/module/Cms/Util/CmsRouteUtil.php @@ -0,0 +1,14 @@ +handle($request); + } +} \ No newline at end of file diff --git a/module/Cms/Util/UrlModeUtil.php b/module/Cms/Util/UrlModeUtil.php deleted file mode 100644 index 2e2cbc4a517765a5bf5bae80dcf32f50f1a16373..0000000000000000000000000000000000000000 --- a/module/Cms/Util/UrlModeUtil.php +++ /dev/null @@ -1,10 +0,0 @@ -首页 @foreach($catChain as $i=>$c) {{$c['title']}} + href="{{$c['_url']}}">{{$c['title']}} @endforeach @@ -36,10 +36,10 @@
全部 + href="{{$catRoot['_url']}}">全部 @foreach($catRootChildren as $c) {{$c['title']}} + href="{{$c['_url']}}">{{$c['title']}} @endforeach
diff --git a/module/Cms/Web/Controller/ListController.php b/module/Cms/Web/Controller/ListController.php index 80a0b72d65a0386fadeaa8ff7a9bdb22319e1121..096d2951c5543d5aec3a927ebc34b1d486ba9b09 100644 --- a/module/Cms/Web/Controller/ListController.php +++ b/module/Cms/Web/Controller/ListController.php @@ -20,13 +20,22 @@ class ListController extends BaseCatController $input = InputPackage::buildFromInput(); $page = $input->getPage(); $pageSize = $input->getPageSize('pageSize'); + $pageSize = 2; $paginateData = CmsContentUtil::paginateCat($cat['id'], $page, $pageSize); + $viewData = $data; + $viewData['page'] = $page; + $viewData['pageSize'] = $pageSize; $viewData['records'] = $paginateData['records']; - $viewData['pageHtml'] = PageHtmlUtil::render($paginateData['total'], $pageSize, $page, '?page={page}'); + $pageTemplate = '?page={page}'; + if (!empty($cat['pageFullUrl'])) { + $pageTemplate = modstart_web_url($cat['pageFullUrl']); + } + $viewData['pageHtml'] = PageHtmlUtil::render($paginateData['total'], $pageSize, $page, $pageTemplate); // return $viewData; + return $this->view('cms.list.' . CmsTemplateUtil::toBladeView($view), $viewData); } } diff --git a/module/Cms/Web/routes.php b/module/Cms/Web/routes.php index 0bb149b9109518251214d5cd47fa76318aeef7e6..10786dc2331129d68a1025d923d963708886bc9b 100644 --- a/module/Cms/Web/routes.php +++ b/module/Cms/Web/routes.php @@ -14,7 +14,7 @@ $router->group([ $router->match(['get', 'post'], 'a/{alias_url}', 'DetailController@index'); $router->match(['get', 'post'], 'c/{id}', 'ListController@index'); - $router->match(['get', 'post'], 'search', 'SearchController@index'); + $router->match(['get', 'post'], 'search', 'SearchController@index')->name('aaaaa'); $cats = CmsCatUtil::allSafelyHavingUrl(); foreach ($cats as $item) {