Коллекции
Пути
Настройка пути по умолчанию
По умолчанию каждому из элементов Вашей коллекции (если они расширяют
родительский шаблон) будет назначен путь, где первый сегмент - это имя коллекции, а второй сегмент - это имя файла, преобразованное в URL-адрес "slug" (слаг) все строчные буквы, слова разделены тире. Таким образом, путь по умолчанию для файла с именем My First Blog Post.md
в коллекции с именем posts
будет /posts/my-first-blog-post
.
Однако Jigsaw дает Вам возможность настраивать пути Вашей коллекции, добавляя ключ path
в массив Вашей коллекции.
Сокращение пользовательский путей
Вы можете указать путь к Вашей коллекции в виде строки. В этой строке Вы можете ссылаться на значения любых переменных, которые определены в передней части YAML элемента коллекции, указав имя переменной в квадратных скобках {}
. Если каждый из Ваших элементов коллекции включает, например, переменную title
, Вы можете определить свой путь как:
'path' => 'blog/{title}' // 'blog/Title Of First Post'
Кроме того, доступны переменные filename
(содержащие имя файла без расширения) и collection
(содержащие имя коллекции):
'path' => '{collection}/{filename}' // 'posts/my first blog post'
В большинстве случаев при использовании имен файлов или заголовков Вы захотите «объединить» их, когда они используются как часть пути. Для этого добавьте разделитель к имени переменной:
'path' => '{collection}/{-filename}' // 'posts/my-first-blog-post'
'path' => '{collection}/{_filename}' // 'posts/my_first_blog_post'
Если Вы включили дату в качестве переменной в элементы коллекции (в формате ГГГГ-ММ-ДД), Вы можете управлять форматированием этой даты в своем пути, поставив после имени переменной вертикальную черту и используя коды форматирования даты PHP. Для любых /
в Вашем коде форматирования даты Jigsaw создаст подкаталоги по мере необходимости:
'path' => '{collection}/{published|Y-m-d}/{-title}' // 'posts/2017-03-27/title-of-first-post'
'path' => '{collection}/{published|Y/m}/{-title}' // 'posts/2017/03/title-of-first-post'
'path' => 'blog-{published|F-Y}/{-title}' // 'blog-March-2017/title-of-first-post'
Замыкание пользовательский путей
Хотя сокращение пути позволяет Вам легко создавать наиболее распространенные форматы постоянных ссылок, Вы также можете вернуть закрытие из path
, если Вам требуется больше контроля. Замыкание получит содержимое текущего элемента коллекции в качестве своего первого параметра. Например:
use Illuminate\Support\Str;
'path' => function ($page) {
return 'posts/' . ($page->featured ? 'featured/' : '') . Str::slug($page->getFilename());
},