MV framework logo
  • Архитектура
  • Философия
  • Админ панель
  • Поддержка
  • Обратная связь
Документация
Скачать .zip версия 3.2.0 от 25.12.2024
  • Архитектура
  • Философия
  • Админ панель
  • Поддержка
  • Обратная связь
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
  • Отладка
Модели
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны и маршрутизация
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы и Http
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Валидация полей формы
  • Безопасность форм
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
Дополнительно
  • AJAX
  • Плагины
  • Кэширование
  • Безопасность
  • Дополнения к административной панели
Документация
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
  • Отладка
Модели
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны и маршрутизация
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы и Http
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Валидация полей формы
  • Безопасность форм
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
Дополнительно
  • AJAX
  • Плагины
  • Кэширование
  • Безопасность
  • Дополнения к административной панели
MV tracker

Новостная лента

Создаем файл модели models/news.model.php

class News extends Model
{
    protected $name = "Новости";

    protected $model_elements = [
        ["Активация", "bool", "active", ["on_create" => true]),
        ["Дата", "date", "date", ["required" => true]),
        ["Название", "char", "name", ["required" => true]),
        ["Ссылка", "url", "url", ["unique" => true, "translit_from" => "name"]),
        ["Изображение", "image", "image"],
        ["Текст новости", "text", "content", ["rich_text" => true])
);

Вносим название модели в файл config/models.php

$mvActiveModels = ['pages', 'blocks', ... , 'news'];

Создаем SQL таблицу в базе данных, после чего модель может работать в административной панели

CREATE TABLE `news` (
  `id` int(11) NOT NULL,
  `active` tinyint(1) NOT NULL,
  `name` varchar(250) NOT NULL,
  `date` date NOT NULL,
  `image` varchar(250) NOT NULL,
  `url` varchar(200) NOT NULL,
  `content` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `news` ADD PRIMARY KEY (`id`), ADD KEY `url` (`url`);
ALTER TABLE `news` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

Создаем файлы шаблонов views/view-news.php и views/view-news-details.php, а также вносим маршруты к шаблонам в файл config/routes.php

$mvFrontendRoutes = [ ... ,

"news/" => "view-news.php",
"news/*/" => "view-news-details.php"
];

Добавляем методы в файл модели

public function defineNewsPage(Router $router)
{
   $url_parts = $router -> getUrlParts();
   $record = false;

   if(count($url_parts) == 2)
       if(is_numeric($url_parts[1]))
           $record = $this -> find(["id" => $url_parts[1], "active" => 1]);
       else
           $record = $this -> find(["url" => $url_parts[1], "active" => 1]);

   return $record;
}

public function display()
{
    $params = ["active" => 1, "order->desc" => "date", 
                    "limit->" => $this -> pager -> getParamsForSelect(]);

    $rows = $this -> select($params);
    $html = "";

    foreach($rows as $row)
    {
        $url = $this -> root_path."news/".($row['url'] ? $row['url'] : $row['id'])."/";

        $html .= "
\n"; $html .= "

".$row['name']."

\n"; $html .= "

".I18n :: formatDate($row['date'])."

\n"; if($row['image']) { $html .= "\n"; $html .= $this -> cropImage($row['image'], 187, 127)."\n"; } $html .= "

".Service :: cutText($row['content'], 350, " ...")."

\n"; $html .= "
\n"; } return $html; } public function displayPreviousAndNext($current_id, $current_date) { $html = ""; $params = ["active" => 1, "id!=" => $current_id, "date>=" => $current_date, "order->asc" => "date"]; if($record = $this -> find($params)) { $url = $this -> root_path."news/".($record -> url ? $record -> url : $record -> id)."/"; $html .= "Предыдущая новость\n"; } $params = ["active" => 1, "id!=" => $current_id, "date<=" => $current_date, "order->desc" => "date"]; if($record = $this -> find($params)) { $url = $this -> root_path."news/".($record -> url ? $record -> url : $record -> id)."/"; $html .= "Следующая новость\n"; } return $html; }

Содержимое файла шаблона view-news.php

$count_records = $mv -> news -> countRecords(["active" => 1]);
$current_page = $mv -> router -> defineCurrentPage("page");
$mv -> news -> runPager($count_records, 7, $current_page);

$path = $mv -> root_path."news/";

$mv -> seo -> mergeParams("Новости");
include $mv -> views_path."main-header.php";

Главная

Новости

echo $mv -> news -> display(); if($mv -> news -> pager -> hasPages()) { echo "
\nСтраница\n"; echo $mv -> news -> pager -> displayPrevLink("предыдущая", $path); echo $mv -> news -> pager -> display($path, false); echo $mv -> news -> pager -> displayNextLink("следующая", $path); echo "
\n"; }
include $mv -> views_path."main-footer.php";

Содержимое файла шаблона view-news-details.php

$record = $mv -> news -> defineNewsPage($mv -> router);
$mv -> display404($record);
$mv -> seo -> mergeParams($record, "name");

include $mv -> views_path."main-header.php";

Главная Новости

echo $record -> name;

echo I18n :: formatDate($record -> date);
echo $mv -> news -> cropImage($record -> image, 383, 258); echo $record -> content;
echo $mv -> news -> displayPreviousAndNext($record -> id, $record -> date);
include $mv -> views_path."main-footer.php";

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

Template

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

Слайдер с баннерами
MV workshop banner
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться