Cách thiết kế các bố cục trên sử dụng INCLUDE / REQUIRE trong PHP
Cần xem lại cấu trúc thư mục dự án trong bài Khởi tạo cấu trúc thư mục dự án PHPPhân tách các thành phần trong layout thành các file riêng để sử dụng lại
Theo các bố cục (layouts) trên, chúng ta có các thành phần có thể tái sử dụng lại nhiều lần như:head
: đây là phần code htmltitle
: tiêu đề của trang webmeta
: chứa các thông tin mô tả về trang web, đặc biệt về SEO web.styles
: chứa các CSS dùng chung trong toàn trang web
body
: nội dung trang webheader
siderbar
footer
- Chỉ phần
content
sẽ thay đổi tùy theo chức năng mong muốn.
Chúng ta tiến hành như sau:
Step 1: download thư viện giao diện Bootstrap, JQuery và thư viện icon Font Awesome 4
Bootstrap
- Truy cập trang chủ: https://getbootstrap.com/docs/4.5/getting-started/download/ hoặc download trực tiếp version 4.5 Bootstrap
- Giải nén, chép vào thư mục
/assets/vendor/bootstrap
Jquery
- Bootstrap sử dụng cú pháp Jquery để viết. Nên chúng ta sẽ cần thư viện Jquery đi kèm.
- Truy cập: https://jquery.com/ hoặc "Click vào đây" (phiên bản mới nhất 3.4.1)
- Lưu vào trong
/assets/vendor/jquery/jquery.min.js
Font Awesome 4
- Truy cập: https://fontawesome.com/v4.7.0/get-started/
- Lưu vào trong
/assets/vendor/font-awesome
Step 2: tạo cấu trúc thư mục để quản lý các thành phần này
Tạo thư mụclayouts\partials
và các file tương ứng các thành phần như sau:
backend +---layouts | \---partials | footer.php | header.php | sidebar.php
- Nội dung file
backend/layouts/partials/header.php
:
<nav class="navbar navbar-dark bg-dark shadow"> <a class="navbar-brand col-sm-3 col-md-2 mr-0" href="/">Nền tảng</a> <ul class="navbar-nav px-3 mr-auto"> <li class="nav-item text-nowrap"> <a class="nav-link" href="/backend/pages/dashboard.php">Bảng tin</a> </li> </ul> </nav>
- Nội dung file
backend/layouts/partials/footer.php
:
<footer class="footer mt-auto py-3 bg-dark text-white"> <div class="container-fluid"> <div class="row"> <div class="col-md-2"></div> <div class="col-md-10"> <span>Bản quyền © bởi <a href="https://nentang.vn">Nền Tảng</a> - <script>document.write(new Date().getFullYear());</script>.</span> <span class="text-muted">Hành trang tới Tương lai</span> </div> </div> </div> </footer>
- Nội dung file
backend/layouts/partials/sidebar.php
:
<nav class="col-md-2 d-none d-md-block sidebar"> <div class="sidebar-sticky"> <ul class="nav flex-column"> <!-- #################### Menu các trang Quản lý #################### --> <li class="nav-item sidebar-heading"><span>Quản lý</span></li> <li class="nav-item"> <a href="/backend/pages/dashboard.php">Bảng tin <span class="sr-only">(current)</span></a> </li> <hr style="border: 1px solid red; width: 80%;" /> <!-- #################### End Menu các trang Quản lý #################### --> <!-- #################### Menu chức năng Danh mục #################### --> <li class="nav-item sidebar-heading"> <span>Danh mục</span> </li> <!-- Menu Chuyên mục sản phẩm --> <li class="nav-item"> <a href="#shop_categoriesSubMenu" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle"> Chuyên mục sản phẩm </a> <ul class="collapse" id="shop_categoriesSubMenu"> <li class="nav-item"> <a href="/backend/functions/shop_categories/index.php">Danh sách</a> </li> <li class="nav-item"> <a href="/backend/functions/shop_categories/create.php">Thêm mới</a> </li> </ul> </li> <!-- End Menu Chuyên mục sản phẩm --> <!-- #################### End Menu chức năng Danh mục #################### --> </ul> </div> </nav>
Step 2: tạo file để quản lý các biến dùng để nhận biết Người dùng đang truy cập trang web nào
Step 2.2: tạo file quản lý Tên Trang và Tiêu đề trang
- Tạo file
backend/layouts/config.php
- Nội dung file:
<?php // var_dump($_SERVER["SCRIPT_NAME"]);die; // Biến $_SERVER là biến hệ thống do PHP quản lý, dùng để lưu trữ các thông tin về Request gởi đến Server // Trong đó key: $_SERVER['SCRIPT_NAME'] // Dùng để lưu trữ giá trị thông tin đường dẫn URL // Tùy theo đường dẫn URL, set giá trị Tên trang và Tiêu đề phù hợp switch ($_SERVER['SCRIPT_NAME']) { // CRUD Danh mục Loại sản phẩm case "/php/myhand/backend/functions/shop_categories/index.php": $CURRENT_PAGE = "backend.shop_categories.index"; $PAGE_TITLE = "Danh sách Loại sản phẩm"; break; case "/php/myhand/backend/functions/shop_categories/create.php": $CURRENT_PAGE = "backend.shop_categories.create"; $PAGE_TITLE = "Thêm mới Loại sản phẩm"; break; case "/php/myhand/backend/functions/shop_categories/edit.php": $CURRENT_PAGE = "backend.shop_categories.edit"; $PAGE_TITLE = "Sửa Loại sản phẩm"; break; // Tên trang và Tiêu đề mặc định default: $CURRENT_PAGE = "backend.index"; $PAGE_TITLE = "Chào mừng các bạn đến với Nền tảng.VN!"; }
Step 2.3: tạo file quản lý Các Style CSS dùng chung cho toàn bộ các trang trong Backend
- Tạo file
backend/layouts/styles.php
- Nội dung file:
<!-- Bootstrap CSS --> <link rel="stylesheet" href="/assets/vendor/bootstrap/css/bootstrap.min.css" type="text/css" /> <!-- Font awesome --> <link rel="stylesheet" href="/assets/vendor/font-awesome/css/font-awesome.min.css" type="text/css" /> <!-- Custom css - Các file css do chúng ta tự viết --> <link rel="stylesheet" href="/assets/backend/css/style.css" type="text/css" />
Step 2.3: tạo file quản lý Các Script JS dùng chung cho toàn bộ các trang trong Backend
- Tạo file
backend/layouts/scripts.php
- Nội dung file:
<!-- jQuery first, then Popper.js, then Bootstrap JS --> <script src="/assets/vendor/jquery/jquery.min.js"></script> <script src="/assets/vendor/bootstrap/js/bootstrap.min.js"></script>
Step 2.4: tạo file quản lý các meta hỗ trợ cho SEO Google, Facebook, ...
- Tạo file
backend/layouts/meta.php
- Nội dung file:
<!-- Meta chung --> <meta charset="utf-8" /> <!-- End: Meta chung --> <!-- Meta hỗ trợ SEO cho Google --> <?php if ($CURRENT_PAGE == "backend.index"): ?> <meta name="keywords" content="Quản lý Shop NenTang, Shop manager NenTang, Nền tảng, ..." /> <meta name="description" content="Web app quản lý Shop mini tiện dụng..." /> <?php elseif ($CURRENT_PAGE == "backend.shop_categories.index"): ?> <meta name="keywords" content="Trang Quản lý thông tin các Loại sản phẩm" /> <meta name="description" content="Tự do CRUD (Xem, Thêm, Sửa, Xóa)..." /> <?php endif; ?> <!-- End: Meta hỗ trợ SEO cho Google -->
Step 2.5: tạo file quản lý phần head cho trang web
- Tạo file
backend/layouts/head.php
- Nội dung file:
<!-- Tiêu đề của Trang web, được quản lý bởi biến $PAGE_TITLE trong file "layouts/config.php" --> <title><?= $PAGE_TITLE; ?></title> <!-- Nhúng file Quản lý phần META --> <?php include_once(__DIR__.'/meta.php'); ?> <!-- Nhúng file Quản lý các Liên kết CSS dùng chung cho toàn bộ trang web --> <?php include_once(__DIR__.'/styles.php'); ?>
Mục lục
Chương trình học
- Bức tranh tổng thể về Lập trình WEB 1
- Cài đặt môi trường Lập trình PHP 1
-
PHP căn bản
6
- PHP là gì? Viết chương trình PHP đầu tiên #1237
- Các kiểu dữ liệu (data types), biến (variables), hằng số (constant), toán tử (operators) trong ngôn ngữ lập trình PHP #1242
- Bài tập Kiểm tra cú pháp PHP #1285
- Trình diễn (render) dữ liệu Đơn giản ra giao diện (HTML, CSS, JS) sử dụng PHP #8696
- Trình diễn (render) dữ liệu Danh sách Array ra giao diện (HTML, CSS, JS) sử dụng PHP #9564
- Bài tập trình diện (render) tổng hợp: hiển thị mẫu in Hóa đơn bán hàng Nền tảng #11773
- Cấu trúc điều khiển trong PHP
- PHP Nâng cao 7
- Bài tập thực hành 3
- Thực hiện Dự án PHP thực tế mẫu - sử dụng PHP thuần 3
- Thu thập và Xử lý dữ liệu từ Client đến Server trong PHP 3
-
Thao tác với Cơ sở dữ liệu MySQL
9
- Quy trình (workflow) xử lý thao tác với cơ sở dữ liệu MySQL trong PHP #9623
- Tạo kết nối đến CSDL MySQL trong PHP #8116
- Thực thi câu lệnh INSERT trong PHP #8118
- Thực thi câu lệnh UPDATE trong PHP #8120
- Thực thi câu lệnh DELETE trong PHP #8122
- Thực thi câu lệnh SELECT trong PHP #8124
- Thực thi câu lệnh INSERT với FORM trong PHP #8126
- Thực thi câu lệnh DELETE với FORM trong PHP #8130
- Thực thi câu lệnh UPDATE với FORM trong PHP #8133
-
Dự án thực tế mẫu (PHP thuần) - Trang web bán hàng trực tuyến - Thiết kế Backend
17
- Khái niệm về bố cục (layouts) trong thiết kế giao diện Web / App #10538
- Thiết kế bố cục (layouts) cho giao diện Backend sử dụng PHP thuần #8740
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Index #8748
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Create #9291
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Delete #9293
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Edit #9292
- Ràng buộc dữ liệu (validation) #8761
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục cho Liên kết Khóa ngoại #8781
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) upload hình Sản phẩm (upload đơn, mỗi lần 1 file) #8799
- Tạo trang Đăng nhập trong Backend #8823
- Tạo trang Đăng xuất trong Backend #8826
- Tạo Web API lấy dữ liệu báo cáo thống kê #8834
- Tạo trang Bảng tin (Dashboard) #8758
- Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - Index #8856
- Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - In ấn Print #8858
- Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - Xóa Delete #8862
- Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - Thêm mới Create #8861
-
Dự án thực tế mẫu (PHP thuần) - Trang web bán hàng trực tuyến - Thiết kế Frontend
7
- Thiết kế bố cục (layouts) cho giao diện Frontend sử dụng PHP thuần #8868
- Thực hiện Trang chủ Frontend #8873
- Thực hiện Trang Giới thiệu About #8876
- Thực hiện Trang Liên hệ Contact (Có gởi mail Thông báo) #8879
- Thực hiện Trang Chi tiết Sản phẩm Product Detail #8944
- Thực hiện Trang Giỏ hàng Cart #8978
- Thực hiện Trang Thanh toán #9049
- Bảo mật Trang web PHP 2
-
Tài liệu Tham khảo
11
- Tài liệu Tham khảo #7933
- Cách export (dump) cơ sở dữ liệu MySQL bằng HeidiSQL #8343
- Đệ quy đa cấp trong PHP #8495
- Tạo bố cục (layout) trang web sử dụng INCLUDE REQUIRE trong PHP #8523
- Bài tập tổng hợp - Tạo trang web đọc Truyện Tranh và Tiểu Thuyết Online #9006
- Cách triển khai Web lên Hosting free ByetHost #9052
- Nguyên nhân và cách xử lý lỗi Warning: Cannot modify header information - headers already sent by #9917
- Cách triển khai Web lên Hosting free 000WebHost #9959
- Cách tích hợp chứng thực tài khoản bằng Google vào trang web #9973
- Source code Tham khảo Learning.NenTang.vn #10394
- Database mẫu ví dụ Bán hàng Salomon #11808
- Nộp đồ án 1
-
Thao tác với cơ sở dữ liệu MySQL bằng kỹ thuật AJAX
8
- Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Index #9777
- Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Create #9781
- Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Edit #9783
- Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Delete #9784
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Index #9773
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Create #9774
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Edit #9775
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Delete #9776
- Video Live Stream 1
- Lập trình hướng đối tượng OOP (Object Oriented Programming) trong PHP 1
Các bài học
Bài học trước Bài học tiếp theo
Chương trình học
Bao gồm Module, Chương, Bài học, Bài tập, Kiểm tra...Chương trình học
- Bức tranh tổng thể về Lập trình WEB 1
- Cài đặt môi trường Lập trình PHP 1
-
PHP căn bản
6
- PHP là gì? Viết chương trình PHP đầu tiên #1237
- Các kiểu dữ liệu (data types), biến (variables), hằng số (constant), toán tử (operators) trong ngôn ngữ lập trình PHP #1242
- Bài tập Kiểm tra cú pháp PHP #1285
- Trình diễn (render) dữ liệu Đơn giản ra giao diện (HTML, CSS, JS) sử dụng PHP #8696
- Trình diễn (render) dữ liệu Danh sách Array ra giao diện (HTML, CSS, JS) sử dụng PHP #9564
- Bài tập trình diện (render) tổng hợp: hiển thị mẫu in Hóa đơn bán hàng Nền tảng #11773
- Cấu trúc điều khiển trong PHP
- PHP Nâng cao 7
- Bài tập thực hành 3
- Thực hiện Dự án PHP thực tế mẫu - sử dụng PHP thuần 3
- Thu thập và Xử lý dữ liệu từ Client đến Server trong PHP 3
-
Thao tác với Cơ sở dữ liệu MySQL
9
- Quy trình (workflow) xử lý thao tác với cơ sở dữ liệu MySQL trong PHP #9623
- Tạo kết nối đến CSDL MySQL trong PHP #8116
- Thực thi câu lệnh INSERT trong PHP #8118
- Thực thi câu lệnh UPDATE trong PHP #8120
- Thực thi câu lệnh DELETE trong PHP #8122
- Thực thi câu lệnh SELECT trong PHP #8124
- Thực thi câu lệnh INSERT với FORM trong PHP #8126
- Thực thi câu lệnh DELETE với FORM trong PHP #8130
- Thực thi câu lệnh UPDATE với FORM trong PHP #8133
-
Dự án thực tế mẫu (PHP thuần) - Trang web bán hàng trực tuyến - Thiết kế Backend
17
- Khái niệm về bố cục (layouts) trong thiết kế giao diện Web / App #10538
- Thiết kế bố cục (layouts) cho giao diện Backend sử dụng PHP thuần #8740
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Index #8748
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Create #9291
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Delete #9293
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Edit #9292
- Ràng buộc dữ liệu (validation) #8761
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục cho Liên kết Khóa ngoại #8781
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) upload hình Sản phẩm (upload đơn, mỗi lần 1 file) #8799
- Tạo trang Đăng nhập trong Backend #8823
- Tạo trang Đăng xuất trong Backend #8826
- Tạo Web API lấy dữ liệu báo cáo thống kê #8834
- Tạo trang Bảng tin (Dashboard) #8758
- Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - Index #8856
- Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - In ấn Print #8858
- Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - Xóa Delete #8862
- Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - Thêm mới Create #8861
-
Dự án thực tế mẫu (PHP thuần) - Trang web bán hàng trực tuyến - Thiết kế Frontend
7
- Thiết kế bố cục (layouts) cho giao diện Frontend sử dụng PHP thuần #8868
- Thực hiện Trang chủ Frontend #8873
- Thực hiện Trang Giới thiệu About #8876
- Thực hiện Trang Liên hệ Contact (Có gởi mail Thông báo) #8879
- Thực hiện Trang Chi tiết Sản phẩm Product Detail #8944
- Thực hiện Trang Giỏ hàng Cart #8978
- Thực hiện Trang Thanh toán #9049
- Bảo mật Trang web PHP 2
-
Tài liệu Tham khảo
11
- Tài liệu Tham khảo #7933
- Cách export (dump) cơ sở dữ liệu MySQL bằng HeidiSQL #8343
- Đệ quy đa cấp trong PHP #8495
- Tạo bố cục (layout) trang web sử dụng INCLUDE REQUIRE trong PHP #8523
- Bài tập tổng hợp - Tạo trang web đọc Truyện Tranh và Tiểu Thuyết Online #9006
- Cách triển khai Web lên Hosting free ByetHost #9052
- Nguyên nhân và cách xử lý lỗi Warning: Cannot modify header information - headers already sent by #9917
- Cách triển khai Web lên Hosting free 000WebHost #9959
- Cách tích hợp chứng thực tài khoản bằng Google vào trang web #9973
- Source code Tham khảo Learning.NenTang.vn #10394
- Database mẫu ví dụ Bán hàng Salomon #11808
- Nộp đồ án 1
-
Thao tác với cơ sở dữ liệu MySQL bằng kỹ thuật AJAX
8
- Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Index #9777
- Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Create #9781
- Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Edit #9783
- Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Delete #9784
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Index #9773
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Create #9774
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Edit #9775
- Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Delete #9776
- Video Live Stream 1
- Lập trình hướng đối tượng OOP (Object Oriented Programming) trong PHP 1
Bài học trước Bài học tiếp theo
Menu Tiện ích
Menu Hướng dẫn Học tập
❤🧡💛💚💙💜 Học là phải THỰC HÀNH ❤🧡💛💚💙💜
Thực hiện các bước tuần tự theo nội dung Bài học nhé!