我是Grav的新来者,一直陷在一个我在其他地方找不到任何解决方案的问题上。希望你们中的一些人能够提供帮助。目前,我正在尝试以一种可以拥有多个子文件夹的方式自定义Grav,这些子文件夹反过来会在子站点中包含更多文件夹。 我的文件夹结构如下:
我使用Grav官方指南进行多站点设置,并在Grav的根目录中创建了setup.php(用于子目录)。但不幸的是,这仅适用于v1文件夹级别的站点。 按照我上面的结构要求,位于更深层次的文件夹中的网站无法正常工作。
因此,我尝试自定义setup.php,以便它正确生成新路径。
我以为我已将路径与文件夹结构进行了匹配,但是网站仅显示到subsitefolder1
级别。
因此v1/subsitefolder1
可以正常工作,因为它显示了登录页面,但是甚至登录页面v1/subsitefolder1/landingpage
的实际URL也不再起作用。
我试图更改路径变量以包括新添加的文件夹级别,看起来应该可以使用,因为生成的Url以与旧setup.php相同的方式(与其他文件夹级别相同)匹配了文件夹结构。但这没有用。这是我自定义的setup.php当前的样子:
<?php
/**
* Multisite setup for sub-directories or path based
* URLs for subsites.
*
* DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
*/
use Grav\Common\Filesystem\Folder;
// Get relative path from Grav root.
$path = isset($_SERVER['PATH_INFO'])
? $_SERVER['PATH_INFO']
: Folder::getRelativePath($_SERVER['REQUEST_URI'], ROOT_DIR);
// Extract name of subsite from path
$name = Folder::shift($path);
$prefix = "/{$name}";
//add another layer for deeper subsites
$subsites= $name . '/' . $path . '/';
//concatenates $name sites and $path"
$urlwithsite=$name . '/' . 'sites/' . $path . '/';
// overwrite folder to contain whole path after user/
$folder = "sites/{$urlwithsite}";
if (!$name || !is_dir(ROOT_DIR . "user/{$folder}")) {
return [];
}
// Prefix all pages with the name of the subsite
$container['pages']->base($subsites);
return [
'environment' => $name,
'streams' => [
'schemes' => [
'user' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ["user/{$folder}"],
]
]
]
]
];
生成的URL看起来应该是正确的,因为它与文件夹结构匹配,但是不能正常工作。
先谢谢了。欢迎任何建议。