Документация

Начало работы

Модели (models)

Шаблоны (views) и маршрутизация (routes)

Формы

SQL запросы

Сессии и безопасность

Плагины

Предустановленные модели

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" происходят следующие действия:

  1. Передается объект класса Record, содержащий все поля страницы (или любого другого ресурса) из базы данных.
  2. Если в объекте имеются заполненные поля с названиями "title", "keywords" или "description", то значения по умолчанию (из таблицы "seo") будут полностью заменены данными этих полей.
  3. Если какое-либо из трех полей не найдено в объекте "$content", то используется второй (необязательный) параметр метода "mergeParams".
  4. В этом параметре может быть передано имя поля, значение которого будет добавлено к значениям по умолчанию (из таблицы "seo") для поддержания уникальности meta тегов на разных страницах.
  5. Также можно вызвать метод "mergeParams" с единственным параметром, в котором будет содержаться текстовая строка. Данная строка буде добавлена к параметрам по умолчанию аналогично вызову метода с двумя параметрами.
$mv -> seo -> mergeParams("Наша деятельность");
$mv -> seo -> mergeParams("Маркерная доска 120х200");

Предыдущий раздел

Запуск простого сайта

Следующий раздел

SQLite начало работы