Предустановленные модели
Pages (страницы меню)
Модель "Меню страниц" создана для управления обыкновенными страницами сайта, которые не имеют специально сгенерированного содержимого из форм или других моделей. Содержимое страницы вводится в административной панели в текствую область или визуальный редактор. Также изначально в данная модель создана как древовидная, одно из ее полей имеет тип "parent", вследствие чего можно создавать внутринние подстраницы.
Структура модели, файл "pages.model.php" в папке "models", а также SQL таблица модели "pages" (СУБД SQLite)
<? class Pages extends Model { protected $name = "Меню страниц"; protected $model_elements = array( array("Активировать", "bool", "active", array("on_create" => true)), array("Отображать в меню", "bool", "in_menu", array("on_create" => true)), array("Название", "char", "name", array("required" => true)), array("Заголовок", "char", "title"), array("Родительский раздел", "parent", "parent"), array("Ссылка", "url", "url", array("unique" => true)), array("Редирект", "redirect", "redirect"), array("Позиция", "order", "order"), array("Содержание", "text", "content", array("rich_text" => true)) ); } ?> CREATE TABLE "pages"( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "active" INTEGER, "in_menu" INTEGER, "name" VARCHAR, "title" VARCHAR, "parent" INTEGER, "url" VARCHAR, "redirect" VARCHAR, "order" INTEGER, "content" TEXT)
Изначально данная модель содержит 2 собственных метода (другие методы наследуются от класса "Model").
- defineCurrentPage(Router $router)
Определение параметров для поиска страницы в базе данных (таблица "pages") на основе переданного URL. Возвращает массив параметров для метода "findRecord", который наследуется от класса "Model". Метод "findRecord" в свою очередь строит на основе переданных параметров SQL запрос и в случае успеха возвращает объект класса "Record", содержащий список всех полей страницы из базы данных.
Примеры использования
$content = $mv -> pages -> defineCurrentPage($mv -> router); echo $content -> name; echo $content -> title; echo $content -> content;
- displayMenu($parent [, $only_links])
Функция для отображения списка пунктов меню. Возвращает список ссылок, обернутых в элементы списка li.
Активный пункт меню будет иметь класс "active", а первый элемент будет с классом "first". Атрибут ссылки "href" строится на основе полей "id" и "url" по следующему принципу: если у страницы заполнено поле "url" (например "about"), то будет создана ссылка "/about/", либо будет использован id страницы и построится ссылки вида "/page/17/".
Параметры
- $parent (обязательный)
Id родительского пункта меню. Для вывода корневого списка страниц используется значение -1. - $only_links (не обязательный)
Если передать данному параметру значение "A", то выведется просто последовательность ссылок без обертывания их в элементы списка li.
Примеры использования
echo $mv -> pages -> displayMenu(-1); echo $mv -> pages -> displayMenu(5); echo $mv -> pages -> displayMenu(17, "A");
Blocks (текстовые блоки, фрагменты)
Текстовые фрагменты информации, которая обычно используется для вывода информации в верхней/нижней частях сайта или боковых колонках. Данная информация может отображаться на всех страницах либо меняться в зависимости от вида страницы. Модель изначально не имеет собственных методов, все наследуются от класса "Model".
Структура модели, файл "blocks.model.php" в папке "models", а также SQL таблица модели "blocks" (СУБД SQLite)
<? class Blocks extends Model { protected $name = "Текстовые блоки"; protected $model_elements = array( array("Активация", "bool", "active", array("on_create" => true)), array("Название", "char", "name", array("required" => true)), array("Содержание", "text", "content", array("rich_text" => true)) ); } ?> CREATE TABLE "blocks" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "active" INTEGER, "name" VARCHAR, "content" VARCHAR)
Примеры использования, извлечение записи (строки) из базы данных и вывод полей
$top_content = $mv -> blocks -> findRecord(array("id" => 1, "active" => 1)); $left_content = $mv -> blocks -> findRecord(array("id" => 43)); echo $top_content -> name; echo $left_content -> content;
SEO (данные для seo оптимизации)
Модель используется для формирования meta тегов в html странице, а также создает и редактирует файл "robots.txt". Данная модель отличается от двух предыдущих, тем что представляет собой "Простую модель". Подробнее о моделях данного типа можно почитать в разделе Простые модели.
Структура модели, файл "seo.model.php" в папке "models", а также SQL таблица модели "seo" (СУБД MySQL)
<? class Seo extends Model_Simple { protected $name = "SEO параметры"; protected $model_elements = array( array("Заголовок", "char", "title"), array("Ключевые слова", "text", "keywords"), array("Описание", "text", "description"), array("Robots.txt", "text", "robots") ); } ?> CREATE TABLE `seo` ( `key` varchar(100) NOT NULL, `value` text, PRIMARY KEY (`key`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Примеры использования
Формирование 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; ?>" />
Изначально в заголовки и meta теги всех страниц вводятся данные из таблицы "seo", но для поддержания уникальных значений можно передавать в объект модели дополнительные данные.
$content = $mv -> pages -> defineCurrentPage($mv -> router); $mv -> seo -> mergeParams($content, "name");
В данном случае в методе "mergeParams" происходят следующие действия:
- Передается объект класса Record, содержащий все поля страницы (или любого другого ресурса) из базы данных.
- Если в объекте имеются заполненные поля с названиями "title", "keywords" или "description", то значения по умолчанию (из таблицы "seo") будут полностью заменены данными этих полей.
- Если какое-либо из трех полей не найдено в объекте "$content", то используется второй (необязательный) параметр метода "mergeParams".
- В этом параметре может быть передано имя поля, значение которого будет добавлено к значениям по умолчанию (из таблицы "seo") для поддержания уникальности meta тегов на разных страницах.
- Также можно вызвать метод "mergeParams" с единственным параметром, в котором будет содержаться текстовая строка. Данная строка буде добавлена к параметрам по умолчанию аналогично вызову метода с двумя параметрами.
$mv -> seo -> mergeParams("Наша деятельность"); $mv -> seo -> mergeParams("Маркерная доска 120х200");
Предыдущий раздел
Запуск простого сайта