Урок 30
Как улучшить ваш блог
15 минБазовый блог готов — что дальше?
У вас есть работающий блог. Но его можно улучшить! Вот идеи для самостоятельной практики.
Комментарии к постам
Позволить посетителям оставлять комментарии.
Что нужно:
- Новая таблица
comments:id, post_id, user_id, content, created_at - Форма комментария на странице поста
- Функции
getCommentsByPostId(),createComment() - Вывод комментариев под постом
Подсказка по SQL:
SELECT comments.*, users.username
FROM comments
JOIN users ON comments.user_id = users.id
WHERE post_id = ?
ORDER BY created_at ASC
Теги и категории
Организовать посты по темам.
Что нужно:
- Таблица
tags:id, name, slug - Таблица связи
post_tags:post_id, tag_id - Страница
tag.php?slug=php— посты с тегом - Выбор тегов при создании поста
Загрузка изображений
Добавить картинки к постам.
Что нужно:
- Поле
imageв таблицеposts - Форма с
<input type="file"> - Обработка загрузки:
$_FILES, проверка типа, сохранение - Папка
uploads/для хранения файлов
Подсказка по PHP:
if (isset($_FILES["image"]) && $_FILES["image"]["error"] === 0) {
$allowed = ["image/jpeg", "image/png", "image/gif"];
if (in_array($_FILES["image"]["type"], $allowed)) {
$filename = uniqid() . "_" . $_FILES["image"]["name"];
move_uploaded_file($_FILES["image"]["tmp_name"], "uploads/" . $filename);
}
}
Пагинация (постраничная навигация)
Если постов много — разбить на страницы.
Что нужно:
- Параметр
?page=2в URL - Расчёт OFFSET:
($page - 1) * $per_page - Общее количество страниц:
ceil($total / $per_page) - Ссылки "← Назад" и "Далее →"
Подсказка:
$page = isset($_GET["page"]) ? max(1, (int)$_GET["page"]) : 1;
$per_page = 10;
$offset = ($page - 1) * $per_page;
$stmt = $pdo->prepare("SELECT * FROM posts ORDER BY created_at DESC LIMIT ? OFFSET ?");
$stmt->execute([$per_page, $offset]);
Поиск по постам
Дать возможность искать посты по ключевым словам.
Что нужно:
- Форма поиска в шапке
- Страница
search.php?q=php - SQL с LIKE
Подсказка:
$query = "%" . $search . "%";
$stmt = $pdo->prepare("
SELECT * FROM posts
WHERE title LIKE ? OR content LIKE ?
ORDER BY created_at DESC
");
$stmt->execute([$query, $query]);
WYSIWYG редактор
Вместо обычного textarea — редактор с форматированием.
Варианты:
Как подключить TinyMCE:
<script src="https://cdn.tiny.cloud/1/no-api-key/tinymce/6/tinymce.min.js"></script>
<script>
tinymce.init({
selector: "textarea[name=content]",
height: 400
});
</script>
Важно: При использовании WYSIWYG нужно аккуратно обрабатывать HTML. Используйте библиотеку вроде HTML Purifier для фильтрации опасного кода.
Приоритеты улучшений
С чего начать:
- Пагинация — просто и полезно
- Поиск — базовая функциональность
- Комментарии — делает блог интерактивным
- Загрузка картинок — визуальное улучшение
- Теги — навигация по темам
Практика — лучший учитель!
Выберите одно улучшение и реализуйте его. Это закрепит ваши навыки лучше любого урока.
Выберите одно улучшение и реализуйте его. Это закрепит ваши навыки лучше любого урока.
Материалы по теме
- Глоссарий digital-терминов Глоссарий
- Статьи блога по разработке и SEO Блог
- Практические чеклисты по внедрению Чеклисты