Создание нового шаблона
Предположим есть список страниц меню из модели Pages:
- О нас
- Галерея
- Контакты
Главной страницей является страница ‘О нас' и она отображается по шаблону view-index.php. Таким образом страницы 'Галерея' и 'Контакты' отображаются по шаблону view-default.php.
Теперь мы решаем выводить на странице ‘Галерея’ список изображений из другой модели. Для этого нам нужно убрать галерею с шаблона fallback и создать для данной страницы самостоятельный шаблон, где и выведем галерею.
- Задаем для страницы Галерея поле ссылка равным 'gallery', теперь наша страница доступна по запросу /gallery.
В файле config/routes.php добавляем новую строку и тем самым уводим запрос /gallery на новый шаблон.
$mvFrontendRoutes = [ '/' => 'view-index.php', 'e404' => 'view-404.php', 'fallback' => 'view-default.php', '/gallery' => 'view-gallery.php' ];
В папке views создаем файл view-gallery.php со следующим содержимым (первые 2 строки нужны если вы хотите подсвечивать страницу меню, которое выдает модель Pages и выдавать 404 ошибку если страница не существует или отключена).
<? //Файл views/view-gallery.php $content = $mv -> pages -> defineCurrentPage($mv -> router); $mv -> display404($content); include $mv -> views_path.'main-header.php'; ?> <div class="main"> <h1><? echo $content -> name; ?></h1> <div class="gallery"> </div> </div> <? include $mv -> views_path.'main-footer.php'; ?>
Теперь по запросу /gallery подключается файл шаблона view-gallery.php, в котором мы можем добавить саму галерею из другой модели. Возьмем простейший вариант галереи на MV, которая представляет из себя одно поле простой модели.
//Файл models/gallery.model.php class Gallery extends ModelSimple { protected $name = 'Галерея'; protected $model_elements = [ ['Изображения галереи', 'multi_images', 'photos'] ]; }
- Создаем файл models/gallery.model.php, запускаем миграцию и получаем таблицу gallery в базе данных. Добавляем новую модель в файл config/models.php и получаем администрируемый модуль Галерея в административной панели.
Объект галереи доступен как $mv -> gallery представляет из себя экземпляр простой модели с единственным полем photos. Извлекаем фотографии, создаем уменьшенные копии и оборачиваем все в html теги.
//Файл views/view-gallery.php <div class="gallery"> <? $photos = $mv -> gallery -> photos; $photos = $mv -> gallery -> extractImages($photos); foreach($photos as $photo) { echo '<a href="'.$mv -> root_path.$photo['image'].'">'; echo $mv -> gallery -> cropImage($photo['image'], 200, 200).'</a>'; } ?> </div>
Итоговый вид файла views/view-gallery.php
<? $content = $mv -> pages -> defineCurrentPage($mv -> router); $mv -> display404($content); include $mv -> views_path.'main-header.php'; ?> <div class="main"> <h1><? echo $content -> name; ?></h1> <div class="gallery"> <? $photos = $mv -> gallery -> photos; $photos = $mv -> gallery -> extractImages($photos); foreach($photos as $photo) { echo '<a href="'.$mv -> root_path.$photo['image'].'">'; echo $mv -> gallery -> cropImage($photo['image'], 200, 200).'</a>'; } ?> </div> </div> <? include $mv -> views_path.'main-footer.php'; ?>
Предыдущий раздел
Объект MV