Thứ Hai, 10 tháng 10, 2011

[ Yêu Cầu ] - Chèn quảng cáo giữa 2 bài viết bất kỳ trên trang chủ

Việc chèn quảng cáo vào blog cũng khá đơn giản, ta chỉ cần xác định vị trí đặt quảng cáo (như trên header, top main, sidebar, hay là bên dưới footer) rồi tạo 1 widget HTML/javascript để dán code quảng cáo vào. Đó là các vị trí đơn giản, tức là chèn giữa các widget, nhưng còn chèn giữa các bài viết thì sao???


Xem DEMO
Lưu ý : DEMO chỉ xem được khi thủ thuật còn tồn tại trên blog test

Như chúng ta đã biết các bài viết hiển thị ở trang chủ hay các trang label, archive đều nằm trong widget Blog1. Các bài viết đều được lặp tuần tự để hiển thị ra trên các trang này. Nếu ta chèn thẳng code quảng cáo vào trong code của widget Blog1 thì các quảng cáo này cũng sẽ được lặp lại tuần tự. Như thế thì có bao nhiêu bài viết hiển thị thì sẽ có bấy nhiêu quảng cáo xuất hiển, và các quảng cáo này đều giống nhau. Và với bài viết này, với 1 chút thủ thuật nhỏ, mình sẽ hướng dẫn cho các bạn cách chèn vào quảng cáo vào giữa 2 bài viết bất kỳ trên trang chủ. Và ở mỗi vị trí này (tức là giữa các bài viết) ta hoàn toàn có thể chèn các quảng cáo khác nhau.


Sau đây là các bước thực hiện:
- Vào Thiết kế --> Chỉnh sửa code HTML --> nhấp chọn mở rộng mẫu tiện ích
- Tìm đoạn code tương tự như bên dưới (lưu ý : có thể mỗi emplate đoạn code bên dưới sẽ dài ngắn khác nhau, nhưng quan trọng ta tìm đúng vị trí của nó và chú ý đến đoạn code highlight)

<div class='blog-posts hfeed'>

<b:include data='top' name='status-message'/>

<data:adStart/>
<b:loop values='data:posts' var='post'>

<b:include data='post' name='post'/>
<b:if cond='data:blog.pageType == "item"'>
<b:include data='post' name='comments'/>

</b:if>
<b:if cond='data:post.includeAd'>
<data:adEnd/>
<data:adCode/>
<data:adStart/>
</b:if>
<b:if cond='data:post.trackLatency'>
<data:post.latencyJs/>
</b:if>

</b:loop>
<data:adEnd/>

</div>

- Sau khi tìm thấy đoạn code như trên, ta thêm đoạn code màu hồng như bên dưới :
<div class='blog-posts hfeed'>

<script type='text/javascript'>
//<![CDATA[
var stt=0;
var ads1='Code của quảng cáo 1';
var ads2='Code của quảng cáo 2';
//]]>
</script>


<b:include data='top' name='status-message'/>

<data:adStart/>
<b:loop values='data:posts' var='post'>

<b:include data='post' name='post'/>
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<b:include data='post' name='comments'/>

</b:if>
<b:if cond='data:post.includeAd'>
<data:adEnd/>
<data:adCode/>
<data:adStart/>
</b:if>
<b:if cond='data:post.trackLatency'>
<data:post.latencyJs/>
</b:if>

<script type='text/javascript'>
stt=stt+1;
if (stt==1) {document.write(ads1);}
if (stt==2) {document.write(ads2);}
</script>


</b:loop>
<data:adEnd/>

</div>

- Với :
+ stt = 1: là vị trí giữa bài viết 1 và 2
+ stt = 2: là vị trí giữa bài viết 2 và 3
+ và thực hiện tương tự ta có các vị trí khác.

- Nếu muốn các quảng cáo chỉ xuất hiển ở trang chủ thì ta thay đoạn code bên dưới :
<script type='text/javascript'>
//<![CDATA[
var stt=0;
var ads1='Code của quảng cáo 1';
var ads2='Code của quảng cáo 2';
//]]>
</script>

bằng :
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<script type='text/javascript'>
//<![CDATA[
var stt=0;
var ads1='Code của quảng cáo 1';
var ads2='Code của quảng cáo 2';
//]]>
</script>
</b:if>

Ảnh minh họa ở trang chủ:

Mở rộng hơn, các bạn có thể tùy chỉnh thêm bằng cách cho hiển thị các quảng cáo khác ở trang label hoặc trang archive.
- ví dụ ở trang archive, ta thay quảng cáo ads1ads2 thành các quảng cáo ads3, ads4
- để thực hiện ta thay đoạn code ở trên thành code bên dưới :
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<script type='text/javascript'>
//<![CDATA[
var stt=0;
var ads1='Code của quảng cáo 1';
var ads2='Code của quảng cáo 2';
//]]>
</script>
</b:if>
<b:if cond='data:blog.pageType == &quot;archive&quot;'>
<script type='text/javascript'>
//<![CDATA[
var stt=0;
var ads1='Code của quảng cáo 3';
var ads2='Code của quảng cáo 4';
//]]>
</script>
</b:if>

Ảnh minh họa ở trang archive:

- Ngoài 2 trang này (trang trang chủarchive) ta có thể hiển thị các quảng cáo ads5ads6 ở các trang còn lại (các trang label và các trang index khác). Để thực hiển thì ta thay đoạn code ở trên bằng đoạn code bên dưới:
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<script type='text/javascript'>
//<![CDATA[
var stt=0;
var ads1='Code của quảng cáo 1';
var ads2='Code của quảng cáo 2';
//]]>
</script>
<b:else/>
<b:if cond='data:blog.pageType == &quot;archive&quot;'>
<script type='text/javascript'>
//<![CDATA[
var stt=0;
var ads1='Code của quảng cáo 3';
var ads2='Code của quảng cáo 4';
//]]>
</script>
<b:else/>
<script type='text/javascript'>
//<![CDATA[
var stt=0;
var ads1='Code của quảng cáo 5';
var ads2='Code của quảng cáo 6';
//]]>
</script>
</b:if>
</b:if>

- Khi thực hiện cách mở rộng tới đây, chúng ta vẫn còn 1 thiếu sót, đó là quảng cáo vẫn có thể sẽ hiển thị ở trang bài viết. nếu vị trí 1 là giữa bài 1 và bài 2 thì quảng cáo sẽ xuất hiện ở trang bài viết. Nếu muốn không cho quảng cáo này hiển thị ở trang bài viết thì các bạn thay đoạn code này :
<script type='text/javascript'>
stt=stt+1;
if (stt==1) {document.write(ads1);}
if (stt==2) {document.write(ads2);}
</script>
thành:
<b:if cond='data:blog.pageType != &quot;item&quot;'>
<script type='text/javascript'>
stt=stt+1;
if (stt==1) {document.write(ads1);}
if (stt==2) {document.write(ads2);}
</script>
</b:if>

Ảnh minh họa ở các trang còn lại, ví dụ trang label:

- Lưu ý : chỉ thay đổi nội dung code của các quảng cáo, còn các biến ads1, ads2 thì phải giữ nguyên, tức là quảng cáo 5 và 6 tên biến vẫn là ads1ads2, chứ không phải là ads5, ads6
- Cuối cùng là save template và kiểm tra kết quả.

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

Đăng nhận xét