Hành Trình Riêng

Hướng dẫn A-Z thêm nút "TẢI THÊM" (Load More AJAX) vào giao diện Blogger chuẩn XML

Dưới đây là hướng dẫn chi tiết từ A-Z để bạn tích hợp nút "TẢI THÊM" (Load More AJAX) vào giao diện Blogger chuẩn XML/Blogger Layout v3 dựa trên file giao diện hiện tại.

Bước 1: Thêm CSS cho Nút Tải Thêm

Bạn mở file XML giao diện, tìm thẻ <b:skin> (xung quanh đoạn /* --- PAGINATION --- */ - khoảng dòng 206) và chèn thêm đoạn CSS sau vào bên dưới:

/* --- LOAD MORE BUTTON STYLES --- */
.load-more-wrapper {
 
text-align: center;
 
margin-top: 40px;
}
.load-more-btn {
 
display: inline-flex;
 
align-items: center;
 
justify-content: center;
 
gap: 8px;
 
background: var(--surface-card);
 
color: var(--text);
 
border: 1px solid var(--border);
 
padding: 12px 30px;
 
border-radius: 20px;
 
font-size: 14.5px;
 
font-weight: 600;
 
cursor: pointer;
 
transition: all 0.2s ease;
}
.load-more-btn:hover {
 
background: var(--accent);
 
border-color: var(--accent);
 
color: #ffffff;
}
.load-more-btn.loading {
 
opacity: 0.7;
 
cursor: wait;
}
.load-more-btn.no-more {
 
display: none;
}

Bước 2: Cập nhật thẻ Phân trang (Pagination) trong XML

Trong file XML của bạn, hãy chuyển đến khu vực widget Blog1 (khoảng dòng 353-356):

Mã hiện tại:

<b:include name='nextprev'/>
</
b:if>
</
b:includable>

Sửa lại thành:

               <b:if cond='data:olderPageUrl'>
                 <
div class='load-more-wrapper'>
                   <
button class='load-more-btn' id='loadMoreBtn' expr:data-url='data:olderPageUrl'>
                     <
span class='btn-text'>Tải thêm bài viết</span>
                   </
button>
                 </
div>
               </
b:if>
             </
b:if>
           </
b:includable>

Lưu ý quan trọng về cấu trúc XML: Không dán thẻ <b:if> ra ngoài thẻ <b:includable> để tránh gặp phải lỗi Could not restore theme khi tải file lên Blogger.

Bước 3: Thêm Javascript xử lý Tải bài viết không load lại trang

Di chuyển xuống cuối file XML, tìm thẻ đóng //]]> hoặc </script> (khoảng dòng 524) và thêm đoạn mã JavaScript xử lý AJAX sau vào trước thẻ //]]>:

   /* --- HỆ THỐNG TẢI THÊM BÀI VIẾT (LOAD MORE AJAX) --- */
   document.addEventListener(
'DOMContentLoaded', function() {
     
var loadMoreBtn = document.getElementById('loadMoreBtn');

     
if (loadMoreBtn) {
       loadMoreBtn.addEventListener(
'click', function() {
         
var nextUrl = loadMoreBtn.getAttribute('data-url');
         
if (!nextUrl) return;

         
var btnText = loadMoreBtn.querySelector('.btn-text');
         loadMoreBtn.classList.add(
'loading');
         btnText.textContent =
'Đang tải...';

         fetch(nextUrl)
           .then(
function(response) {
             
return response.text();
           })
           .then(
function(htmlText) {
             
var parser = new DOMParser();
             
var doc = parser.parseFromString(htmlText, 'text/html');

             
// Lấy các bài viết mới từ trang kế tiếp
             
var newPosts = doc.querySelectorAll('.posts-grid .post-card');
             
var postsGrid = document.querySelector('.posts-grid');

             
if (newPosts.length > 0 && postsGrid) {
               
newPosts.forEach(function(post) {
                 postsGrid.appendChild(post);
               });
             }

             
// Cập nhật đường dẫn nút "Tải thêm" cho các trang sau
             
var newNextBtn = doc.getElementById('loadMoreBtn');
             
if (newNextBtn && newNextBtn.getAttribute('data-url')) {
               loadMoreBtn.setAttribute(
'data-url', newNextBtn.getAttribute('data-url'));
               loadMoreBtn.classList.remove(
'loading');
               btnText.textContent =
'Tải thêm bài viết';
             }
else {
               
// Đã hết bài viết
               loadMoreBtn.classList.remove(
'loading');
               loadMoreBtn.classList.add(
'no-more');
             }
           })
           .
catch(function(err) {
             console.error(
'Lỗi tải thêm bài viết:', err);
             loadMoreBtn.classList.remove(
'loading');
             btnText.textContent =
'Thử lại';
           });
       });
     }
   });

Bước 4: Kiểm tra và cài đặt trên Blogger

  1. Vào Blogger > Giao diện (Theme) > Bấm nút Chỉnh sửa HTML (Edit HTML).
  2. Dán toàn bộ mã đã cập nhật vào khung biên dịch.
  3. Nhấn Lưu (Save) ở góc trên bên phải.
  4. Truy cập Trang chủ Blogger để kiểm tra hoạt động của nút "TẢI THÊM".