Предустановленные модели
Pages страницы меню
Модель 'Меню страниц' создана для управления обыкновенными страницами сайта, которые не имеют специально сгенерированного контента из форм или других моделей. Содержимое страницы вводится в административной панели в текстовую область или визуальный редактор. Также изначально в данная модель создана как древовидная, одно из ее полей имеет тип parent, вследствие чего можно создавать внутренние подоазделы.
Структура модели, файл models/pages.model.php.
class Pages extends Model
{
protected $name = 'Меню страниц';
protected $model_elements = [
['Активировать', 'bool', 'active', ['on_create' => true]],
['Отображать в меню', 'bool', 'in_menu', ['on_create' => true]],
['Название', 'char', 'name', ['required' => true]],
['Заголовок', 'char', 'title'],
['Родительский раздел', 'parent', 'parent'],
['Ссылка', 'url', 'url', ['unique' => true]],
['Редирект', 'redirect', 'redirect'],
['Позиция', 'order', 'order'],
['Содержание', 'text', 'content', ['rich_text' => true]]
];
}
Изначально данная модель содержит 2 собственных метода. Другие методы наследуются от базового класса Model.
- defineCurrentPage(Router $router)
Определение параметров для поиска страницы в таблице pages на основе переданного URL. Возвращает массив параметров для метода find(), который наследуется от класса Model. Метод find() в свою очередь строит на основе переданных параметров SQL запрос и в случае успеха возвращает объект класса Record, содержащий список всех полей страницы из базы данных.
$content = $mv -> pages -> defineCurrentPage($mv -> router);
echo $content -> name;
echo $content -> title;
echo $content -> content;
- displayMenu($parent)
Функция для отображения списка пунктов меню. Возвращает список ссылок для тэга ul.
Активный пункт меню будет иметь класс 'active'. Атрибут ссылки href строится на основе полей id и url по следующему принципу: если у страницы заполнено поле url (например 'about'), то будет создана ссылка /about, либо будет использован id страницы и построится ссылки вида /page/17.
$parent - обязательный параметр, Id родительского раздела меню. Для вывода корневого списка страниц используется значение -1.
//Вывод из корневого раздела
echo $mv -> pages -> displayMenu(-1);
//Вывод из раздела с id=5
echo $mv -> pages -> displayMenu(5);
Blocks текстовые блоки
Текстовые фрагменты информации, которая обычно используется для вывода HTML в верхней либо нижней частях сайта или боковых колонках. Данная информация может отображаться на всех страницах либо меняться в зависимости от вида страницы. Модель изначально не имеет собственных методов, все наследуются от класса Model.
Структура модели, файл models/blocks.model.php.
class Blocks extends Model
{
protected $name = 'Текстовые блоки';
protected $model_elements = [
['Активация', 'bool', 'active', ['on_create' => true]],
['Название', 'char', 'name', ['required' => true]],
['Содержание', 'text', 'content', ['rich_text' => true]]
];
}
Примеры использования, извлечение записи из базы данных и вывод полей.
$top_content = $mv -> blocks -> find(['id' => 1, 'active' => 1]);
$left_content = $mv -> blocks -> find(['id' => 43]);
echo $top_content -> name;
echo $left_content -> content;
SEO данные
Модель используется для формирования meta тегов в HTML коде страницы, а также редактирует файл robots.txt. Данная модель отличается от двух предыдущих, тем что представляет собой простую модель. Подробнее о моделях данного типа можно прочесть в разделе Простые модели.
Структура модели, файл seo.model.php в папке models.
class Seo extends ModelSimple
{
protected $name = 'SEO параметры';
protected $model_elements = [
['Заголовок', 'char', 'title', ['help_text' => 'Значение заголовка (title) по умолчанию для всех страниц']],
['Ключевые слова', 'text', 'keywords', ['help_text' => 'Ключевые слова (meta keywords) по умолчанию для всех страниц']],
['Описание', 'text', 'description', ['help_text' => 'Описание (meta description) по умолчанию для всех страниц']],
['Robots.txt', 'text', 'robots', ['help_text' => 'Содержимое файла robots.txt']],
['Meta данные в head', 'text', 'meta_head', ['help_text' => 'Meta тэги, счетчики, плагины']],
['Meta данные в body', 'text', 'meta_footer', ['help_text' => 'Счетчики и плагины']]
];
}
Примеры использования.
Формирование meta тегов и заголовков страницы, обычно находится в файле views/main-header.php.
<title><? echo $mv -> seo -> title; ?></title>
<meta name='description' content='<? echo $mv -> seo -> description; ?>' />
<meta name='keywords' content='<? echo $mv -> seo -> keywords; ?>' />
<?
//Склейка параметров записи с общими данными seo
$content = $mv -> pages -> defineCurrentPage($mv -> router);
$mv -> seo -> mergeParams($content, 'name');
//Склейка с текствовой строкой
$mv -> seo -> mergeParams('Наша деятельность');
$mv -> seo -> mergeParams('Маркерная доска 120х200');
//Вывод общих мета данных и счетчиков
echo $mv -> seo -> displayMetaData('head');
echo $mv -> seo -> displayMetaData('footer');
?>
В данном случае в методе mergeParams() происходят следующие действия:
- Передается объект класса Record, содержащий все поля страницы из базы данных.
- Если в объекте имеются заполненные поля с названиями title, keywords или description, то значения по умолчанию из таблицы seo будут полностью заменены данными этих полей.
- Если какое-либо из трех полей не найдено в объекте, то используется второй необязательный параметр метода mergeParams().
- В этом параметре может быть передано имя поля, значение которого будет добавлено к значениям по умолчанию из таблицы seo для поддержания уникальности meta тегов на разных страницах.
- Также можно вызвать метод mergeParams() с единственным параметром, в котором будет содержаться текстовая строка. Данная строка будет добавлена к параметрам по умолчанию аналогично вызову метода с двумя параметрами.
Предыдущий раздел
Запуск простого сайта