This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Chủ Nhật, 10 tháng 7, 2016

Tài liệu Cơ sở Máy công cụ ĐHBKHN



Trong ngành Cơ khí Chế tạo máy thì Máy công cụ có vai trò quyết định đến chất lượng chế tạo các chi tiết máy. Máy công cụ của ngành chế tạo máy phần lớn là các máy cắt gọt có chủng loại và kích cỡ rất phong phú và đa dạng.

Các kiến thức cụ thể được đề cập trong giáo trình tham khảo sau:

Download: Cơ sở Máy công cụ

Sổ Tay Mác Thép Thế Giới - Tài Liệu Cơ Khí

Đối với nghành Cơ khí và Xây dựng, công việc lựa chọn vật liệu chế tạo chi tiết là bước quan trọng hàng đầu khi gia công và chế tạo sản phẩm. Vật liệu được dùng chủ yếu trong ngành Cơ khí là vật liệu thép, tùy từng mục đích sử dụng của sản phẩm mà chúng ta lựa chọn các loại mác thép khác nhau, với các thông số kỹ thuật bên trong từng mác thép đó. 
Để đơn giản hóa trong việc lựa chọn hay tìm ra mác thép phù hợp các tác giả đã tổng hợp và viết cuốn sổ tay tra mác thép thế giới. 

Download: Sổ Tay Mác Thép Thế Giới

Thứ Sáu, 1 tháng 7, 2016

Share Ijonkz v1.3 – Blogger Template tin tức đẹp


  • Phiên bản hiện tại: 1.3
  • 100% Responsive (đóng hộp hoặc đầy đủ)
  • Hướng dẫn Các bài viết từ Image Widget (Responsive chạy mau Slideshow)
  • Tự động bật Post (Responsive chạy mau Slideshow)
  • Hỗ trợ Blogger Template Customize Editor (Upload Image Background)
  • Nhẹ Auto đọc hơn (hỗ trợ hình ảnh của bên thứ ba, và Youtube Thumbnail)
  • Ajax Page Navigation
  • Tabs Widget sẵn sàng (Sidebar)
  • Ajax JSON Kết quả tìm kiếm *
  • Ajax bài viết gần đây của Tag (9 bài viết Loại (trượt, dọc, Kết hợp, Gallery 1, Gallery 2, Hot, đơn giản, Noimage và ngang) hỗ trợ Random Post) Hỗ trợ Ajax Load More *
  • Ajax bình luận gần đây Widget *
  • Ajax Related Post Widget với Slider Effect
  • Ajax Tin tức Mã Widget *
  • Hai View Mode (Danh sách và Grid) Cookies rộng
  • Tối ưu hóa SEO
  • ảnh tự động thay đổi kích cỡ ảnh nhỏ
  • Meta Keywords Và Mô tả Hỗ trợ (Official Meta Description Hỗ trợ)
  • Cho phép khách tăng / giảm kích thước văn bản và tự động nhớ cho tương lai.
  • Mát blogger luồng bình luận (Hỗ trợ Google+ Comment) với Emoticon
  • 3 Comment System (Blogger, Facebook, Disqus)
  • Lỗi tùy chỉnh 404 trang
  • Sidebar dính
  • Tuỳ chỉnh biểu tượng Share widget (addthis Plugin widget)
  • bố trí quản trị chuyên nghiệp, giúp bạn dễ dàng làm việc với bố trí blog.
  • Hỗ trợ In CSS và cho phép khách tham quan chia sẻ bài viết email
  • shortcodes hỗ trợ
  • Hỗ trợ Mega New Menu
  • Hỗ trợ Post Preview
  • Thêm ánh sáng phiên bản Trọng lượng mới
  • Hỗ trợ RTL Ngôn ngữ
  • Tương thích với các trình duyệt chính (IE8 +, Mozilla, Chrome, Safari, Opera)

Download: Ijonkz v1.3

Free Blogger Template tin tức giao diện đẹp Sevida v1.7


Blogger Template Sevida v1.7 rất thân thiện với công cụ tìm kiếm, nếu bạn đang tìm một blog chuẩn seo và đẹp thì Sevida v1.7 sẽ giúp bạn có được một blog cá nhân dạng tạp chí khá hoàn chỉnh.
Download: Sevida v1.7

Thứ Ba, 28 tháng 6, 2016

Sửa lỗi phân trang blogger trong chỉnh sửa HTML


Chỉnh sửa HTML để tạo menu phân trang cho blog, khi lưu mẫu thấy báo lỗi : Mẫu của bạn không thể được phân tích cú pháp vì được tạo không đúng. Hãy đảm bảo tất cả các phần từ XML được đóng chính xác.



Thông báo lỗi XML: The reference to entity "max-results" must end with the ';' delimiter.


Để khắc phục, ta chỉ cần thêm amp; vào sau dấu ?: VD trên blog của tôi: Link của trang nhãn lúc đầu:

http://mchiase.blogspot.com/search/label/Thủ thuật internet?&max-results=6 ta đổi thành

Code:
http://mchiase.blogspot.com/search/label/Thủ thuật internet?&max-results=6

 Như vậy là xong.

Thứ Hai, 6 tháng 6, 2016

Hướng dẫn tối ưu hóa công cụ tìm kiếm Blogspot

Cách cài công cụ search google cho nguồn cấp của trang .
Như ta đã biết mặc định công cụ tìm kiếm của Blogspot chỉ giới hạn tìm kiếm các từ khóa trên title điều này sẽ gây hạn hẹp nội dung tìm kiếm cho người dùng trên blog.
Cách này sẽ giúp Blog bạn tối ưu hóa công cụ tìm kiếm giúp người dùng dể dàng tìm ra nội dụng mà họ mong muốn. Ở trang trên khi sử dụng công cụ tìm kiếm tìm 1 từ khóa nào đó dù nó không nằm trên title Google vẫn đưa ra các kết quả liên quan trên trang, việc này có lợi khi người dùng không biết chính xác từ khóa hoặc người đăng bài không chèn từ khóa trên title.
Vào trang sau: http://www.google.com.vn/cse/



Chọn mã để chèn vào blog, tại đây bạn có 2 loại code để dùng 1 loại dùng cố định mẫu đoạn còn lại có thể tùy chỉnh màu sắc kích thước khung tìm kiếm.



Thứ Tư, 17 tháng 2, 2016

Share code quản lí tập tin và MySQL trực tiếp trên host lpanel 2.1



+ Lpanel là gói tổng hợp của các code khác chuyên dụng để làm wap và fix lại.
    - Saoluu.php vh thêm một số phần, lưu cookie trong vòng 1 năm, ....
    - Gmanager 0.8.1 beta mod giao diện giống wapftp, công cụ sửa vb từng trang, đăng nhập tiện lợi.
    - Mini PhpMyAdmin quản lí CSDL hiệu quả, mod đăng nhập tự động, bảo mật hệ thống, giao diện cho điện thoại vô cùng tiện lợi và nhẹ.
    -> Lpanel tổng hợp lạ các code thành 1 gói, fix các lỗi của các code, Menu login giúp bảo mật và tăng tính bảo mật các code trên.
+ Phiên bản ổn định nhất: 2.1
» Kế thừa giao diện, icon của lpanel 2.0. fix một số lỗi như: không hiện file file có tên tiếng việt, lỗi cả trang và không hiện nếu trong thư mục có 1 tệp hoặc thư mục có thên tiếng việt.
» Sửa lỗi không thể đăng nhập, chỉ hiện mội cái logo còn phần phía dưới bị trắng. Mặc định sẽ lưu cookie vào trình duyệt với mật khẩu đã được mã hóa. Nếu không lưu được cookie sẽ lưu session.
» Tiện ích saoluu.php tiện lợi cho việc saoluu SQL ở dung lượng vừa phải.
» Miniphpmyadmin tiện lợi cho việc tạo mới data. Làm rỗng, thống kê, Tối Ưu một hay nhiều bảng Import và export CSDL về host. Chạy lệnh SQL.
» Chức năng sửa văn bản theo trang như wapftp rất tiện lợi, cái này rất cần thiết nếu bạn đang sử dụng điện thoại s40 và android cấu hình yếu.
» Xóa bỏ ghi nhật kí lỗi của Gmanager. Cái này rất tốn dung lượng.
Tmc pass 123456


Download lpanel 2.1

Thứ Năm, 11 tháng 2, 2016

Widget bình luận cho Blogspot ( Blogger)

Code giúp hiển thị bình luận mới cho blogger



Chỉnh sửa code như hình










Thêm code bên dưới vào lưu lại và xem kết quả :
Code:
<style type="text/css">
.rc{padding-left:24px; padding-top: 6px;}
.rc a:hover {color: #F3903E;text-decoration: none;}
.rc-ico{margin-left:-20px;margin-top:4px;float:left; margin-right:3px}
.rc-ico img {margin-top: -2px;margin-right:5px; border: 2px solid #fff;-webkit-border-radius: 100px;-moz-border-radius: 100px;border-radius: 100px;-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .4);-moz-box-shadow: 0 1px 2px rgba(0, 0, 0, .4);box-shadow: 0 1px 2px rgba(0, 0, 0, .4);
-webkit-transition: all 1s ease-in-out;
-moz-transition: all 1s ease-in-out; 
-o-transition: all 1s ease-in-out; 
-ms-transition: all 1s ease-in-out; }
.rc-ico img:hover {-webkit-transform: rotate(360deg); 
-moz-transform: rotate(360deg); 
-o-transform: rotate(360deg);
-ms-transform: rotate(360deg);}
.rc-header{font-size: 13px;}
.rc-header a{}
.rc-body{font-style: italic; font-size:11px;padding: 0px 4px 1px 10px;border: 1px solid transparent;}
.rc-footer{font-size:11px; float: right;}
</style>
<script type="text/javascript">
var numRecentComments = 5;
var maxCommentChars = 67;
var trueAvatars = true; 
var urlMyAvatar = '';
var urlMyProfile = '';
var cropAvatar = true;
var sizeAvatar = 50;
var urlNoAvatar = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhFsHUD8sKGXZ4ifDY492LC_hAHkWILXwyiAhR53MDqdgr6JvJ2yHWQDfThgFtclzxNew5MrmxbXh1O1G1r7baoMIUaBlUYY_ov82szhs0kXPiTHHkNVgekXu2Y8TJnKWRlYcgeuX1dMnK/"+sizeAvatar+"/anonymous-Icon.jpg"; 
var urlAnoAvatar = 'http://www.gravatar.com/avatar/00000000000000000000000000000000?d=mm&s=' + sizeAvatar;
var txtMore = '';
var txtWrote = 'trả lời:';
var txtAnonymous = ''; 
var maxResultsComments = "";
var numPerPost = 2;
var maxPostTitleChars = 40; 
var getTitles = true;
var maxResultsPosts = ""; 
var txtTooltip = '[user] on &quot;[title]&quot; - [date MM-dd-yyyy hh:mm]';
var urlToTitle = {};
function replaceVars(text, user, title, date) {
text = text.replace('[user]', user);
text = text.replace('[date]', date.toLocaleDateString());
text = text.replace('[datetime]', date.toLocaleString());
text = text.replace('[time]', date.toLocaleTimeString());
text = text.replace('[title]', title.replace(/\"/g,'&quot;'));
var i = text.indexOf("[date ");
if(i > -1) {
var format = /\[date\s+(.+?)\]/.exec(text)[1];
if(format != '') {
var txtDate = format.replace(/yyyy/i, date.getFullYear());
txtDate = txtDate.replace(/yy/i, date.getFullYear().toString().slice(-2));
txtDate = txtDate.replace("MM", String("0"+(date.getMonth()+1)).slice(-2));
txtDate = txtDate.replace("mm", String("0"+date.getMinutes()).slice(-2));
txtDate = txtDate.replace("ss", String("0"+date.getSeconds()).slice(-2));
txtDate = txtDate.replace("dd", String("0"+date.getDate()).slice(-2));
//or: txtDate = txtDate.replace("dd", date.getDate());
txtDate = txtDate.replace("hh", String("0"+date.getHours()).slice(-2));
//or: txtDate = txtDate.replace("hh", date.getHours());
text = text.replace(/\[date\s+(.+?)\]/, txtDate)
}
}
return text;
}
if(urlMyProfile == "") {
var elements = document.getElementsByTagName("*");
var expr = /(^| )profile-link( |$)/;
for(var i=0 ; i<elements.length ; i++)
if(expr.test(elements[i].className)) {
urlMyProfile = elements[i].href;
break;
}
}
function getPostUrlsForComments(json) {
for(var i = 0 ; i < json.feed.entry.length ; i++ ) {
var entry = json.feed.entry[i];
for (var k = 0; k < entry.link.length; k++ ) {
if (entry.link[k].rel == 'alternate') {
href = entry.link[k].href;
break;
}
}
urlToTitle[href] = entry.title.$t;
}
}
function showRecentComments(json) {
var postHandled = {};
var j = 0;
if(numPerPost) {
while(numPerPost < numRecentComments) {
for(var i = 0 ; i < json.feed.entry.length ; i++ ) {
var entry = json.feed.entry[i]; if(entry.author[0].name.$t=="Blogger User") continue;
if(entry["thr$in-reply-to"]) {
if(!postHandled[entry["thr$in-reply-to"].href])
postHandled[entry["thr$in-reply-to"].href] = 1;
else
postHandled[entry["thr$in-reply-to"].href]++;
if(postHandled[entry["thr$in-reply-to"].href] <= numPerPost)
j++;
}
}
if(j >= numRecentComments)
break;
numPerPost++;
j = 0;
postHandled = {};
}
if(numRecentComments == numPerPost)
numPerPost = 0;
}
postHandled = {};
j = 0;
for(var i = 0 ; j < numRecentComments && i < json.feed.entry.length ; i++ ) {
var entry = json.feed.entry[i]; if(entry.author[0].name.$t=="Blogger User") continue;
if(numPerPost && postHandled[entry["thr$in-reply-to"].href] && postHandled[entry["thr$in-reply-to"].href] >= numPerPost)
continue;
if(entry["thr$in-reply-to"]) {
if(!postHandled[entry["thr$in-reply-to"].href])
postHandled[entry["thr$in-reply-to"].href] = 1;
else
postHandled[entry["thr$in-reply-to"].href]++;
j++;
var href='';
for (var k = 0; k < entry.link.length; k++ ) {
if (entry.link[k].rel == 'alternate') {
href = entry.link[k].href;
break;
}
}
if(href=='') {j--; continue; }
var hrefPost = href.split("?")[0];
var comment = "";
if("content" in entry) comment = entry.content.$t;
else comment = entry.summary.$t;
comment = comment.replace(/<br[^>]*>/ig, " ");
comment = comment.replace(/<\S[^>]*>/g, "");
var postTitle="-";
if(urlToTitle[hrefPost]) postTitle=urlToTitle[hrefPost];
else {
if(hrefPost.match(/\/([^/]*)\.html/)) postTitle = hrefPost.match(/\/([^/]*)\.html/)[1].replace(/_\d{2}$/, "");
postTitle = postTitle.replace(/-/g," ");
postTitle = postTitle[0].toUpperCase() + postTitle.slice(1);
}
if(maxPostTitleChars && postTitle.length > maxPostTitleChars) {
postTitle = postTitle.substring(0, maxPostTitleChars);
var indexBreak = postTitle.lastIndexOf(" ");
postTitle = postTitle.substring(0, indexBreak) + "...";
}

var authorName = entry.author[0].name.$t;
var authorUri = "";
if(entry.author[0].uri && entry.author[0].uri.$t != "")
authorUri = entry.author[0].uri.$t;
var avaimg = urlAnoAvatar;
var bloggerprofile = "http://www.blogger.com/profile/";
if(trueAvatars && entry.author[0].gd$image && entry.author[0].gd$image.src && authorUri.substr(0,bloggerprofile.length) == bloggerprofile)
avaimg = entry.author[0].gd$image.src;
else {
var parseurl = document.createElement('a');
if(authorUri != "") {
parseurl.href = authorUri;
avaimg = 'http://www.google.com/s2/favicons?domain=' + parseurl.hostname;
}
}
if(urlMyProfile != "" && authorUri == urlMyProfile && urlMyAvatar != "")
avaimg = urlMyAvatar;
if(avaimg == "http://img2.blogblog.com/img/b16-rounded.gif" && urlNoAvatar != "")
avaimg = urlNoAvatar;
var newsize="s"+sizeAvatar;
avaimg = avaimg.replace(/\/s\d\d+-c\//, "/"+newsize+"-c/");
if(cropAvatar) newsize+="-c";
avaimg = avaimg.replace(/\/s\d\d+(-c){0,1}\//, "/"+newsize+"/");
if(authorName == 'Anonymous' && txtAnonymous != '' && avaimg == urlAnoAvatar)
authorName = txtAnonymous;
var imgcode = '<img height="'+sizeAvatar+'" width="'+sizeAvatar+'" title="'+authorName+'" src="'+avaimg+'" />';
if (authorUri!="") imgcode = '<a href="'+authorUri+'">'+imgcode+'</a>';
var clsAdmin = "";
if(urlMyProfile != "" && authorUri == urlMyProfile)
clsAdmin = " rc-admin";
var datePart = entry.published.$t.match(/\d+/g); // assume ISO 8601
var cmtDate = new Date(datePart[0],datePart[1]-1,datePart[2],datePart[3],datePart[4],datePart[5]);

var txtHeader = txtWrote;
if(txtWrote.indexOf('[')==-1)
txtHeader = authorName + ' ' + txtWrote;
else
txtHeader = replaceVars(txtHeader, authorName, postTitle, cmtDate);

var tooltip = replaceVars(txtTooltip, authorName, postTitle, cmtDate);
if(!/#/.test(href)) href += "#comments";
document.write('<div title="'+tooltip+'" class="rc'+clsAdmin+'">');
document.write('<div title="'+tooltip+'" class="rc-header'+clsAdmin+'"><div title="'+tooltip+'" class="rc-ico'+clsAdmin+'">'+imgcode+'</div><a title="'+tooltip+'" href="' + href + '">' + txtHeader + ' </a></div>');
if(comment.length < maxCommentChars)
document.write('<div title="'+tooltip+'" class="rc-body'+clsAdmin+'">' + comment + '</div>');
else {
comment = comment.substring(0, maxCommentChars);
var indexBreak = comment.lastIndexOf(" ");
comment = comment.substring(0, indexBreak);
document.write('<div title="'+tooltip+'" class="rc-body'+clsAdmin+'">' + comment + '...</div>');
if(txtMore != "") {
var moretext = replaceVars(txtMore, authorName, postTitle, cmtDate);
document.write('<div title="'+tooltip+'" class="rc-footer'+clsAdmin+'"><a title="'+tooltip+'" href="' + href + '">' + moretext + '</a></div>');
}
}
document.write('<div style="clear:both;"></div></div>');
}
}
}
if(getTitles)
document.write('<script type="text/javascript" src="http://'+window.location.hostname+'/feeds/posts/summary?redirect=false'+maxResultsPosts+'&alt=json-in-script&callback=getPostUrlsForComments"></'+'script>');
document.write('<script type="text/javascript" src="http://'+window.location.hostname+'/feeds/comments/default?redirect=false'+maxResultsComments+'&alt=json-in-script&callback=showRecentComments"></'+'script>');
</script>
Tùy chỉnh:·
 numComments = 5 và var a_rc=10 : Số lượng bình luận bạn muốn hiển thị.
· showAvatar = true : Không muốn hiển thị ảnh Avatar hãy nhập False.
· avatarSize = 35 : Kích thước ảnh Avatar.
· characters = 40 : Số lượng ký tự gợi ý bình luận.
· var urlNoAvatar = Ảnh Avatar mặc định.
· maxfeeds=50 : Tối đa bình luận hiện thị.

· adminBlog='Your Name' : Tên Admin.

Red XCode Responsive Blogger Template làm wap game Chuẩn Seo,Load Nhanh

Mình xin giới thiệu 1 template Red XCode Responsive Blogger Template.Template rất đẹp phù hợp với blog tải ứng dụng,game

Thông tin :
  • Giao diện đẹp mắt
  • Thiết kế tinh tế,chuẩn seo và load nhanh
  • Tích hợp comment facebook
  • Hỗ trợ quảng cáo mọi nơi
  • Hiển thị bài đăng mới nhất bên tay phải
Down: Red XCode Responsive Blogger Template


Mọi chi tiết thắc mắc cài đặt vui lòng liên hệ Admin để được giải đáp

Sửa lỗi không phân trang cho Blogspot (Blogger)

Rất nhiều blogger thắc mắc khi click vào trang nhãn hay ở ngoài trang chủ có trang thì hiển thị đủ số bài theo mặc định có trang lại thiếu một số bài mà các bạn đã định trước trong tiện ích phân trang.


Ở bài này mình hướng dẫn “Sửa lỗi 1 không phân trang khi xem theo nhãn hay ngoài trang chủ trong blogspot” Việc khắc phục lỗi này không khó và cũng được rất nhiều Blog hướng dẫn và chỉ ra hướng khắc phục … 
Nguyên nhân:
» Chưa đồng bộ các Code hiển thị số bài
Vào Blog => Mẫu => Chỉnh sửa HTML. Nhấn tổ hợp phím Ctrl + F và tìm tất cả các dòng:
Code:
expr:href='data:label.url'
Thành:

Code:
expr:href='data:label.url + &quot;?&amp;max-results=6&quot;'
Thay 6 thành số bài đăng bạn muốn hiển thị trên 1 trang nhãn hoặc ngoài trang chủ.

Bài Viết Không Phân Trang Hiển Thị Lộn Xộn Trang Chủ Blogspot

Bạn dã kiếm một giao diện blogspot hợp ý mình rồi, nhưng khi post bài ra ngoài trang home hoặc trong các nhãn lại không đầy đủ, ví dụ bạn để mặc định là 12 bài viết nhưng khi ra ngoài trang kiểm tra nó chỉ có 8 bàn hoặc 10 bài là bố cục bị lộn xộn.
Sửa Lỗi Bài Viết Không Phân Trang Hiển Thị Lộn Xộn Trang Chủ Blogspot

Đây là lỗi cũng rất người gặp phải, mình cũng không biết nguyên vì sao nó lại bị lỗi như vậy, và cách khắc phục thì cũng đơn giản.
Sau khi đăng một bài viết trên blog bạn sử dụng chức năng Read more trên thanh menu bài viết, thường để nó ở dưới 2-3 dòng đầu tiên ví dụ như bài viết này, mình sử dụng read more...
Sửa Lỗi Bài Viết Không Phân Trang Hiển Thị Lộn Xộn Trang Chủ Blogspot
Bài viết nào bạn cũng làm như vậy thì sẽ không có tình trạng blog bị thiếu bài viết xảy ra khi phân trang hay xem theo nhãn label bài viết.

Thứ Tư, 10 tháng 2, 2016

Share Template OVATION - Làm blog cực đẹp


Author Name : Mari Themes
Design Url : themeforest.net/user/MARIthemes
Publisher : http://mchiase.blogspot.com/
Teamplate thích hợp làm web,blog cá nhân
  • Current Version: 1.0.0
  • 100% Responsive (Desktop,Tablet,Smartphone)
  • 15+ Recent Post by Labels Widget
  • Third Party Image Support
  • Support 4 Comments System (Blogger,Facebook,Disqus,Spot.IM)
  • Recent Post Widget
  • Random Post Widget
  • Featured Post Widget
  • Recent Comment Widget
  • Disqus Recent Comment Widget
  • Flickr Badge Widget
  • News Ticker Widget
  • Related Post Widget
  • Recommended Widget
  • Optimize SEO
  • Dropdown Menu
  • Tabel CSS
  • Review Shortcode
  • Post Pagination
  • Ads ready (Top Ads, Side Ads, and Post Ads)
  • Top Social Icon
  • Social Counter Widget
  • Author Profile
  • Google CSE
  • Page Navigation
  • ShortCodes
  • Compatible with major browsers (IE9+,Mozilla,Chrome,Safari)
  • Professional admin layout, help you easy work with blog layout
  • Support RTL
  • Custom Error 404 Page
  • Archive Page
  • Support Advance Editor: upload background images, change background color, key colors, fonts
  • Support Print CSS and allow visitors share articles email
  • Mọi thắc mắc ý kiến đóng góp cài đặt vui lòng liên hệ admin
Demo: Template OVATION

Download: Template OVATION