Коллекции
Переменные и вспомогательные функции
Каждая коллекция может иметь свой собственный набор переменных и вспомогательных методов, определенных в массиве коллекции в config.php. Они имеют тот же формат, что и переменные и вспомогательные методы для всего сайта, которые определены на верхнем уровне массива config.php.
Переменные
Как и в случае с общесайтовыми переменными, переменные коллекции, определенные в config.php, могут действовать как значения по умолчанию, которые могут быть переопределены переменными с тем же именем, указанными в начальной части YAML элемента коллекции. Фактически, переменные верхнего уровня в config.php будут переопределены одноименными переменными в массиве коллекции, которые в дальнейшем будут переопределены ссылками в заголовке YAML любой отдельной страницы, что позволит Вам настроить каскад значений переменных по умолчанию. Например:
config.php
<?php
return [
'author' => 'Автор сайта по умолчанию',
'collections' => [
'posts' => [
'author' => 'Автор блога по умолчанию',
],
],
];
__posts/blog-post-1.blade.php_
---
extends: _layouts.post
title: Мой первый пост
author: Кейт Дамиани
---
@section ('content')
<h1>{{ $page->title }}</h1>
<p>By {{ $page->author }}</p>
@endsection
Автором этого элемента коллекции будет Кейт Дамиани, значение из заголовка YAML.
__posts/blog-post-2.blade.php_
---
extends: _layouts.post
title: Мой второй пост
---
@section ('content')
<h1>{{ $page->title }}</h1>
<p>By {{ $page->author }}</p>
@endsection
Для этого элемента коллекции автором будет Автор блога по умолчанию, значение из массива posts в config.php.
about-us.blade.php
---
extends: _layouts.about
title: О нашей компании
---
@section ('content')
<h1>{{ $page->title }}</h1>
<p>By {{ $page->author }}</p>
@endsection
Для этой обычной страницы (не являющейся коллекцией) автором будет Автор сайта по умолчанию, значение из верхнего уровня config.php.
Вспомогательные функции
Вспомогательные функции могут быть включены в массив настроек коллекции в config.php и будут доступны для всех элементов этой коллекции. Те же правила каскадирования, которые применяются к переменным, также применимы к функциям, то есть функции, определенные для коллекции, переопределят функцию с тем же именем, определенную на верхнем уровне. Например:
config.php
<?php
return [
'excerpt' => function ($page, $characters = 100) {
return substr($page->getContent(), 0, $characters);
},
'collections' => [
'posts' => [
'excerpt' => function ($page, $characters = 50) {
return substr(strip_tags($page->getContent()), 0, $characters);
},
],
],
];