Browse Source

add file sort support, faq update

master
filesite 1 month ago
parent
commit
80b6e807b1
  1. 83
      FAQ.md
  2. 9
      conf/app.php
  3. 62
      plugins/Common.php
  4. 12
      themes/beauty/controller/ListController.php
  5. 1
      themes/beauty/views/site/index.php

83
FAQ.md

@ -16,6 +16,11 @@ @@ -16,6 +16,11 @@
* [怎么修改浏览器地址栏左侧的小图标?](#怎么修改浏览器地址栏左侧的小图标)
* [相册部署到外网了,点击图片打开有点慢怎么办?](#相册部署到外网了点击图片打开有点慢怎么办)
* [在局域网内使用,能否所有图片使用原图而不是缩略图?](#在局域网内使用能否所有图片使用原图而不是缩略图)
* [怎么对照片、视频、音乐文件进行排序?](#怎么对照片、视频、音乐文件进行排序)
* [怎么设置每页照片、视频、音乐文件数量?](#怎么设置每页照片、视频、音乐文件数量)
* [怎么设置自动播放时每张照片停留时间?](#怎么设置自动播放时每张照片停留时间)
* [怎么设置局域网内访问拥有刷新、设置封面等管理权限?](#怎么设置局域网内访问拥有刷新、设置封面等管理权限)
* [外网访问怎么设置允许当前IP访问拥有刷新、设置封面等管理权限?](#外网访问怎么设置允许当前IP访问拥有刷新、设置封面等管理权限)
* [我的设备cpu性能较差,缩略图显示有点慢且cpu占用较高怎么解决?](#我的设备cpu性能较差缩略图显示有点慢且cpu占用较高怎么解决)
* [更多问题如何联系?](#更多问题如何联系)
@ -112,7 +117,7 @@ docker exec -it machete_album /var/www/machete/bin/upgrade.sh @@ -112,7 +117,7 @@ docker exec -it machete_album /var/www/machete/bin/upgrade.sh
## 怎么关闭网页底部的二维码?
在runtime/custom_config.json中增加配置:
在runtime/custom_config.json中增加以下配置:
```
"showQRImageInFooter": false
```
@ -150,7 +155,7 @@ by <a href="https://filesite.io/" target="_blank">FileSite.io</a> @@ -150,7 +155,7 @@ by <a href="https://filesite.io/" target="_blank">FileSite.io</a>
## 怎么修改浏览器地址栏左侧的小图标?
请创建自己的icon文件,命名为favicon.ico,把它复制到你的图片根目录即可
请创建自己的icon文件,命名为favicon.ico,把它复制到你的图片根目录;
**以容器目录为例:**
```
@ -164,7 +169,7 @@ machete家庭相册默认为局域网使用,配置**enableSmallImageForWan** @@ -164,7 +169,7 @@ machete家庭相册默认为局域网使用,配置**enableSmallImageForWan**
如果你的照片文件大小很大,那么在外网打开可能会很慢。
解决办法,为外网点击图片浏览大图开启缩略图功能,
在自定义配置:runtime/custom_config.json里增加以下配置即可
在自定义配置:runtime/custom_config.json里增加以下配置:
```
"enableSmallImageForWan": true
```
@ -178,6 +183,78 @@ machete家庭相册默认为局域网使用,配置**enableSmallImageForWan** @@ -178,6 +183,78 @@ machete家庭相册默认为局域网使用,配置**enableSmallImageForWan**
```
## 怎么对照片、视频、音乐文件进行排序?
在**runtime/custom_config.json**中增加以下配置:
```
"sortFilesByName": true,
"sortOrderOfFiles": "asc"
```
其中sortFilesByName设置为true,打开文件按名称排序,
sortOrderOfFiles则设定排序方式,asc顺序,desc倒序。
除此之外,还可以在照片目录下增加排序文件:sort.txt,
内容为当前目录下的文件名,格式一行一个,示例:
```
2_20240406223804.jpg
1_20240406223752.jpg
3_20240406223809.jpg
```
如果配置了此排序文件,且sortFilesByName为false关闭状态,则系统会按照排序文件中的文件名从上到下排序。
## 怎么设置每页照片、视频、音乐文件数量?
在自定义配置:runtime/custom_config.json里增加以下配置:
```
"default_page_size": 50
```
## 怎么设置自动播放时每张照片停留时间?
在自定义配置:runtime/custom_config.json里增加以下配置:
```
"slide_show_timeout": 10
```
单位:秒。
## 怎么设置局域网内访问拥有刷新、设置封面等管理权限?
在自定义配置:runtime/custom_config.json里增加以下配置:
```
"adminForLanIps": true
```
系统支持这三类IP:
```
127.0.0.1
172.17.0.1,
192.168.xxx.xxx
```
## 外网访问怎么设置允许当前IP访问拥有刷新、设置封面等管理权限?
在自定义配置:runtime/custom_config.json里增加以下配置:
```
"adminWhiteIps": [
"你的外网ip地址"
]
```
如果部署的时候相册是经过nginx反向代理转发的,请在nginx的配置中设置转发用户ip地址:
```
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
```
## 我的设备cpu性能较差,缩略图显示有点慢且cpu占用较高怎么解决?
machete家庭相册在设计的时候考虑到在嵌入式设备中运行,缩略图功能可由用户的浏览器完成。

9
conf/app.php

@ -3,8 +3,8 @@ @@ -3,8 +3,8 @@
* Config
*/
$configs = array(
'version' => '0.3.6',
'releaseDate' => '2024-10-16',
'version' => '0.3.7',
'releaseDate' => '2024-10-22',
'showVersion' => false, //默认不显示版本号和发布日期
'default_timezone' => 'Asia/Hong_Kong', //timezone, check more: https://www.php.net/manual/en/timezones.asia.php
@ -90,8 +90,11 @@ $configs = array( @@ -90,8 +90,11 @@ $configs = array(
'defaultMenuStatusInPC' => 'closed', //PC下左侧目录默认状态,可选值:opened, closed
'sortFilesByName' => false, //图片、视频、音乐文件按名字排序,默认关闭,以文件创建时间倒序排
'sortOrderOfFiles' => 'asc', //排序方式,asc顺序,desc倒序
//开启局域网ip拥有管理权限,如:保存目录、视频封面图
//默认只支持192.168网段以及本机(127.0.0.1、localhost)
//默认只支持192.168网段以及本机(127.0.0.1、172.17.0.1, localhost)
'adminForLanIps' => true,
//拥有管理权限的ip白名单

62
plugins/Common.php

@ -721,4 +721,66 @@ Class Common { @@ -721,4 +721,66 @@ Class Common {
return $admin;
}
//根据指定的数组元素值对数组进行排序
public static function sortArrayByValue($array, $keyName, $sortOrder = 'asc') {
if (empty($array) || count($array) == 0) {return $array;}
$sorted = $array;
$tmp = [];
foreach ($array as $index => $item) {
$tmp[$item[$keyName]] = $index;
}
if ($sortOrder == 'asc') {
ksort($tmp);
}else {
krsort($tmp);
}
$newArr = [];
foreach ($tmp as $key => $index) {
$newArr[$index] = $array[$index];
}
return !empty($newArr) ? $newArr : $sorted;
}
//根据指定的数组对数组进行排序
public static function sortArrayByFilenameList($array, $sortedArray) {
if (empty($array) || count($array) == 0) {return $array;}
$sorted = $array;
$tmp = [];
foreach ($sortedArray as $filename) {
foreach ($array as $index => $val) {
if (!empty($filename) && "{$val['filename']}.{$val['extension']}" == $filename) {
$tmp[$filename] = $index;
break;
}
}
}
$newArr = [];
$sortIndexes = [];
foreach ($tmp as $filename => $index) {
$newArr[$index] = $array[$index];
array_push($sortIndexes, $index);
}
//append others
if (count($newArr) < count($array)) {
foreach ($array as $index => $val) {
if (in_array($index, $sortIndexes)) {
continue;
}
$newArr[$index] = $val;
}
}
return !empty($newArr) ? $newArr : $sorted;
}
}

12
themes/beauty/controller/ListController.php

@ -159,6 +159,18 @@ Class ListController extends Controller { @@ -159,6 +159,18 @@ Class ListController extends Controller {
});
}
//文件排序支持:默认按创建时间倒序、按文件名排序、按目录说明文件_sort.txt排序
if (!empty(FSC::$app['config']['sortFilesByName'])) {
$sortOrder = !empty(FSC::$app['config']['sortOrderOfFiles']) ? FSC::$app['config']['sortOrderOfFiles'] : 'asc';
$sortField = 'filename';
$scanResults[$cateId]['files'] = Common::sortArrayByValue($scanResults[$cateId]['files'], $sortField, $sortOrder);
}else if (!empty($scanResults[$cateId]['sort'])) {
$sortByArray = explode("\n", $scanResults[$cateId]['sort']);
$scanResults[$cateId]['files'] = Common::sortArrayByFilenameList($scanResults[$cateId]['files'], $sortByArray);
}
//获取当前目录下的readme
$cateReadmeFile = $scanner->getDefaultReadme();
if (!empty($cateReadmeFile)) {

1
themes/beauty/views/site/index.php

@ -325,7 +325,6 @@ eof; @@ -325,7 +325,6 @@ eof;
break;
}
$title = !empty($file['title']) ? $file['title'] : $file['filename'];
//图片、视频显示文件修改日期
$title = Common::getDateFromString($file['filename']);
if (empty($title) && !empty($file['fstat']['mtime']) && !empty($file['fstat']['ctime'])) {

Loading…
Cancel
Save