Tin mới

Adbox
Hiển thị các bài đăng có nhãn THU-THUAT-BLOGER. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn THU-THUAT-BLOGER. Hiển thị tất cả bài đăng

Chủ Nhật, 7 tháng 7, 2019

Những Code Thông Dụng Cho Blogspot


------------------------------------------------------
-----------------------------------------------------


Những Code Thông Dụng Cho Blogspot

Nhằm giúp các blogger mới vào nghề hiểu thêm về code nên hôm nay mình chia sẻ lại một số code thông dụng thường gặp trong quá trình viết bài cũng như thiết kế blog. Hy vọng sẽ giúp ích được cho các bạn.

1. Font, màu chữ, thụt vào đầu dòng (Dùng dòng 1 hay 2 đều như nhau)

<span style="color:#339966; font:12pt Tahoma; margin-left:12px;">Nội_dung</span>
<span style="color:#339966; font-family:Tahoma; font-size:12pt; margin-left:12px;">Nội_dung</span>
#339966 // Mã màu cho chữ
12pt Tahoma // Cỡ chữ và font chữ
margin-left:12px // Số pixel (khoảng cách) chữ thụt vào đầu dòng. Có thể thay left bằng right cho chiều ngược lại.

2. Canh giữa, canh phải

<div style="text-align:center;">Nội_dung</div>
center // Thay center = right cho canh phải hoặc = left cho căn trái

3. Định dạng chữ: Đậm, Nghiêng, Gạch chân, Gạch ngang chữ

<b>Nội_dung_in_đậm</b>
<i>Nội_dung_in_nghiêng</i>
<u>Nội_dung_gạch_chân</u>
<strike>Nội_dung_chữ_bị_gạch_ngang</strike>

4. Dấu chấm vô dòng con, đánh số đầu dòng

Dấu chấm vô dòng con
<ul>
<li> Nội_dung 1 </li>
<li> Nội_dung 2 </li>
<li> Nội_dung 3 </li>
</ul>

Đánh số đầu dòng
<ol>
<li> Nội_dung 1 </li>
<li> Nội_dung 2 </li>
<li> Nội_dung 3 </li>
</ol>

 5. Bookmark đến một vị trí nhanh trong bài viết

<a href="LINK_bài_viết#Tên_gán_cho_vị_trí ">Nội_dung</a>
<a name="Tên_gán_cho_vị_trí ">Nội_dung</a>
Lưu ý:
    Tên cách nhau không được dùng khoảng trắng mà phải dùng shift gạch. (VD: nhà_xinh)
    Tốt nhất không nên dùng chữ có dấu cho tên gán.

Ví dụ:
    - Đến điểm A (<a href="LINK_bài_viết_cụ thể#Diem_A">Đến điểm A</a>)
    - ...
    - Điểm A (<a name="Diem_A">Điểm A</a>)
Code trong ngoặc là chú thích cho ví dụ.
Như vậy khi ta click chuột vào "Đến điểm A" thì lập tức lệnh sẽ đưa ta nhảy đến vị trí "Điểm A".

6. Chèn Flash vào bài viết (Chọn loại 1 hay 2 đều được)

1.
<div style="text-align:center;"><embed wmode=Transparent pluginspage="http://www.macromedia.com/go/getflashplayer" src="LINK_FLASH" width="900" height="300"
type="application/x-shockwave-flash" scale="" play="true" loop="true"
menu="true"></embed></div> 

2.
<embed src="LINK_FLASH" bgcolor="#000000" type="application/x-shockwave-flash" allowscriptaccess="none"  width="400" height="400"></embed>

7. Chèn hình ảnh (image) vào bài viết

1. Code đơn giản
<img src="LINK_ẢNH" title="Ghi_chú" alt="Mô_tả"/>

2. Code mở rộng
<img src="LINK_ẢNH" title="Ghi_chú" alt="Mô_tả" align="bottom" width="400" height="400"/>
    Ghi_chú // Khi rê chuột lên ảnh, sẽ hiện chú thích.
    Mô_tả // Khi rê chuột lên ảnh, sẽ hiện chú thích.
    Sử dụng hai lệnh này thì khi người dùng truy cập blog chọn không hiển thị ảnh thì sẽ hiện dòng chữ này thay cho ảnh đó.
    align="bottom" // Vị trí ảnh so với chữ. Có thể đổi thành middle(giữa) - top(trên) - bottom(dưới). Không dùng, để mặc định theo blog chọn sẵn thì xóa nó đi.

8. Chèn link liên kết vào bài viết

<a href="LINK" target="blank">Tên_Link</a>
    target="blank" // Mở link liên kết trong một trang mới. Bỏ lệnh này thì trang mới sẽ được mở ngay tại trang đang dùng (nghĩa là trang đang dùng sẽ bị load qua trang link ta vừa click vào). Nếu người dùng có thói quen "Open new tab" thì lệnh này có hay không cũng không khác biệt.

Ví dụ:
- Dùng target="blank" - XEM
- Không dùng target="blank" - XEM

9. Chèn ảnh chứa link

<a href="LINK" target="blank"><img src="LINK_ẢNH"/></a>

10. Tạo button ẩn hiện nội dung

<div>
<div>
<input type="button" value="Xem" style="width:75px; font-size:11px; margin:0px; padding:4px; border="1"" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ẩn'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Xem'; }">
</div>
<div>
<div style="display: none;  border:#4F4F4F 1px solid; padding: 4px; background:# ">

NỘI_DUNG

</div>
</div>
</div>
Ví dụ:
Wellcome To Namkna’s Blog

11. Chèn nhạc vào bài viết

<object name='hat' width=300 height=45>
<embed  type='application/x-mplayer2'
 pluginspage='http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/' 
 controls='controlpanel' width=300 height=45 src='LINK_NHẠC'
 autostart="0" showstatusbar="0" ShowControls='true' loop='0' name='hat'></embed></object>
    LINK_NHẠC // Phải là link trực tiếp (VD: http://...bài_hát.mp3)
    loop='0' // Không lặp lại
    loop='1' // Lặp lại một lần
    loop='-1' // Lặp lại mãi mãi
    autostart="0" // Không tự play
    autostart="1" // Play ngay khi web tải xong

12. Chia 2 cột, 3 cột, 4 cột

<table><tbody>
<tr><td class="column_1" style="font:12px Tahoma; color:#000000; width:120px;padding:4px;" valign="top"><div class="column_1">

Nội_dung_cột_1

</div>
</td><td class="column_2" style="font:12px Tahoma; color:#000000;width:120px;padding:4px;" valign="top"><div class="column_2">

Nội_dung_cột_2

</div>
</td></tr>
</tbody></table>
Thêm cột thì thêm trên dòng </td></tr> đoạn code:
</td><td class="column_n" style="font:12px Tahoma; color:#000000;width:120px;padding:4px;" valign="top"><div class="column_n">

Nội_dung_cột_n

</div>

13. Viền khung một nội dung trong bài viết

<div style="border:#4F4F4F 1px solid; padding: 4px; background:#eee; width:400px;">
NỘI_DUNG
</div>
    #4F4F4F 1px solid // Lần lượt là: Mã màu - Độ dày đường viền - Loại đường viền.
       - solid ______________
       - dashed ----------------
       - dotted ......................
    background:#eee // Nền khung
    width:400px // Bề rộng khung. Mặc định là sẽ rộng bằng khung bài viết (nếu bỏ lệnh này đi)

14. Chèn khung chứa code có thẻ "Select all" (Không cần mã hóa code)

<form name="MyTextBoxForm"><input name="button" onclick="javascript:this.form.MyTextBox.focus();this.form.MyTextBox.select();" type="button" value="Select all"/>
<textarea cols="59" name="MyTextBox" rows="18" wrap="on" style="background:#eee; color:#464646; border:1px #A0C4EA dashed;">NỘI_DUNG_CODE</textarea> </form>
    cols="59" // Bề rộng khung chứa code
    rows="18" // Số dòng trong khung chứa code
    wrap="on" // Trong một dòng, chữ dài quá khung sẽ hiện thanh trượt kéo ngang qua
    wrap="off" // Nhiều dòng chữ quá số dòng khung quy định sẽ hiện thanh trượt kéo xuống

Ví dụ:

15. Ảnh rõ hơn khi rê chuột vào

1. Ảnh có chứa link
<a href="link_liên_kết" target="blank">
<img
onmouseover="this.style.opacity=1;this.filters.alpha.opacity=100"
onmouseout="this.style.opacity=0.6;this.filters.alpha.opacity=60" style="opacity:0.6;filter:alpha(opacity=60)" src="LINK_HÌNH"/>
</a>

2. Ảnh không chứa link
<img
onmouseover="this.style.opacity=1;this.filters.alpha.opacity=100"
onmouseout="this.style.opacity=0.6;this.filters.alpha.opacity=60" style="opacity:0.6;filter:alpha(opacity=60)" src="LINK_HÌNH"/>
    opacity=0.6opacity=60 // Ảnh mờ trước khi rê chuột vào.
    Lưu ý: Nếu thay đổi độ mờ thì phải thay đổi cả 4 giá trị.

Ví dụ:

16. Tạo hiệu ứng hiện ảnh khác khi rê chuột vào ảnh

1. Ảnh có chứa link
<a href="link_liên_kết" target="blank"><img onmouseover="this.src='LINK_HÌNH_THAY_THẾ'" onmouseout="this.src='LINK_HÌNH'" src="LINK_HÌNH" ></a>
2. Ảnh không chứa link
<img onmouseover="this.src='LINK_HÌNH_THAY_THẾ'" onmouseout="this.src='LINK_HÌNH'" src="LINK_HÌNH" >Ví dụ:

17. Tạo hiệu ứng khi rê chuột vào link liên kết

<a href="LINK"  target="blank" onmouseover="oldColor=this.style.backgroundColor;this.style.backgroundColor='#eee';" onmouseout="this.style.backgroundColor=oldColor;">TEN_LINK</a>
    LINK // Link liên kết
    #eee // Mã màu khi rê chuột lên
    TEN_LINK // Tên gán cho link liên kết

18. Chèn trang HTML vào bài viết (Chèn trang web vào bài viết)

<iframe src="LINK_HTML" height="550" width="600" scrolling=yes frameborder="0"></iframe>
    scrolling=yes // Cho hiện thanh trượt, ngược lại không dùng thì sữa thành no
    frameborder="0" // Đường viền, 0 là không viền

    Ta có thể dùng lệnh này để chèn bất cứ trang nào dạng HTML (Ví dụ: http://abc.html) vào bài viết đều được hết :)

Ví dụ: Xem tại đây

19. Các loại đường viền | border: 1px #ccc solid;

Dashed - - - - - - - - - - - - - - - - -
Solid _____________________
Dotted ..................................

20. Các kiểu định dạng chữ | text-decoration:none;

none (Không định dạng)
underline (Gạch đích)
overline (Gạch trên đầu)         
line-through (Gạch ngang chữ)
blink (Chớp chớp)
inherit      

21. Thêm các định dạng link vào class

/*Link cố định*/
a:link {
color:#3366ff;
text-decoration:none;
}

/*Link đã xem qua*/
a:visited {
color:#ccc;
text-decoration:none;
}

/*Link khi rê chuột vào*/
a:hover {
color:#339966;
text-decoration:underline;
}

22. Tạo bóng đổ và bo tròn 4 góc viền

/*Tạo bóng đổ*/
box-shadow: 8px 8px 8px #616D7E;
-webkit-box-shadow: 8px 8px 8px #616D7E;
-moz-box-shadow: 8px 8px 8px #616D7E;

/*Tạo bóng đổ 4 cạnh*/
box-shadow: 0px 0px 8px #616D7E;
-webkit-box-shadow: 0px 0px 8px #616D7E;
-moz-box-shadow: 0px 0px 8px #616D7E;

/*Bo tròn 4 góc viền*/
border-radius:4px;

/*Bo tròn tùy chọn: top, right, bottom, left*/
border-radius:4px 4px 4px 4px;
    Thay box thành text cho chữ

23. Các loại định dạng list | ... ul {list-style-type:none;}

none: Không hiển thị đánh dấu
disc: Chấm vuông
circle: Chấm tròn trắng
square: Chấm tròn đen
decimal: Kiểu số (1,2,3,4,…)
lower-alpha: Kiểu Alphabet ở dạng in thường  (a, b, c, d, e, …)
upper-alpha: Kiểu Alphabet ở dạng in hoa (A, B, C, D, E, …)
lower-roman: Kiểu La Mã ở dạng thường (i, ii, iii, iv, v, …)
upper-roman: Kiểu La Mã ở dạng in hoa (I, II, III, IV, V, …)
/*Link hình thay cho list*/
list-style-image:url('Link_hình');

24. Các vị trí đặt ảnh nền background | background: url(image) repeat ;

repeat: lặp ảnh
repeat-y: lặp ảnh theo chiều dọc (từ trên xuống)
repeat-x: lặp ảnh theo bề ngang (từ trái qua)
no-repeat: không lặp
top: đặt ảnh trên mép cùng
top right: đặt ảnh mép trên cùng góc phải
top left: đặt ảnh mép trên cùng góc trái
bottom: đặt ảnh mép dưới cùng
bottom left: đặt ảnh mép dưới cùng góc trái
bottom right: đặt ảnh mép dưới cùng góc phải
right: đặt ảnh bên mép phải
left: đặt ảnh bên mép trái
center: đặt ảnh ở vị trí giữa

25. Code xem địa chỉ IP, thông tin của máy truy cập blog

(Có thể post vào widget bất kỳ ở trên blog)
<img src="http://www.wieistmeineip.de/ip-address">

26. Cách mã hóa code

Với ký tự < phải đổi thành &lt;
Với ký tự > phải đổi thành &gt;
Với ký tự & phải đổi thành &amp;
Với khoảng trắng phải đổi thành &nbsp;
Để post các chú thích kí tự trên lên blog được thì:
    &lt; phải đổi thành &amp;lt;
    &gt; phải đổi thành &amp;gt;
    &amp; phải đổi thành &amp;amp;

27. Các lệnh điều kiện <b:if cond= ... </b:if>


1. Điều kiện ở trang chủ
<b:if cond='data:blog.url == data:blog.homepageUrl'>
...
</b:if>
2. Điều kiện ở trang bài viết
<b:if cond='data:blog.pageType == "item"'>
...
</b:if>
3. Điều kiện ở trang chủ, trang nhãn
<b:if cond='data:blog.pageType == "index"'>
...
</b:if>
4. Điều kiện ở các trang lưu trữ
<b:if cond='data:blog.pageType == "archive"'>
...
</b:if>
5. Điều kiện ở các trang tĩnh
<b:if cond='data:blog.pageType == "static_page"'>
...
</b:if>
6. Điều kiện ở một trang riêng biệt nào đó
<b:if cond='data:blog.url == "URL_của_trang_riêng_biệt"'>
...
</b:if> 
Nếu thay == thành != thì kết quả sẽ ngược lại - Nghĩa là sẽ loại trừ trang đặt điều kiện ra và lấy phần ngược lại (các trang còn lại)

Ví dụ: Điều kiện loại trừ trang bài viết
<b:if cond='data:blog.pageType != "item"'>
...
</b:if>

28. Thêm chữ ký hay ghi chú dưới mỗi bài viết (Đặt dưới dòng <data:post.body/>)

<!-- Lời ghi dưới mỗi bài viết -->
<b:if cond='data:blog.pageType == "item"'>
Nội_dung
</b:if>
Nội_dung // Ghi chú nội dung của bạn, có thể dùng hình ảnh, màu chữ, canh lề,v.v..

29. Script chèn file .js vào blog

<script src='Link_File_JS' type='text/javascript'/>

30. Script chèn trực tiếp nội dung file .js vào blog

<script type='text/javascript'>
//<![CDATA[

Nội_dung_file_js

//]]>
</script>

31. Thêm nhanh khung hướng dẫn hay nội quy comment

- Bạn có thể vào trong phần nội dung nhận xét để soạn thảo nội quy cho phần nhận xét của bạn, xem hình.
Thêm nhanh khung hướng dẫn hay nội quy comment 
- Ví dụ mình soạn thảo nôi dung như sau:
<!--Nội dung hướng dẫn comment-->
<div style='border:#ccc 1px solid; padding:4px;border-radius:4px; background:#eee;'>
Bạn có thể sử dụng một số thẻ HTML như: <br/>
<textarea cols='48' rows='4'>
» Chữ in đậm: <b>Nội_dung_chữ_in_đậm</b>
» Chữ in nghiêng: <i>Nội_dung_chữ_in_nghiêng</i>
» Chèn link liên kết: <a href='Link'>Tên_link</a>
» Chèn hình ảnh: [img]Link_hình[/img] </textarea>
</div>

Sau khi thêm song công việc tiếp theo là cài đặt để khung nội quy đó luôn hiển thị trên box nhận xét, để làm được điều đó bạn xem bài viết sau: Di chuyển ghi chú nhận xét của thread comment theo khung nhận xét khi reply trong blogspot 
Chúc thành công!.


----------------------------------------------------->>>>>>

Thứ Bảy, 15 tháng 6, 2019

TỐI ƯU TỐC ĐỘ TẢI TRANG BLOGSPOT


-------------------------------------------------------
-----------------------------------------------------

TIÊU ĐỀ DANH MỤC 1


TIÊU ĐỀ DANH MỤC 2

----------------------------------------------------->>>>>>
Bài này được mình viết bằng cả quá trình dài tìm hiểu, thử nghiệm mới đưa ra được các phương pháp tối ưu nhất làm tăng tốc độ tải trang và cần khắc phục ở những điểm nào gây ảnh hưởng đến tốc độ tải trang trong Blogspot. Mình xin nhấn mạnh chỉ trong Blogspot thôi còn các mã nguồn khác mình không đề cập đến.




Vì đây là bài tổng hợp cho nên dài và có khi rất dài và có thể được cập nhật nếu mình phát hiện được phương pháp nào hay hơn do đó các bạn quan tâm có thể đọc tham khảo. Và còn vấn đề nữa vì những phương pháp này mình đả áp dụng thí nghiệm nên độ chính xác cao.

Trước hết bạn cần lưu ý ở những điểm sau đây:

+ Vấn đề bạn không nên quan tâm nhiều:

1. Sử dụng Google Pagespeed hay các trang web tương tự làm thước đo chính mà nên sử dụng tham khảo vì Pagespeed hay các trang web khác sử dụng thuận toán chung khi quét trang web nếu thấy vấn đề gì nó sẽ đưa vào cảnh báo mà không quan tâm đến thời gian tải trang.
2. Chặn js và css mặc định của Blog vì cho dù bạn chặn cũng không làm giảm thời gian tải trang đôi khi gây lỗi cho widget nếu bạn không làm đúng cách.

+ Vấn đề bạn cần quan tâm:

1. Kích thước hay còn gọi dung lượng của một trang khi tải
2. Quy tắc khi tải trang web phần nào được tải trước, phần nào được tải sau.
3. Tải feeds

Bây giờ mình sẽ đi vào phần trọng tâm của những vấn đề bạn cần quan tâm nó sẽ quyết định tốc độ tải trang

1. Kích thước một trang khi tải

Bây giờ mình sẽ lấy ví dụ minh họa kích thước của trang bằng quãng đường và thời gian chạy đến đích là thời gian tải xong trang. Như vậy quãng đường càng ngắn thì thời gian đến đích sẽ nhanh hơn. Và bây giờ chúng ta sẽ tìm hiểu những mục nào làm tăng kích thước trang bao gồm:

+ CSS
+ HTML
+ Ảnh
+ Script

Trong đó thì ảnh sẽ nặng nhất do đó chúng ta cần xử lý đến mức tối ưu nhất. Để có ảnh hiển thị thì trong bài viết chúng ta cần tải ảnh lên sử dụng host Blogger lưu trữ. Vấn đề bạn cần xử lý ảnh trước khi tải lên bằng 2 vấn đề sau:

+ Xác định độ rộng tối đa của vùng chứa ảnh, mình lấy ví dụ phần main-wrapper có độ rộng tối đa là 860px thì bạn cần thiết lập độ rộng của ảnh cũng tối đa là 860px, chẳng hạn tệp ảnh đó có độ rộng 2000px thì dung lượng của nó sẽ rất nặng tuy nhiên nếu bạn chỉnh lại độ rộng xuống còn 860px thì dung lượng ảnh sẽ giảm đi rất nhiều.

+ Nén ảnh trước khi tải lên bằng cách sử dụng các trang nén ảnh online trên mạng mục đích nén ảnh lại giảm dung lượng.

Sau khi bạn tải ảnh đó lên bài viết thì trong Blogger cho phép bạn điều chỉnh kích thước trong bài viết như sau:

Nhỏ: s200
Trung bình: s320
Lớn: s400
Rất lớn: s640
Kích thước band đầu: s1600

Như vậy nếu bạn thiết lập ảnh có kích thước ban đầu s1600 tương đương với kích thước chính của tệp ảnh khi bạn tải lên. Mình khuyến khích các bạn chỉ để kích thước trung bình s320 là đủ, tuy nhiên khi hiển thị trong bài viết ảnh sẽ nhỏ và mờ do đó bạn cần thay đổi bằng cách sử dụng js replace kích thước về ảnh gốc cho độ nét cao nhất

Copy
<head>

<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'></script>

</head>

<body>

...

<b:if cond='data:view.isSingleItem'>

  <script>//<![CDATA[

    $(document).ready(function() {

      $('.post-body .separator a,.post-body .tr-caption-container a').attr('href', function(o, n) {

        return n.replace('s200', 's1600').replace('s320', 's1600').replace('s400', 's1600').replace('s640', 's1600')

      })

      $('.post-body .separator img,.post-body .tr-caption-container img').attr('src', function(o, n) {

        return n.replace('s200', 's1600').replace('s320', 's1600').replace('s400', 's1600').replace('s640', 's1600')

      })

  //]]></script>

</b:if>

</body>


Chỗ này bạn cần để ý tải ảnh và thay đổi kích thước nó khác nhau vì khi tải trang sẽ chỉ tải ảnh có kích thước s320 còn khi tải xong ảnh thì js sẽ xử lý ảnh về kích thước gốc s1600 do đó tải ảnh và hiển thị ảnh hoàn toàn khác nhau tóm lại tải ảnh xong rồi mới xử lý ảnh.

Một vấn đề nữa về kích thước ảnh bạn cần quan tâm đó là ảnh đầu tiên của bài viết được lấy ra làm ảnh hiển thị bên ngoài trang index của widget Blog1, PopularPosts, FeaturePosts. Do bạn đã thiết lập ảnh kích thước s320 thì ảnh mặc định đầu tiên khi tải và hiển thị ngoài trang index cũng chỉ có kích thước là s320, nếu bạn thấy mờ do kích thước nhỏ bạn cũng có thể sử dụng js replace ảnh  của widget Blog1 còn widget PopularPosts để kích thước s320 là hợp lý

Copy
<head>

<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'></script>

</head>

<body>

...

<b:if cond='data:view.isMultipleItems'>

  <script>//<![CDATA[

    $(document).ready(function() {

      $('.post img').attr('href', function(o, n) {

        return n.replace('s200', 's1600').replace('s320', 's1600').replace('s400', 's1600').replace('s640', 's1600')

      })

  //]]></script>

</b:if>

</body>


Ngoài ra trong Blogger cung cấp sẵn hàm resize ảnh mặc định rất tốt đó là hiển thị ảnh theo kích thước màn hình nếu như trên máy tính bạn không thấy tác dụng nhiều nhưng ngược lại với điện thoại thì tốc độ tải trang sẽ tăng rất tốt do vậy bạn nên áp dụng như sau:

// widget Blog1 version 1

Copy
<b:if cond='data:post.firstImageUrl'>

  <div class='post-thumb'>

    <a expr:href='data:post.url' expr:title='data:post.title'>

    <img expr:alt='data:post.title' expr:src='data:post.firstImageUrl' expr:srcset='sourceSet(data:post.firstImageUrl, [200,320,400,640,1600], &quot;16:9&quot;)'/>

    </a>

  </div>

  <b:else/>

  <div class='post-thumb'>

    <a expr:href='data:post.url' expr:title='data:post.title'>

    <img expr:alt='data:post.title' expr:srcset='sourceSet(&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij46NSZmLHFQGwymbk9qC_Tjl4Xmn7Lo9jZwHiI3lxtzdCKiLD6HYM0iRHjx_VBpbS8MUVJzPM8Z1Fq6WtkTvD2OQCKtO8th9_3uBWnCxmORJCoFrVTIxnuBvA1T-GBGYX8-CdY8JtfcO_/s1600/safe_image.png&quot;, [200,320,400,640,1600], &quot;16:9&quot;)' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij46NSZmLHFQGwymbk9qC_Tjl4Xmn7Lo9jZwHiI3lxtzdCKiLD6HYM0iRHjx_VBpbS8MUVJzPM8Z1Fq6WtkTvD2OQCKtO8th9_3uBWnCxmORJCoFrVTIxnuBvA1T-GBGYX8-CdY8JtfcO_/s1600/safe_image.png'/>

    </a>

  </div>

</b:if>


// widget Blog1 version 2

Copy
<b:if cond='data:post.featuredImage'>

  <div class='post-thumb'>

    <a expr:href='data:post.url' expr:title='data:post.title'>

    <img expr:alt='data:post.title' expr:src='data:post.featuredImage' expr:srcset='sourceSet(data:post.featuredImage, [200,320,400,640,1600], &quot;16:9&quot;)' sizes='(min-width: 954px) 842px, (min-width: 801px) calc(100vw - 112px), calc(100vw - 64px)'/>

    </a>

  </div>

  <b:else/>

  <div class='post-thumb'>

    <img expr:alt='data:post.title' expr:srcset='sourceSet(&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij46NSZmLHFQGwymbk9qC_Tjl4Xmn7Lo9jZwHiI3lxtzdCKiLD6HYM0iRHjx_VBpbS8MUVJzPM8Z1Fq6WtkTvD2OQCKtO8th9_3uBWnCxmORJCoFrVTIxnuBvA1T-GBGYX8-CdY8JtfcO_/s1600/safe_image.png&quot;, [200,320,400,640,1600], &quot;16:9&quot;)' sizes='(min-width: 954px) 842px, (min-width: 801px) calc(100vw - 112px), calc(100vw - 64px)' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij46NSZmLHFQGwymbk9qC_Tjl4Xmn7Lo9jZwHiI3lxtzdCKiLD6HYM0iRHjx_VBpbS8MUVJzPM8Z1Fq6WtkTvD2OQCKtO8th9_3uBWnCxmORJCoFrVTIxnuBvA1T-GBGYX8-CdY8JtfcO_/s320/safe_image.png'/>

  </div>

</b:if>


Áp dụng trong widget PopularPosts version 1 thay ảnh như sau:

Copy
<b:if cond='data:post.featuredImage.isResizable or data:post.thumbnail'>

  <div class='item-thumbnail'>

    <a expr:href='data:post.href' expr:title='data:post.title'>

    <img expr:alt='data:post.title' expr:src='data:post.featuredImage' expr:srcset='sourceSet(data:post.featuredImage, [200,320,400,640,1600], &quot;16:9&quot;)' sizes='(min-width: 954px) 842px, (min-width: 801px) calc(100vw - 112px), calc(100vw - 64px)'/>

    </a>

  </div>

  <b:else/>

  <div class='item-thumbnail'>

    <a expr:href='data:post.href' expr:title='data:post.title'>

    <img expr:alt='data:post.title' expr:srcset='sourceSet(&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij46NSZmLHFQGwymbk9qC_Tjl4Xmn7Lo9jZwHiI3lxtzdCKiLD6HYM0iRHjx_VBpbS8MUVJzPM8Z1Fq6WtkTvD2OQCKtO8th9_3uBWnCxmORJCoFrVTIxnuBvA1T-GBGYX8-CdY8JtfcO_/s1600/safe_image.png&quot;, [200,320,400,640,1600], &quot;16:9&quot;)' sizes='(min-width: 954px) 842px, (min-width: 801px) calc(100vw - 112px), calc(100vw - 64px)' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij46NSZmLHFQGwymbk9qC_Tjl4Xmn7Lo9jZwHiI3lxtzdCKiLD6HYM0iRHjx_VBpbS8MUVJzPM8Z1Fq6WtkTvD2OQCKtO8th9_3uBWnCxmORJCoFrVTIxnuBvA1T-GBGYX8-CdY8JtfcO_/s320/safe_image.png'/>

    </a>

  </div>

</b:if>


Tiếp theo chúng ta sẽ xử lý ảnh hiển thị trong feeds

Khi xây dựng các widget Recent Posts, Random Posts chúng ta phải sử dụng feeds để lấy dữ liệu trong đó có ảnh thế thì ảnh mặc định trong feeds luôn được tối ưu về kích thước nhỏ nhất s72-c có rộng và cao bằng 72px tức là ảnh vuông và khi viết script lấy ảnh như sau:

Copy
<body>

<script>//<![CDATA[

function getPosts(e) {

  for (var t = 0; t < e.feed.entry.length; t++) {

    var thumb = e.feed.entry[t].media$thumbnail.url,

          thumbsrc = "<img src='+ thumb +'/>";

  }

}

//]]></script>

</body>


sẽ cho ra ảnh mặc định s72-c

Thay vào đó chúng ta sẽ xây dựng đoạn script lấy ảnh như sau:

Copy
<body>

<script>//<![CDATA[

function getPosts(e) {

  for (var t = 0; t < e.feed.entry.length; t++) {

    var thumb  =  e.feed.entry[t].media$thumbnail.url,

          w200   =  thumb.replace("s72-c", "w200-h112-p-k-no-nu"),

          w320   =  thumb.replace("s72-c", "w320-h180-p-k-no-nu"),

          w400   =  thumb.replace("s72-c", "w400-h225-p-k-no-nu"),

          w640   =  thumb.url.replace("s72-c", "w640-h360-p-k-no-nu"),

          w1600 = thumb.replace("s72-c", "w1600-h900-p-k-no-nu"),

          thumbsrc = "<img src=' + w320 + '  sizes="(min-width: 954px) 842px, (min-width: 801px) calc(100vw - 112px), calc(100vw - 64px)" srcset="' + w200 + " 200w, " + w320 + " 312w, " + w400 + " 400w, " + w640 + " 640w, " + w1600 + ' 1600w"/>";

  }

}

//]]></script>

</body>


Như vậy khi tải trang ảnh trong widget sẽ hiển thị như ví dụ sau:

<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1f7k8ABXP_wQxUWv-es5wjfiD-Mbdo15yKYU1pkcf4UhPwGE0eLSZrTpwz0cPIODBGx1046uW6wLl8qUkUOHkyLUOaMPYNpSnGfQEQAwTcoVV7M1-or3sPGDTMMGTG6XCzjJS-XpPPI34/s320/2018-07-06_11-55-35.jpg" sizes="(min-width: 954px) 842px, (min-width: 801px) calc(100vw - 112px), calc(100vw - 64px)" srcset="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1f7k8ABXP_wQxUWv-es5wjfiD-Mbdo15yKYU1pkcf4UhPwGE0eLSZrTpwz0cPIODBGx1046uW6wLl8qUkUOHkyLUOaMPYNpSnGfQEQAwTcoVV7M1-or3sPGDTMMGTG6XCzjJS-XpPPI34/w200-h112-p-k-no-nu/2018-07-06_11-55-35.jpg 200w, https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1f7k8ABXP_wQxUWv-es5wjfiD-Mbdo15yKYU1pkcf4UhPwGE0eLSZrTpwz0cPIODBGx1046uW6wLl8qUkUOHkyLUOaMPYNpSnGfQEQAwTcoVV7M1-or3sPGDTMMGTG6XCzjJS-XpPPI34/w320-h180-p-k-no-nu/2018-07-06_11-55-35.jpg 312w, https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1f7k8ABXP_wQxUWv-es5wjfiD-Mbdo15yKYU1pkcf4UhPwGE0eLSZrTpwz0cPIODBGx1046uW6wLl8qUkUOHkyLUOaMPYNpSnGfQEQAwTcoVV7M1-or3sPGDTMMGTG6XCzjJS-XpPPI34/w400-h225-p-k-no-nu/2018-07-06_11-55-35.jpg 400w, https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1f7k8ABXP_wQxUWv-es5wjfiD-Mbdo15yKYU1pkcf4UhPwGE0eLSZrTpwz0cPIODBGx1046uW6wLl8qUkUOHkyLUOaMPYNpSnGfQEQAwTcoVV7M1-or3sPGDTMMGTG6XCzjJS-XpPPI34/w640-h360-p-k-no-nu/2018-07-06_11-55-35.jpg 640w, https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1f7k8ABXP_wQxUWv-es5wjfiD-Mbdo15yKYU1pkcf4UhPwGE0eLSZrTpwz0cPIODBGx1046uW6wLl8qUkUOHkyLUOaMPYNpSnGfQEQAwTcoVV7M1-or3sPGDTMMGTG6XCzjJS-XpPPI34/w1600-h900-p-k-no-nu/2018-07-06_11-55-35.jpg 1600w">

Ngoài Ảnh ra thì các mục còn lại css, html, script có dung lượng không đáng kể gộp tất cả lại cũng không bằng kích thước của một tệp ảnh do đó bạn cũng đừng quan trọng quá về kích thước của những tệp này.

2. Quy tắc khi tải trang web

Nguyên tắc tải trang web sẽ theo thứ tự từ trên xuống giống như nước chảy từ trên cao xuống chỗ thấp và trong cấu trúc tải trang sẽ tải theo trình tự css - html (bao gồm ảnh) - script, chúng ta đi vào phân tích một chút về trình tự này

CSS được tải trước để khi HTML tải xong sẽ hiển thị và cuối cùng script được tải để xứ lý như vậy nếu script được tải trước HTML thì HTML phải đợi script tải xong mới được tải mà chúng ta cần hiển thị trước do đó script bao giờ cũng phải đặt dưới cùng ngay trên thẻ đóng </body>.

Chúng ta lại phân tích tiếp về script trong đó lại bao gồm các đoạn js hay javascript hiển thị các nội dung khác nhau và tại các trang khác nhau. Trở lại với ví dụ ban đầu cùng một quãng đường nhưng tại sao anh A lại chạy tới trước anh B là do anh A có lực hơn và biết xử lý kỹ thuật trong thời gian chạy tốt hơn anh B do đó anh A sẽ đến trước anh B.

Áp dụng vào các đoạn script A hiển thị nội dung A, đoạn script B hiển thị nội dung B mà nguyên tắc tải trang và hiển thị từ trên xuống thì nếu A nằm trước B thì đoạn script A phải được nằm trên đoạn script B để được tải và hiển thị trước.

Tất nhiên chúng ta cần đặt điều kiện tải script cho các trang khác nhau bằng thẻ điều kiện trong Blogspot ví dụ đoạn script đó chỉ chạy tại trang chủ thì sử dụng điều kiện

Copy
<body>

<b:if cond='data:view.isHomepage'>

  <script>//<![CDATA[

    // đoạn script A hoặc B

  //]]></script>

</b:if>

</body>


Tiếp theo chúng ta sẽ sử dụng phương thức document ready và window onload để tải script áp dụng khi css và html tải xong mới tải script. Nếu trong jquery sử dụng $(document).ready(function() thì trong javascript thuần sử dụng window.onload = function() và trong jquery cũng có hàm tương đương là $(window).on('load', function(). Sự giống nhau và khác biệt chính của 2 phương thức này như sau:

Giống nhau: Đều đợi html tải trước
Khác nhau: document ready sẽ tải script ngay khi html mới tải một phần chứ chưa tải xong còn window onload phải đợi html tải xong mới tải script.

Như vậy trong hai phương thức trên thì sử dụng phương thức nào tốt hơn? Tùy vào từng trường hợp mà sử dụng phương thức nào nếu viết script sử dụng jquery thì sử dụng document ready tỏ ra hiệu quả hơn còn nếu sử dụng javascript thì áp dụng window onload.

Tuy nhiên như đề cập ở trên đoạn script A đặt trên đoạn script B mà cả 2 đều sử dụng phương thức window onload do đó sẽ gây ra tình trang đơ hay trang bị lag do cùng tải một lượt. Do đó đoạn script A sử dụng phương thức document ready trong khi đoạn script B được xử lý sau cùng với window onload.

Cuối cùng không thể không đề cập đến iframe và link js của nhận xét trong bài viết, vấn đề này mình đã có viết hướng dẫn trong Blog các bạn tham khảo link https://vietblogdao.blogspot.com/2018/09/huong-da-tai-comment-form-sau-khi-tai-trang-hoac-tao-button-click.html mục đích chính là khi truy cập bài viết để đọc chứ ít khi vào để nhận xét do đó chúng ta thiết lập cho khung nhận xét và nội dung nhận xét được tải sau khi bài viết tải xong hoặc chúng ta cũng có thể thiết lập sử dụng button click load khung nhận xét cũng được do đó tốc độ tải trang cũng nhanh hơn.

3. Tải feeds

Vấn đề này được nhiều người quan tâm vì nó làm ảnh hưởng rất nhiều đến tốc độ tải trang, như đã đề cập phần trên khi xây dựng các widget Recent Posts, Random Posts, Recent Comments bắt buộc phải sử dụng feeds mà feeds lại được chia làm 2 loại:

Loại tóm tắt: /feeds/posts/summary
Loại đầy đủ: /feeds/posts/default

Sự khác biệt của 2 loại feeds này nếu như summary chỉ lấy duy nhất một ảnh của mỗi bài viết và đoạn tóm tắt thì default sẽ tải đầy đủ tất cả ảnh và nội dung bài viết do đó tải feeds bằng tóm tắt nhanh và hiệu quả hơn so với feeds đầy đủ vì khi xây dựng chúng ta cũng chỉ cần lấy ảnh đầu tiên và đoạn tóm tắt chứ đâu lấy hết nội dung.

Thứ hai khi xây dựng widget Random Posts bài viết ngẫu nhiên thường phải tải feeds với tối đa số bài viết mà trong khi chỉ lấy số bài viết cụ thể, lấy ví dụ:

Copy
/feeds/posts/summary?alt=json-in-script&max-results=5


sẽ tải 5 bài viết so với

Copy
/feeds/posts/summary?alt=json-in-script&max-results=150


phải tải max là 150 bài viết do đó thời gian tải feeds này lâu hơn rất nhiều trong khi lại lọc lấy 5 bài viết hiển thị ngẫu nhiên.

Gải pháp ở đây tối ưu hơn đó là chia mỗi bài viết cho 1 feeds sử dụng start-index và max-results=1 &callback=randomposts chẳng hạn

Copy
/feeds/posts/summary?alt=json-in-script&start-index=10&max-results=1&callback=randomposts

/feeds/posts/summary?alt=json-in-script&start-index=3&max-results=1&callback=randomposts

/feeds/posts/summary?alt=json-in-script&start-index=40&max-results=1&callback=randomposts

/feeds/posts/summary?alt=json-in-script&start-index=101&max-results=1&callback=randomposts

/feeds/posts/summary?alt=json-in-script&start-index=512&max-results=1&callback=randomposts


Như vậy với mỗi feeds được tải sẽ chỉ tải 1 bài và được lấy bài viết ngẫu nhiên bằng start-index. Rõ ràng cùng 1 thời gian nếu tải 5 cái feeds chỉ có 1 bài sẽ nhanh hơn 1 cái feeds 150 bài.

Cuối cùng là sử dụng phương thức get script hay ajax sẽ hiệu quả hơn so với đặt script trực tiếp vì nếu sử dụng các phương thức trên chúng ta sẽ kết hợp với phương thức document ready và window onload tải feeds tải sau khi html được tải. Lấy ví dụ minh họa

+ Sử dụng phương thức get script

Copy
<body>

<script>//<![CDATA[

$(window).on('load', function() {

  $.getScript('/feeds/posts/summary?alt=json-in-script&max-results=5&callback=recentposts')

})

//]]></script>

</body>


+ Sử dụng phương thức ajax

Copy
<body>

<script>//<![CDATA[

$(window).on('load', function() {

  $.ajax({

    type: 'GET',

    url: '/feeds/posts/summary',

    data: {

      'max-results': 5,

      'alt': 'json'

    },

    dataType: 'jsonp',

    jsonp: 'callback',

    jsonpCallback: 'recentposts',

    success: function() {

      $('.recent-posts').removeClass('spinner').removeClass('load')

    }

  })

})

//]]></script>

</body>


Trên đây là những phương pháp làm tăng tốc độ tải trang, trong quá trình viết bài có thể sai xót gây ra nhầm lẫn cho các bạn nếu không hiểu. Mình sẽ cập nhật lại khi có phương pháp nào mới hay hơn.
=========

Cách sử dụng các thẻ điều kiện bloger


Cách sử dụng các thẻ điều kiện Blogger 2019


Để áp dụng thẻ (tag) điều kiện bạn phải có kiến thức chút về HTML, bạn chú ý là cơ bản nó bắt đầu bằng tag với thuộc tính “ cond “ và kết thúc là một tag đóng. Trong giữa những tag này, các nội dung (html ,style, script, widgets…) sẽ chỉ xuất hiện hoặc thực hiện theo những điều kiện xác định.



Ví dụ như trong đoạn code sau:
<b:if cond='your condition'>
<style>...css code...</style>
<script>...javascript code...</script>
</b:if>

Phần 1. Các thẻ điều kiện

1. Trang chủ (Homepage)

<b:if cond='data:view.isHomepage'>
<!-- Nội dung chỉ hiển thị trên trang chủ -->
</b:if>
Theo version trước:
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<!-- Nội dung chỉ hiển thị trên trang chủ -->
</b:if>

2. Trang bài viết (item)

<b:if cond='data:view.isPost'> 
<!-- Nội dung chỉ hiển thị trên trang bài viết -->
</b:if>
Theo version trước:
<b:if cond='data:blog.pageType == "item"'> 
<!-- Nội dung chỉ hiển thị trên trang bài viết -->
</b:if>
Cho một trang bài viết cụ thể:
<b:if cond='data:blog.url == data:blog.canonicalHomepageUrl + "2016/03/postn.html"'>
<!-- Nội dung chỉ hiển thị trên trang bài viết có địa chỉ url Blog-cua-ban/2016/03/postn.html-->
</b:if>

3. Trang tĩnh (Static page)

<b:if cond='data:view.isPage'>
<!-- Nội dung chỉ hiển thị trên trang tĩnh static page -->
</b:if>
Theo version trước:
<b:if cond='data:blog.pageType == "static_page"'>
<!-- Nội dung chỉ hiển thị trên trang tĩnh static page -->
</b:if>
Cho một trang tĩnh cụ thể:
<b:if cond='data:blog.url == data:blog.canonicalHomepageUrl + "p/static.html"'>
<!-- Nội dung chỉ hiển thị trên trang bài viết có địa chỉ url Blog-cua-ban/p/static.html 'foo' -->
</b:if>

4. Trang index bao gồm trang chủ, trang hiển thị nhãn Label, và trang archive.

<b:if cond='data:view.isMultipleItems'>
<!-- Nội dung chỉ hiển thị trên các trang index: trang chủ, trang hiển thị nhãn, trang lưu trữ -->
</b:if>
Theo version trước:
<b:if cond='data:blog.pageType == "index"'>
<!-- Nội dung chỉ hiển thị trên các trang index: trang chủ, trang hiển thị nhãn, trang lưu trữ -->
</b:if>

5. Trang label search

<b:if cond='data:view.isLabelSearch'>
<!-- Nội dung hiển thị trên tất cả các trang nhãn label -->
</b:if>
.................
<b:if cond='data:view.isLabelSearch == "blogger"'>
<!-- Nội dung chỉ hiển thị trên nhãn "blogger"-->
</b:if>
Theo version trước:
<b:if cond='data:blog.searchLabel'>
<!-- Nội dung hiển thị trên tất cả các trang nhãn label -->
</b:if>
.................
<b:if cond='data:blog.searchLabel == "blogger"'>
<!-- Nội dung chỉ hiển thị trên nhãn "blogger"-->
</b:if>

6. Hiển thị nội dung cho kết quả tìm kiếm (ví dụ: /search?q=blogger)

<!-- Bao gồm trang tìm kiếm nhãn -->
<b:if cond='data:view.isSearch'> … </b:if>

<!-- Chỉ các trang tìm kiếm -->
<b:if cond='data:view.isSearch and !data:view.isLabelSearch'> … </b:if>
Theo version trước:
<b:if cond='data:blog.searchQuery'> 
<!-- Nội dung hiển thị trên tất cả các trang tìm kiếm --></b:if>

...................................

<b:if cond='data:blog.searchQuery == "blogger"'>
<!-- Nội dung chỉ hiển thị trên trang tìm kiếm với từ "blogger"-->
</b:if>

7. Trang lỗi 404

<b:if cond='data:view.isError'>
<!-- Nội dung chỉ hiển thị trên trang lỗi -->
</b:if>
Theo version trước:
<b:if cond='data:blog.pageType == "error_page"'>
<!-- Nội dung chỉ hiển thị trên trang lỗi -->
</b:if>

8. Trang lưu trữ (archive)

<b:if cond='data:view.isArchive'> 
<!-- Nội dung chỉ hiển thị trên tất cả các trang lưu trữ archive-->
</b:if>
Theo version trước:
<b:if cond='data:blog.pageType == "archive"'> 
<!-- Nội dung chỉ hiển thị trên tất cả các trang lưu trữ archive-->
</b:if>

9. Trang hiển thị trên mobile

<b:if cond="data:blog.isMobile">
<!-- Nội dung chỉ hiển thị trên trang mobile-->
</b:if>

10. Nội dung hiển thị cho những trang có nhiều bài viết trên cùng một trang, áp dụng này cho bài viết đầu tiên FirstPost

<b:if cond='data:post.isFirstPost'>
<!-- Nội dung cần trình bày -->
</b:if>

11. Nội dung hiển thị cho trang tĩnh Static Page và bài viết Item

<b:if cond='data:view.isSingleItem'>
<!-- Nội dung chỉ hiển thị với trang tĩnh và bài viết -->
</b:if>
Theo version trước:
<b:if cond='data:blog.url == data:post.url'>
<!-- Nội dung chỉ hiển thị với trang tĩnh và bài viết -->
</b:if>

12. Hiển thị nội dung nếu bài viết có ảnh thumbnail

<b:if cond='data:post.thumbnailUrl'>
<!-- Nội dung chỉ hiển thị với bài viết có ảnh thumbnail -->
</b:if>

13. Hiển thị một nội dung khi có Backlink

<b:if cond='data:post.showBacklinks'>
<!-- Nội dung chỉ hiển thị khi có backlink -->
</b:if>

14. Hiển thị nội dung cho Tác giả bài viết

<b:if cond='data:displayname == "author-name"'> 
<!-- Nội dung cần trình bày -->
</b:if>

15. Hiển thị nội dung trên trang có số comments bằng một giá trị nào đó

<b:if cond='data:post.numComments == number'>
<!-- Nội dung cần trình bày -->
</b:if>

16. Hiển thị nội dung trong tất cả các trang khi chức năng comment được kích hoạt

 <b:if cond='data:post.allowComments'> 
<!-- Nội dung cần trình bày -->
</b:if>

17. Hiển thị nội dung ở trang Preview (xem trước)

<b:if cond='data:view.isPreview'> … </b:if>

18. Điều kiện đối với nhãn (Label) cuối cùng

<b:loop values='data:post.labels' var='label'>
<b:if cond='data:label.isLast != &quot;true&quot;'> <!-- Nếu ko phải nhãn cuối thì thêm ký tự đặc biệt vào phía sau -->
,
</b:if>
</b:loop>

Phần 2. Cách sử dụng và kết hợp các thẻ điều kiện 

1. Áp dụng điều kiện xuất hiện hoặc không xuất hiện

 == Có nghĩa là chỉ xuất hiện trên trang này …..
!= Có nghĩa là xuất hiện trên tất cả các trang trừ trang này ra……

2. Dùng thêm thẻ <b:/else/>

Nếu muốn đưa vào một nội dung thay thế khi điều kiện đưa vào là sai, bạn cần thêm một thẻ <b:else> và cho nội dung vào giữa.
<b:if cond='data:view.isPost'>
Nội dung chỉ hiển thị trang bài viết Item
<b:else/>
Nội dung hiển thị các trang còn lại
</b:if>

3. Kết hợp của nhiều điều kiện (xuất hiện khi thỏa mãn các điều kiện)

<b:if cond='!data:blog.pageType == "item"'>
<b:if cond='data:view.isHomepage'>
<style type='text/css'>.post-body {color: yellow;}</style>
<b:else/>
<b:if cond='data:view.isLabelSearch'>
<style type='text/css'>.post-body {color: blue;}</style>
<b:else/> <style type='text/css'>.post-body {color: red;}</style>
</b:if>
</b:if>
</b:if>
Với đoạn code này thì có ý nghĩa xuất ở trang chủ thì .post-body có chữ màu yellow, nếu là trang nhãn sẽ có màu là blue, còn nếu là các trang khác sẽ có màu red.

4. Sử dụng điều kiện IN

<b:if cond='data:blog.pageType in {"static_page","item"}'>
Nội dung chỉ hiển thị Trang Tĩnh và trang Bài Viết
</b:if>

5. Sử dụng điều kiện NOT IN

<b:if cond='data:blog.pageType not in {"static_page","item"}'>
Nội dung không hiển thị Trang Tĩnh và trang Bài Viết
</b:if>

6. Sử dụng điều kiện AND

<b:if cond='data:view.isPage and data:view.isPost'>
Nội dung hiển thị Trang Tĩnh và Trang Bài Viết
</b:if>

7. Sử dụng điều kiện OR

<b:if cond='data:view.isPage or data:view.isPost'>
Nội dung hiển thị hoặc Trang Tĩnh hoặc Trang Bài Viết
</b:if>

8. Sử dụng điều kiện Else if

<b:if cond='data:blog.pageType == &quot;item&quot;'>
<data:post.body/>
<b:elseif cond='data:blog.pageType == &quot;static_page&quot;'>
<data:post.body/>
<b:else/>
<data:post.snippet/>
</b:if>
Đoạn code trên tương đương với
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<data:post.body/>
<b:else/>
<b:if cond='data:blog.pageType == &quot;static_page&quot;'>
<data:post.body/>
<b:else/>
<data:post.snippet/>
</b:if>
</b:if>

Phần 3. Lưu ý 

Khi bạn chỉnh sửa code cho template của bạn, đôi khi dấu ngoặc kép (“) sẽ bị thay thế bằng ký tự quot;. Ví dụ như

<b:if cond='data:blog.pageType == "static_page"'> 
sẽ được thay là
<b:if cond='data:blog.pageType == quot;static_pagequot;'> 
Sử dụng điều kiện trong thẻ b:include hoàn toàn tương tự với thẻ b:if, bạn chỉ cần thêm vào thuộc tính cond='ĐIỀU KIỆN' của thẻ b:if vào thẻ b:include là xong.

Chủ Nhật, 17 tháng 3, 2019

Hướng dẫn tạo subdomain ( tên miền phụ) cho blogspot


Hướng dẫn tạo subdomain ( tên miền phụ) cho blogspot

Hướng dẫn cách tạo Subdomain (Tên miền phụ) cho Blogspot
Domain và Subdomain là hai thuật ngữ chắc hẳn các bạn đã nghe rất nhiều và cũng không mấy xa lạ. Tuy nhiên, việc trỏ Domain cho Blogspotthì chắc hẳn ai cũng biết nhưng việc tạo Subdomain sau đó trỏ về Blogspot thì chưa chắc ai cũng biết.


Vậy Subdomain là gì?Chẳng hạn, Mình có một Domain (tên miền) là pdusoft.com, Vậy các Subdomain của mình sẽ là internet.pdusoft.com, media.pdusoft.com,…Bạn có thể tạo hàng ngàn Subdomain.

                   Đọc thêm:


Tại sao cần tạo một Subdomain (tên miền phụ)? Đơn giản là để tiết kiệm chi phí mua tên miền và các chi phí phụ trợ phải chi trả khác => Một lý do đầy thuyết phục đúng không nào? Và ở đây, Pdusoft đã tạo theme.pdusoft.com để thành nơi giới thiệu khóa học cho cả nhà rồi nhé.

Cách trỏ Subdomain về Blogspot:

Bước 1: Blogger => Cài đặt => Cơ bản => Xuất bản => Địa chỉ blog => Thiết lập URL của bên thứ 3 cho blog của bạn => Điền vào ô trống là Subdomain của bạn. Ở đây mình đặt Subdomain là media.windows2it.com (domain chính là windows2it.com)


Sau đó bấm Lưu nếu làm đúng thì kết quả sẽ cho ra như thế này:
Hướng dẫn trỏ tên miền về Blogspot

+ bạn phải dùng tài khoản google quản trị tên miền chính của mình để tạo subdomain.
+ Vào quản lí domain của nhà cung cấp thêm 2 bản ghi CNAME mà nó hiện ra khi ta ấn lưu. Có thể xem lại Hướng dẫn trỏ tên miền về Blogspot 
Cuối cùng ấn lưu nó sẽ lưu được, và hiện ra như sau:

Bước 2: Đăng nhập vào trình quản lý Domain, dưới đây là trình quản lý Domain windwos2it.com của mình.


Sau đó các bạn thêm một bản ghi như hình:


Công việc còn lại của bạn là đợi 5 đến 10 phút và hưởng thụ thành quả (Nếu không vô được hãy xóa lịch sử trình duyệt nhé). Vậy là các bạn đã có được một blog mới với tên miền là một subdomain rồi, rất chuyên nghiệp đúng không nào.

Nếu bạn thích bài viết này, hãy subscribe blog của tôi để thường xuyên cập nhật những bài viết hay nhất, mới nhất qua email nhé. Cảm ơn rất nhiều JJJ

Thứ Bảy, 16 tháng 3, 2019

Hướng dẫn trỏ tên miền về Blogspot

Hướng dẫn trỏ tên miền về Blogspot

Đợt vừa rồi mình được rất nhiều bạn comment hoặc email hỏi cách trỏ tên miền về Blogspot (Blogger). Do đó, mình đã bỏ ra mấy ngày để viết nên bài này, hướng dẫn trỏ tên miền của các nhà cung cấp nổi tiếng nhất hiện nay.
Khi tạo một website với Blogspot, mặc định bạn sẽ có tên miền dạng abc.blogspot.com. Để tăng thêm tính chuyên nghiệp, tốt nhất hãy đăng ký một tên miền riêng (tất nhiên dùng khuyến mãi trên PDUSOFT) và trỏ đến Blogspot theo hướng dẫn chi tiết trong bài viết này.
Sau khi cài đặt xong, bạn có thể sử dụng tên miền riêng để truy cập website thay cho đường dẫn abc.blogspot.com như trước kia.
Bài viết này chỉ tập trung vào một số nhà cung cấp tên miền nổi tiếng, những nơi khác bạn hãy thực hiện tương tự. Qui trình thông thường gồm 3 bước như sau:
-------------------------------------------------------
-----------------------------------------------------

1: Điều chỉnh lại địa chỉ url của blog

Đầu tiên, bạn cần chỉnh lại đường dẫn blog theo các bước bên dưới:
– Trong trang quản lý blog, bạn nhấn Settings rồi click link + Setup a 3rd party URL for your blog ( thiết lập URL bên thứ 3) để thay đổi địa chỉ URL blog.

– Nhập tên miền muốn sử dụng vào ô Third party domain settings rồi nhấn Save

Ngay lập tức một thông báo màu đỏ sẽ xuất hiện ngay bên dưới, thông báo bạn chưa trỏ tên miền về Blogspot. Kệ nó.
Tuy nhiên, bên dưới nữa bạn sẽ thấy Name, Label, or Host field. Đây là thông tin quan trọng, dùng để cấu hình domain trỏ về Blogspot, bạn cần sử dụng ở bước tiếp theo. Tùy từng domain mà thông tin này sẽ khác nhau nhé.
Duy chỉ có 4 địa chỉ IP sau là cố định để bạn sử dụng trỏ các bản ghi A:
  • 216.239.32.21
  • 216.239.34.21
  • 216.239.36.21
  • 216.239.38.21
xem thêm:

2: Tạo Bản ghi CNAME và Bản ghi A

Mình tổng hợp các nhà cung cấp tên miền vào chung bài viết này cho gọn, bạn hãy lựa chọn nhà cung cấp tên miền mà bạn đang sử dụng nhé.


trỏ tên miền tenten về blog

Trỏ tên miền tenten về Blogsopt

Bây giờ, Bạn cần mở một cửa sổ trình duyệt mới và đăng nhập vào trang quản trị của tên miền bạn đang sở hữu tại: https://domain.tenten.vn , Và thực hiện thêm 02 bản ghi như blogspots hướng dẫn để chứng minh quyền sở hữu tên miền.
Hãy kiên nhẫn, chờ khoảng 2 phút sau đó quay trở lại trang cài đặt tên miền trên blogger. click vào Lựa chọn " Lưu " thêm một lần nữa để kết thúc quá trình thêm tên miền riêng vào blogger.
- Như vậy, quá trình cài đặt đã kết thúc. Hãy kiểm tra bằng cách truy cập blogspot của bạn. Hãy nhớ nhập chính xác tên miền bạn đã gán vào blogger ( trong hướng dẫn này là http://www.tuanla84.info ).
** Một số bạn có thắc mắc làm thế nào để không cần gõ thêm giá trị: www ở phía trước mà vẫn có thể sử dụng được blogger.
TENTEN lại tiếp tục hướng dẫn mở rộng thêm đối với trường hợp này:
- Quay trở lại bước cài đặt các bản ghi tên miền tại https://domain.tenten.vn 
Hãy thiết lập thêm các bản ghi như sau:
- Sau khi thiết lập các bản ghi này thành công. Việc cuối cùng là khai báo với blogger để hoàn tất quá trình cài đặt
  + Trong phần cài đặt cơ bản tại blogger. Chọn "Chỉnh sửa" tên miền bạn cần thay đổi
 Và đánh dấu vào mục " Chuyển hướng < tên miền > ... tới < tên miền > ... 
Lưu lại.
Như vậy, TENTEN đã hướng dẫn chi tiết các bước để có thể thiết lập một tên miền mang dấu ấn riêng của bạn, sử dụng với blogger thay vì tên miền blogger cung cấp miễn phí cho bạn (rất dài và khó nhớ).

trỏ tên miền godaddy về blogspot

Trỏ tên miền GoDaddy về Blogspot

– Truy cập vào http://godaddy.com và đăng nhập
– Trong trang My Account, nhấn nút Manage ở dòng DOMAINS
Bước 2: Thêm các record sau:
1. Sửa CName www trỏ về ghs.google.com và Add Record 55762wr5uosv trỏ về gv-gto3trl472oiy4.dv.googlehosted.com theo như thông tin Google cung cấp. (Bản ghi CNAME lấy ở phần cài đặt >>cơ bản của Blogspot nhé)
2. Xóa bản ghi A hiện tại và thêm vào 4 bản ghi @ với các địa chỉ IP:
  • 216.239.32.21
  • 216.239.34.21
  • 216.239.36.21
  • 216.239.38.21
Mục đích của việc này để tên miền tự redirect từ non-www sang www. Kết quả được như sau:

Cuối cùng là bật giao thức HTTPS và chuyển hướng http://www.domain.com về https://ww.domain.com 



3: Hoàn tất quá trình trỏ tên miền về blogsopt

Đợi một lúc cho tên miền update các bản ghi, thường mất khoảng vài phút. Xong bạn quay lại trang Blogger, nhấn lại nút Save sẽ được accept ngay mà không báo lỗi như trước: 
Để tên miền tự động redirect non-www về www, các bạn cần nhấn nút Edit bên cạnh domain, rồi click chọn Redirect tuanla84.info to www.tuanla84.info rồi Save lại mới được. 
Cuối cùng, bạn hãy thử nghiệm với đường dẫn vừa thiết lập, tuanla84.infovà tuanla84.info xem đã hoạt động chưa nhé.
Chúc các bạn thành công!
----------------------------------------------------->>>>>>

About THEMEPDU

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum rhoncus vehicula tortor, vel cursus elit. Donec nec nisl felis. Pellentesque ultrices sem sit amet eros interdum, id elementum nisi ermentum.Vestibulum rhoncus vehicula tortor, vel cursus elit. Donec nec nisl felis. Pellentesque ultrices sem sit amet eros interdum, id elementum nisi fermentum.




Bài đăng phổ biến