Создание нового шаблона
Предположим есть список страниц меню из модели "Pages": "О нас", "Галерея", "Контакты". Главной страницей является страница "О нас" (значение поля "Ссылка" равно "index") и она отображается по шаблону "view-index.php". Таким образом страницы "Галерея" и "Контакты" отображаются по шаблону "view-default.php".
Теперь мы решаем выводить на странице "Галерея" разбитый на страницы список изображений из другой модели. Для этого нам нужно убрать галерею с шаблона "default" и создать для данной страницы самостоятельный шаблон, где и выведем галерею.
- Задаем для страницы "Галерея" поле ссылка равным "gallery", теперь наша страница доступна по запросу "/gallery/".
- В файле "config/routes.php" добавляем новую строку и тем самым уводим запрос "gallery/" на новый шаблон.
$mvFrontendRoutes = array( "index" => "view-index.php", "404" => "view-404.php", "default" => "view-default.php", "gallery/" => "view-gallery.php" );
- В папке "views" создаем файл "view-gallery.php" со следующим содержимым (первые 2 строки нужны если вы хотите подсвечивать страницу меню, которое выдает модель "Pages" и выдавать 404 ошибку если страница не существует или отключена).
<? $content = $mv -> pages -> defineCurrentPage($mv -> router); $mv -> display404($content); include $mv -> views_path."main-header.php"; ?> <? include $mv -> views_path."main-footer.php"; ?>
- Теперь по запросу "gallery" подключается файл шаблона "view-gallery.php", в котором мы можем добавить саму галерею из другой модели. Возьмем простейший вариант галереи на mV, которая представляет из себя одно поле простой модели.
<? class Gallery extends Model_Simple { protected $name = "Галерея"; protected $model_elements = array(array("Изображения галереи", "multi_images", "photos")); } ?>
CREATE TABLE "gallery" ( "key" VARCHAR PRIMARY KEY NOT NULL, "value" VARCHAR)
- Создаем файл "models/gallery.model.php", таблицу "gallery", добавляем новую модель в файл "config/models.php" и получаем администрируемый модуль "Галерея" в административной панели.
- Объект галереи доступен как "$mv -> gallery" представляет из себя экземпляр простой модели с единственным полем "photos". Извлекаем фотографии, создаем уменьшенные копии и оборачиваем все в html теги.
<div id="gallery"> <? $gallery_contents = $mv -> gallery -> loadIntoRecord(); //Получаем объект класса "Record" //Разделяем изображения на массив, комментарии отбрасываем $photos = $gallery_contents -> extractImages("photos", "no-comments"); foreach($photos as $photo) //Выводим изображения как уменьшенную копию и ссылку на полноразмерное изображение { echo '<a class="lightbox" href="'.$mv -> root_path.$photo.'">'; echo $mv -> gallery -> cropImage($photo, 200, 200)."</a>"; } ?> </div>
- Итоговый вид файла "view-gallery.php"
<? $content = $mv -> pages -> findRecord($mv -> pages -> defineUrlType($mv -> router)); $mv -> display404($content); include $mv -> views_path."main-header.php"; ?> <div id="gallery"> <? $gallery_contents = $mv -> gallery -> loadIntoRecord(); $photos = $gallery_contents -> extractImages("photos", "no-comments"); foreach($photos as $photo) { echo '<a class="lightbox" href="'.$mv -> root_path.$photo.'">'; echo $mv -> gallery -> cropImage($photo, 200, 200)."</a>"; } ?> </div> <? include $mv -> views_path."main-footer.php"; ?>
Предыдущий раздел
Index, default и 404 шаблоны