Личный блог
Реализуйте личный блог, в котором автор будет писать и размещать свои статьи.
Основные возможности проекта
- Главная страница со списком статей и пагинацией (по 10 статей).
- Детальная страница каждой статьи с полной информацией.
- Система категорий для статей.
- Отложенная публикация статей (запланированные статьи).
- Админ-панель с авторизацией для управления статьями.
- Создание, редактирование и удаление статей.
Главная страница
На главной странице блога должен быть выведен список 10 последних статей с пагинацией. Каждая статья должна содержать:
- Заголовок статьи (ссылка на полный текст).
- Краткое описание (анонс).
- Категория статьи (ссылка на страницу с фильтром по категории).
- Дата публикации.
- Ссылка на страницу с полным текстом.
Статьи должны быть отсортированы по убыванию даты (сначала новые). При клике на категорию открывается страница со списком статей из этой категории. Запланированные статьи не отображаются на главной странице до наступления даты публикации.
Страница статьи
На странице отдельной статьи должна быть представлена полная информация:
- Заголовок статьи.
- Категория.
- Полный текст статьи.
- Дата публикации.
- Количество просмотров (счетчик обновляется при каждом открытии).
Категории
На сайте должна быть реализована система категорий для статей:
- При создании статьи автор выбирает категорию из заранее созданного списка.
- Категории отображаются на главной странице и на странице статьи.
- При клике на категорию выводится список всех статей из этой категории.
- В админ-панели можно управлять категориями (создание, редактирование, удаление).
Регистрация и авторизация для админки
На сайте должна быть реализована система авторизации для доступа в админ-панель:
- Единственный пользователь (автор блога) с фиксированным логином.
- Пароль для входа хранится в базе данных в захэшированном виде.
- Форма входа: логин и пароль.
- После успешного входа открывается админ-панель.
- Сессия ограничена по времени (автоматический выход через заданное время).
- Валидация всех полей на стороне сервера.
Админ-панель
В админ-панели автор может управлять статьями и категориями:
- Просмотр списка всех статей с пагинацией.
- Для каждой статьи отображается заголовок, категория, дата создания и статус (опубликована, запланирована, черновик).
- Фильтр по статусу (опубликованные, запланированные, черновики).
- Ссылка на редактирование статьи.
- Ссылка на удаление статьи (с подтверждением).
- Ссылка на создание новой статьи.
- Раздел управления категориями (список, создание, редактирование, удаление).
Добавление статьи в админке
На странице добавления статьи располагается форма со следующими полями:
- Заголовок статьи (инпут).
- Краткое описание (текстареа).
- Полный текст статьи (текстареа).
- Категория (выпадающий список).
- Дата публикации (по умолчанию - текущая дата).
- Возможность указать дату публикации в будущем (отложенная публикация).
- Чекбокс "Черновик" (статья не публикуется на сайте, пока не будет снята пометка).
- Кнопка "Сохранить".
Отложенная публикация
Должна быть реализована возможность отложенной публикации статей:
- При создании статьи можно указать дату и время публикации в будущем.
- До наступления указанной даты статья не отображается на сайте.
- В админ-панели у таких статей отображается статус "Запланирована" и указана дата публикации.
- В назначенную дату и время статья автоматически становится доступной на сайте.
- Запланированную статью можно отредактировать или удалить до момента публикации.
- Дату публикации можно изменить в любой момент до наступления указанной даты.
Управление категориями
В отдельном разделе админ-панели реализовано управление категориями:
- Список всех существующих категорий с пагинацией.
- Форма для создания новой категории (название и описание).
- Редактирование существующих категорий.
- Удаление категорий (с проверкой наличия статей в этой категории).
- При удалении категории статьи остаются, но категория у них сбрасывается.
Дополнительные возможности
- Поиск статей по ключевым словам (название и содержимое).
- Архив статей по годам и месяцам (автоматически генерируется).
- Автоматическое создание ЧПУ (человеко-понятных URL) из заголовка.
- Вывод похожих статей (по категории) на странице статьи.