Grav Multisite Setup-如何实现内部包含更多子目录的子目录?

问题描述 投票:0回答:1

我是Grav的新手,因为遇到了其他地方都找不到解决方案的问题。希望你们中的一些人能够提供帮助。目前,我正在尝试以一种可以拥有多个子文件夹的方式自定义Grav,这些子文件夹反过来会在子站点中包含更多文件夹。我的文件夹结构如下所示:

  • 用户
    • 网站
      • v1
        • 网站
          • subsitefolder1
            • 页面(文件夹)
              • 其中包含实际页面的文件夹
          • subsitefolder2
      • v2
        • 网站
          • 子站点文件夹
  • ...

我使用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看起来应该正确,因为它与文件夹结构匹配,但是不能正常工作。

谢谢。欢迎任何建议。

php content-management-system grav
1个回答
0
投票

Dovresti vedere questa soluzione。我好有趣访问https://github.com/getgrav/grav/issues/1501

© www.soinside.com 2019 - 2024. All rights reserved.