From f49159c21250cb9c92cc448156350911925c6c24 Mon Sep 17 00:00:00 2001 From: filesite Date: Sat, 23 Apr 2022 09:11:31 +0800 Subject: [PATCH] Theme GoogleImage v1.0 released --- conf/app.php | 2 +- lib/DirScanner.php | 19 +++++++++-- .../googleimage/controller/ListController.php | 29 +++++++++++++++-- themes/googleimage/views/layout/main.php | 6 ++++ themes/googleimage/views/site/index.php | 32 +++++++++++++++++-- www/content/Class_DirScanner.md | 2 +- www/content/Manual.md | 3 ++ www/css/googleimage.css | 1 + 8 files changed, 84 insertions(+), 10 deletions(-) diff --git a/conf/app.php b/conf/app.php index a564fb6..1c08862 100644 --- a/conf/app.php +++ b/conf/app.php @@ -22,6 +22,6 @@ return array( //for themes 'googleimage' => [ 'imageHeight' => 180, //图片高度,单位:px - + 'contact' => 'FileSite图片网站订制联系:FileSite.io', ], ); diff --git a/lib/DirScanner.php b/lib/DirScanner.php index 14de123..1c7bc5f 100644 --- a/lib/DirScanner.php +++ b/lib/DirScanner.php @@ -513,12 +513,24 @@ Class DirScanner { } $branch = $this->getDirData($realpath, $files); + + //add parent directory's id + $pid = $this->getId(realpath($dir)); + if (!empty($pid)) { + $branch = array_merge(['pid' => $pid], $branch); + } }else { $pathinfo = pathinfo($realpath); $extension = strtolower($pathinfo['extension']); if ( in_array($extension, $this->supportFileExtensions) ) { if ($extension != 'txt') { $branch = $this->getFileData($realpath); + + //add parent directory's id + $pid = $this->getId(realpath($dir)); + if (!empty($pid)) { + $branch = array_merge(['pid' => $pid], $branch); + } }else { //把描述文件内容合并到被描述的目录或md文件数据中 $branch = $this->mergeDescriptionData($realpath); @@ -569,10 +581,13 @@ Class DirScanner { if (!empty($item['description'])) { $dir['description'] = $item['description']; } + if (!empty($item['pid'])) { + $dir['pid'] = $item['pid']; + } } - if (!empty($item['files'])) { - $dirs = $this->getMenus($item['files']); + if (!empty($item['directories'])) { + $dirs = $this->getMenus($item['directories']); if (!empty($dirs)) { $dir['directories'] = $dirs; } diff --git a/themes/googleimage/controller/ListController.php b/themes/googleimage/controller/ListController.php index 845f4b6..cbd0850 100644 --- a/themes/googleimage/controller/ListController.php +++ b/themes/googleimage/controller/ListController.php @@ -30,13 +30,36 @@ Class ListController extends Controller { $html = $scanner->fixMDUrls($readmeFile['realpath'], $html); } - //TODO: 获取父目录,生成面包屑 - + //获取目录面包屑 + $subcate = $scanResults[$cateId]; + $breadcrumbs = $this->getBreadcrumbs($menus, $subcate); $pageTitle = !empty($titles) ? $titles[0]['name'] : "FileSite.io - 无数据库、基于文件和目录的Markdown文档、网址导航、图书、图片、视频网站PHP开源系统"; $viewName = '//site/index'; //共享视图 - $params = compact('cateId', 'dirTree', 'scanResults', 'menus', 'html'); + $params = compact('cateId', 'dirTree', 'scanResults', 'menus', 'html', 'breadcrumbs'); return $this->render($viewName, $params, $pageTitle); } + //根据目录结构以及当前目录获取面包屑 + protected function getBreadcrumbs($menus, $subcate) { + $breads = []; + + array_push($breads, [ + 'id' => $subcate['id'], + 'name' => $subcate['directory'], + 'url' => $subcate['path'], + ]); + + $foundKey = array_search($subcate['pid'], array_column($menus, 'id')); + if ($foundKey !== false) { + array_unshift($breads, [ + 'id' => $menus[$foundKey]['id'], + 'name' => $menus[$foundKey]['directory'], + 'url' => $menus[$foundKey]['path'], + ]); + } + + return $breads; + } + } diff --git a/themes/googleimage/views/layout/main.php b/themes/googleimage/views/layout/main.php index ea628be..e7171dd 100644 --- a/themes/googleimage/views/layout/main.php +++ b/themes/googleimage/views/layout/main.php @@ -41,6 +41,12 @@ if (!empty($viewFile) && file_exists($viewFile)) {
©FSC 2022 - execute time: {page_time_cost} ms + {$contactInfo}

+eof; + } ?> diff --git a/themes/googleimage/views/site/index.php b/themes/googleimage/views/site/index.php index 7912b02..9768dd4 100644 --- a/themes/googleimage/views/site/index.php +++ b/themes/googleimage/views/site/index.php @@ -1,9 +1,10 @@