NTM Solutions

Bài đăng nổi bật

🐘 PHP Cơ Bản 8.2 — CẤP ĐỘ TRỨNG🥚

Tự học PHP từ ZERO đến làm web động #laptrinhphpcoban 📘 PHẦN 1 — NHẬP MÔN PHP Bài 00 — Giới thiệu khóa học & cài đặt môi trường PHP là ...

Thứ Hai, 29 tháng 6, 2026

📘Bài 29 — Làm Menu / Header / Footer Động📦

Sau khi biết cách dùng includerequire, bước tiếp theo là tách giao diện website thành nhiều phần riêng biệt để dễ quản lý.

Thay vì copy cùng một đoạn menu, header và footer vào hàng chục trang khác nhau, ta chỉ cần sửa một file duy nhất.


🎯 Vì sao cần Header/Footer động?

Giả sử website có:

  • Trang chủ

  • Giới thiệu

  • Liên hệ

  • Tin tức

  • Sản phẩm

Nếu menu nằm trực tiếp trong từng file:

index.php
about.php
contact.php
news.php
product.php

Mỗi lần thêm menu mới:

<li>Khuyến mãi</li>

Bạn phải sửa tất cả các file.

❌ Tốn thời gian

❌ Dễ sai sót

❌ Khó bảo trì



🏗️ Cấu trúc thư mục

project/
│
├── index.php
├── about.php
│
├── includes/
│   ├── header.php
│   ├── menu.php
│   └── footer.php

📄 File header.php

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Website PHP</title>
</head>
<body>

<header>
    <h1>Website Học PHP</h1>
</header>

📄 File menu.php

<nav>
    <a href="index.php">Trang chủ</a> |
    <a href="about.php">Giới thiệu</a> |
    <a href="contact.php">Liên hệ</a>
</nav>

<hr>

📄 File footer.php

<hr>

<footer>
    Bản quyền © 2026
</footer>

</body>
</html>

📄 Trang index.php

<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>

<h2>Trang Chủ</h2>

<p>Chào mừng đến website PHP.</p>

<?php include "includes/footer.php"; ?>

📄 Trang about.php

<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>

<h2>Giới Thiệu</h2>

<p>Đây là trang giới thiệu.</p>

<?php include "includes/footer.php"; ?>

🚀 Kết quả

Mọi trang đều dùng chung:

✅ Header

✅ Menu

✅ Footer

Khi chỉnh sửa menu:

<nav>
    ...
</nav>

Tất cả các trang tự động cập nhật.


🎨 Menu động bằng Array

Thay vì viết cứng:

<a href="index.php">Trang chủ</a>
<a href="about.php">Giới thiệu</a>

Ta tạo menu bằng mảng.

<?php

$menus = [
    "Trang chủ" => "index.php",
    "Giới thiệu" => "about.php",
    "Liên hệ" => "contact.php"
];

foreach($menus as $text => $link){
    echo "<a href='$link'>$text</a> | ";
}

📋 Tạo menu dễ mở rộng

Muốn thêm menu mới:

$menus["Tin tức"] = "news.php";

Không cần sửa HTML.


⭐ Highlight menu hiện tại

Xác định file đang mở:

<?php

$current = basename($_SERVER['PHP_SELF']);

echo $current;

Ví dụ:

index.php

Tô đậm menu đang chọn

<?php

$menus = [
    "Trang chủ" => "index.php",
    "Giới thiệu" => "about.php",
    "Liên hệ" => "contact.php"
];

$current = basename($_SERVER['PHP_SELF']);

foreach($menus as $text => $link){

    if($current == $link){
        echo "<strong>$text</strong> | ";
    }else{
        echo "<a href='$link'>$text</a> | ";
    }

}

🎨 CSS đơn giản

<style>

nav a{
    text-decoration:none;
    padding:10px;
}

.active{
    color:red;
    font-weight:bold;
}

</style>

PHP:

<?php

$current = basename($_SERVER['PHP_SELF']);

foreach($menus as $text => $link){

    $active = ($current == $link)
        ? "active"
        : "";

    echo "<a href='$link' class='$active'>$text</a>";

}

📦 Layout Website Hoàn Chỉnh

<?php include "includes/header.php"; ?>
<?php include "includes/menu.php"; ?>

<main>

    Nội dung từng trang

</main>

<?php include "includes/footer.php"; ?>

Đây chính là mô hình mà hầu hết website PHP thực tế đều sử dụng trước khi tiến lên các framework như Laravel.


🧪 Bài tập thực hành

Bài 1

Tạo:

index.php
about.php
contact.php

Dùng chung:

header.php
menu.php
footer.php

Bài 2

Tạo menu bằng Array:

$menus = [
    "Trang chủ" => "index.php",
    "Tin tức" => "news.php",
    "Liên hệ" => "contact.php"
];

Hiển thị bằng foreach.


Bài 3

Tô sáng menu đang được mở bằng:

$_SERVER['PHP_SELF']

🎓 Tổng kết

Sau bài này bạn đã biết:

✅ Tách giao diện thành nhiều file

✅ Dùng include xây dựng layout

✅ Tạo menu động bằng Array

✅ Highlight menu hiện tại

✅ Xây dựng cấu trúc website chuyên nghiệp hơn

➡️ Bài tiếp theo: Bài 30 — Password Hash (Mã hóa mật khẩu an toàn bằng password_hash và password_verify)

╔══════════════════════════════╗
🐘 PHP 8.2 • Bài 29 Hoàn Thành
📚 Header • Menu • Footer Động
╚══════════════════════════════╝

x0

quay về MỤC LỤC

Không có nhận xét nào:

Đăng nhận xét

Facebook Youtube RSS