MV framework logo
  • Архитектура
    • Философия
    • Технологии
    • CMF
    • История версий
  • Админ панель
  • Поддержка
  • Обратная связь
  • Примеры кода
    • Новостная лента
    • Слайдер с баннерами
    • Список с фильтрацией
    • Форма с загрузкой файла
    • AJAX форма на jQuery
    • Вопросы и ответы
    • Каталог с товарами
    • Авторизация пользователя
    • Регистрация пользователя
    • Личный кабинет пользователя
Скачать Версия 2.7 от 06.06.2023
Документация
  • Архитектура
    • Философия
    • Технологии
    • CMF
    • История версий
  • Админ панель
  • Поддержка
  • Обратная связь
  • Примеры кода
    • Новостная лента
    • Слайдер с баннерами
    • Список с фильтрацией
    • Форма с загрузкой файла
    • AJAX форма на jQuery
    • Вопросы и ответы
    • Каталог с товарами
    • Авторизация пользователя
    • Регистрация пользователя
    • Личный кабинет пользователя
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
Модели (models)
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны (views) и маршрутизация (routes)
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Index, default и 404 шаблоны
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Правила проверки полей формы
  • Проверка полей формы
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
  • Загрузка из csv файлов
Сессии и безопасность
  • Работа с сессиями
  • AJAX
  • Кэширование
  • Безопасность
  • Отладка
Плагины
  • Общие принципы плагинов
  • Дополнения к административной панели
Документация
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
Модели (models)
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны (views) и маршрутизация (routes)
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Index, default и 404 шаблоны
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Правила проверки полей формы
  • Проверка полей формы
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
  • Загрузка из csv файлов
Сессии и безопасность
  • Работа с сессиями
  • AJAX
  • Кэширование
  • Безопасность
  • Отладка
Плагины
  • Общие принципы плагинов
  • Дополнения к административной панели
MV tracker

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

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 начало работы
MV tracker

© 2012-2023, MV framework team

English MV task tracker system Лицензия

Поделиться