Grav Multisite Setup - Как реализовать подкаталог с большим количеством подкаталогов внутри? - PullRequest
0 голосов
/ 27 апреля 2019

Я новичок в Grav и застрял на проблеме, для которой я не мог найти никакого решения в другом месте.Надеюсь, некоторые из вас смогут помочь.В данный момент я пытаюсь настроить Grav таким образом, чтобы у меня было несколько подпапок, которые, в свою очередь, содержат больше папок с моими дочерними сайтами.Моя структура папок выглядит следующим образом:

  • пользователь
    • сайты
      • v1
        • сайты
          • subsitefolder1
            • pages (папка)
              • папка с действительными страницами внутри
          • subsitefolder2
      • v2
        • сайтов
          • дочерних папок
  • ...

Я использовал официальное руководство Grav для установки с несколькими сайтами и создал файл setup.php (для подкаталога) в корневом каталоге Grav.Но, к сожалению, это работало только для сайтов, которые были на уровне моей папки v1.Сайты, которые расположены в папках на более глубоком уровне, как требует моя структура выше, не работают.

Поэтому я попытался настроить файл setup.php, чтобы он правильно генерировал новый путь.Я подумал, что соответствовал пути к структуре папок, но сайты отображаются только до уровня subsitefolder1.Так что v1/subsitefolder1 работает, так как показывает целевую страницу, но даже фактический URL для целевой страницы v1/subsitefolder1/landingpage больше не работает.

Я попытался изменить переменные пути, чтобы включить вновь добавленные уровни папок, которые выглядели так, как будто они должны работать, поскольку сгенерированный 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 выглядит так, как будто он должен быть правильным, так как он соответствует структуре папки, но он не работает должным образом.

Заранее спасибо.Любой совет приветствуется.

...