From 1b54dac98eebaedb7671e4825be858c98b993e41 Mon Sep 17 00:00:00 2001 From: ModStart Date: Sat, 8 Jan 2022 14:39:57 +0800 Subject: [PATCH] develop --- module/Cms/Admin/Controller/CatController.php | 15 +++++++++++++++ .../Cms/Admin/Controller/ContentController.php | 7 +++++++ module/Cms/Type/CatUrlMode.php | 16 ++++++++++++++++ module/Cms/Type/ContentUrlMode.php | 3 +++ module/Cms/Util/CmsCatUtil.php | 3 ++- module/Cms/Util/CmsRouteUtil.php | 14 ++++++++++++++ module/Cms/Util/UrlModeUtil.php | 10 ---------- module/Cms/View/pc/cms/list/news.blade.php | 6 +++--- module/Cms/Web/Controller/ListController.php | 11 ++++++++++- module/Cms/Web/routes.php | 2 +- 10 files changed, 71 insertions(+), 16 deletions(-) create mode 100644 module/Cms/Type/CatUrlMode.php create mode 100644 module/Cms/Util/CmsRouteUtil.php delete mode 100644 module/Cms/Util/UrlModeUtil.php diff --git a/module/Cms/Admin/Controller/CatController.php b/module/Cms/Admin/Controller/CatController.php index 3d102012..b1e5bddd 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 1311e692..47a86d63 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 00000000..c7ef51e8 --- /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 00000000..df5a4f4c --- /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 2e2cbc4a..00000000 --- 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 80a0b72d..096d2951 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 0bb149b9..10786dc2 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) { -- GitLab