Thứ Ba, 24 tháng 4, 2012

Tạo thumb cho bài đăng phổ biến

" Ức chế quá với cái thumb, bé tý xíu thế này, xấu thật... "

Đã bao giờ bạn phải thốt lên như thế này chưa. Định dạng mặc định của ảnh trong Blog  và PopularPosts là 72x72. Nhiều bạn không thích với định dạng này nhưng vẫn phải cố sử dụng như một sự ép buôc. Nhưng nếu dân tình kêu ca nhiều thì chắc Google cũng phải nghĩ đến giải pháp cho một cái biến ảnh ban đầu. Chờ thì hơi sốt ruột.



Mình đã tìm ra một quy luật rất hay muồn chia sẻ cùng các bạn, nếu các bạn để ý link thumb này sẽ có định dạnh như sau.

VD : https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDHEaLi3XrRub-2t3LyHrie-gK3fJFzAdg_b-BgkFXVRXZnqbt_4q2649mXljKDDkM-reua13rVpbsUF51KPXI2culMh_Z0jZJipTK13bGbKJhwd7Xa2kojepcrcp8dpwlKq1kkaWgMj4//s72-c/xem-phim-Giay+thuy+tinh-maphim.net.JPG

Hãy chú ý đến phần mình bôi đỏ, đó chính là định dạng mà Google quy định. Nếu bạn thay thử các con số khác vào số 72 ta sẽ được các hình ảnh tương ứng với kích cỡ đó. Và nó là hình vuông.

Kích thước tối đa là 2000px.

Từ đó mình viết lên một hàm convertThumb có chức năng tương ứng createSummaryAndThumb, sử dụng thì chắc không khó. Áp dụng với cả 2 widget mà Blogspot đã cho. Mình nghĩ ưu điểm của hàm này so với hàm của các Blogger nước ngoài sẽ nhanh và tốt hơn.


Hàm convert :


function converthumb(img,s,w,h,url,tit){
if(Number(s) > 2000){s = 2000;}
img = img.replace(/s72/gi,"s"+s+"");
if(url != "" || tit != ""){
data = '<img alt="'+tit+'" src="'+img+'" width="'+w+'" height="'+h+'"/>';
}else{
data = '<a href="'+url+'" rel="'+tit+'"><img alt="'+tit+'" src="'+img+'" width="'+w+'" height="'+h+'"/></a>';
}
document.write(data);
}


Các biến truyền vào :
- img là link của các biến sau : data:post.thumbnailUrl (Blog), data:post.thumbnail (PopularPosts)
- s : kích thước bạn muốn convert từ 72 sang.
- w : chiều rộng của ảnh được hiển thị.
- h : chiều cao của ảnh được hiển thị.
- url : là link truyền vào data:post.href (PopularPosts), data:post.url (Blog)
- tit : tiêu đề truyền vào data:post.title (cả 2)

Sử dụng

 - Đầu tiên bạn copy và save với định dạng file convert.js sau đó up lên host nào đó.

1. Blog


VD: mình muốn lấy ảnh 800, rộng 300, cao 250


<b:if cond='data:post.thumbnailUrl'>
       <script>
        converthumb("<data:post.thumbnailUrl/>","800","300","250","","<data:post.title/>");
     </script>
<b:else/>
       <img src="http://megafun.vn/dataimages/201203/original/images682717_thienthan3.jpg" width="300" height="250"/> <!-- nếu không có thumb sẽ hiển thị ảnh này -->
</b:if>


2. PopularPosts

Tương tự:


<b:if cond='data:post.thumbnail'>
     <script>
        converthumb("<data:post.thumbnail />","800","300","250","","<data:post.title/>");
     </script>
 <b:else/>
<a  class='poster' expr:rel="data:post.title" expr:href='data:post.href'>
<img expr:alt="data:post.title" border='' height='250px' src='http://megafun.vn/dataimages/201203/original/images682717_thienthan3.jpg' width='300px'/>
      </a>
 </b:if>

Theo yêu cầu của netdohoa.com

Chúc các bạn thành công !

Chủ Nhật, 22 tháng 4, 2012

Tạo lại header cho chuẩn Seo

Như các bạn đã biết BlogSpot giờ không thua kém các người anh em cùng họ. Phần mô tả đã cung cấp đầy đủ đến tận các bài viết con (item).. Nhưng nhiều bạn chưa biết cách vận dụng hết các chức năng đó. Trong phần đầu tiên này mình sẽ giới thiệu về phần "Mô tả", có thể coi đây là tóm tắt nội dung của bài viết, giúp cho các rotbot có thể tìm kiêm dễ dàng.



Đầu tiên, các bạn vào phần  Cài đặt >> Tuỳ chọn tìm kiếm >>


- Bật phần mô tả lên, nội dung mà bạn gõ vào chính là phần mô tả ở trang home.

- Để hiện phần mô tả cho trang con thì làm như thế nào.


- Bạn copy một đoạn trong bài viết và dán vào dây.

Bạn có thể viewsource trang sau để thấy rõ :


Nhưng câu hỏi đặt ra như sau, nhiều khi bạn quên không copy, hay với data 1k bài viết có sẵn của bạn phải làm sao để có 1k mô tả. Bạn phải đi copy cho từng bài :((..Phát ốm luôn. !

Mình sẽ chỉ các bạn các fix sau đây.

Copy và thay thế đoạn code bạn đang có nằm giữa <head> và <b:skin>

<b:include data='blog' name='all-head-content'/>
<!-- title, keyword -->
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<title><data:blog.pageTitle/></title>
<meta content=' nhập các từ khoá của bạn ' name='keywords'/>
<b:else/>
<b:if cond='data:blog.pageType == "item"'>
<title>Thủ thuật <data:blog.pageName/> | 24h online </title>
<b:else/>
<title><data:blog.pageName/> - Teteit </title>
</b:if>
<meta name="keywords" expr:content="data:blog.pageName + &quot; nhập các từ khoá của bạn &quot;" />
</b:if>
<!-- meta -->
<meta name="robots" content="index, follow" />
<meta content="index, follow" name="GOOGLEBOT" />
<meta content="index, follow" name="yahooBOT" />
<meta name="author" content="suzuki_aka"/>
<!-- mota -->
<b:if cond='data:blog.metaDescription == &quot;&quot;'>
<b:if cond='data:blog.url != data:blog.homepageUrl'>
<meta name="description" expr:content="data:blog.pageName + &quot; nhập các mô tả chung, hoặc từ khoá &quot;" />
</b:if>
</b:if>

Các từ khoá màu đỏ là phần bạn sẽ thay. 

= > Cho dù bạn có quên copy thì bạn vẫn có một mô tả, nhưng để có 1 mô tả đẹp thì bạn nên copy một đoạn nhỏ vào mô tả tìm kiếm. Và giờ có 1k bài viết bạn cũng chả lo ngại gì.

Thêm một lưu ý rằng dòng lệnh :

<b:include data='blog' name='all-head-content'/>


rất quan trọng với blogspot, nếu có trót lỡ bỏ thì bạn hay thêm nó vào, nếu không bạn sẽ mất một vài index đấy ;)) . Nó bao gồm cả biến : data:blog.metaDescription (mình hay dùng nó thay cho data:post.snippet).

Bài viết sau chắc mình sẽ giới thiệu một số page 404 độc độc, nghịch nghịch một chút. Giờ cũng muộn rồi nên ngừng gõ ở đây.

Chúc các bạn thành công !

Thứ Năm, 22 tháng 3, 2012

BlogSpot cải thiện tính năng SEO cho blog

Maphim.Net | Xem phim Online, xem phim han, phim 47, tron boBlogger hôm nay đã cập nhật nhiều tính năng SEO mới cho Blogger. Phải tranh thủ xem qua mới rõ hết được, có lẽ giao diện blog cũ sẽ không được nâng cấp thêm. Các bạn hãy vào giao diện Blog mới để thiết kế tuỳ chỉnh. Địa chỉ giao diện mới tại đây.
Một số điểm mới có thể kể ở đây, cụ thể là :

 1. Thẻ mô tả 

   - Tuy đã được hỗ trợ trong phần cài đặt chính nhưng nó vẫn được gom nhóm vào phần tìm kiếm chung cho blog của bạn. Hãy bật nó lên lần nữa nhé.

 2. Lỗi và chuyển hướng

    -  Bạn đã có thể tạo thông báo lỗi bằng các đoạn mã, hay ảnh hiển thị.
    -  Tính năng chuyển hướng mới đã được cải thiện, giờ bạn có thể dùng javascript để tạo thêm các link cho mình. Một các hack tag SEO cho blog, mình sẽ sớm công bố tiện ích này, gộp chung nó vào phần tìm kiếm theo tag, keywords của từ khoá.


Maphim.Net | Xem phim Online, xem phim han, phim 47, tron bo

   -  Mọi người có thể check thử link sau : .. sieuluoi, bạn sẽ nhận được thông báo Rất tiếc, trang bạn đang tìm trong blog này không tồn tại. Nhưng với vài thủ thuật nhỏ ta sẽ biến nó thành một phần của Blog, như một Website hoàn thiện, hay đúng hơn là hoàn thiện.

Maphim.Net | Xem phim Online, xem phim han, phim 47, tron bo

3. Robots.txt và tuỳ chỉnh tìm kiếm của Robots.txt.

  - Với dự án mở của Blogger này ta có thể mở phần /search bị đóng lâu nay của Blogger.

User-agent: * Disallow: /search == > Allow: /search
Allow: /
 -  Chưa biết có thăng thêm index lên Google không nhưng mình tin là có.
-  Tuỳ chỉnh các thẻ meta robots mà không cần mó tay vào code temp blog.


Maphim.Net | Xem phim Online, xem phim han, phim 47, tron bo

Kết chung lại,  blogger đang càng ngày càng thân thiện với người dùng, trong năm tới và kể cả ngay về sau này nó còn tiếp tục miễn phí không thì mình không đoán được. Chỉ biết bay giờ mình yêu BlogSpot, một thứ ngon bổ rẻ.

Thứ Hai, 19 tháng 3, 2012

Share ANCTemp_Tivi & Data 60 Channel

Temp ANCTemp_Tivi này mình tự làm, hôm nay gửi đến mọi người .. Hì.. Template này có 3 tiện ích chính, đó là dùng phím tắt, vì lười thò chân thò tay vào chuột ngày đông, cầm cái bút hay thước kẻ thò ra ngoài chân ấn phím. =))



 Sử dụng temp này nhé:
 
     = > Các bạn tìm đoạn code sau đây : //anc.home , sửa nó thành domain của bạn. Sau đó bạn bỏ dấu // đi nhé.
    = > Widget Home các bạn lấy một bài viết paste vào HTML đó. Tuỳ bạn, thích bài viết nào trong data mình share.
   = > Ấn 1 :  Bật / Tắt đèn . Phím 2 : Phóng lớn / Thu nhỏ .. Phím 3 : Màn ảnh lớn, tương ứng với room max.
 = > Fix lỗi hiện ảnh và logo của tv24.vn với các kênh của SCTV.





< = > Tương lai sẽ làm cho mức độ lười tăng cao hơn, với các phím tắt đa dạng.. Đã là tivi thì phải có Remote chứ. ^^!

Chúc các bạn thành công !

Thứ Sáu, 9 tháng 3, 2012

ANCKeywords - Tự động cập nhập keywords từ người dùng cho site.

Lâu lắm không viết Blog, tại công việc cũng nhiều... Phần vì quá bận, phần vì yêu cầu các bạn riêng rẽ hay không thồng nhất, nên một vài Plugin mình ngừng chia sẻ và phát triển thêm.

Plugin mới này mình cũng mới test thử và hiệu quả cũng rất tốt. Còn về khách quan mà nói, mình không phải một dân chuyên SEM, SEO. Nên kinh nghiệm về SEO và SEM còn hạn chế. Có một pro đã nói plugin này không an toàn với Sanbox của Google, hoặc index từ Google. Do vậy các bạn nên cân nhắc khi sử dụng tool này.



Nói sơ qua về plugin này, nó có thể nói là một công cụ mạnh cho việc tạo và hỗ trợ thêm về từ khoá cho site của bạn. Đôi khi bạn hay phải cập nhật từ khoá hot cho site, nhưng công việc bận rộn, khiến bạn không thể rảnh tay mà cập nhật được. Mình làm tool này mong làm giảm nhẹ việc đó. Tất cả các từ khoá sẽ được cập nhật từ người dùng, các từ khoá tìm kiếm nhiều nhất, hot nhất đều được tự động thêm vào sau mỗi ngày, mỗi giờ, tuỳ vào tuỳ chỉnh của bạn.

Sử dụng như sau:

1. Hãy đăng ký một nick tại đây (có thể coi đây là trang lưu trữ thông tin keywords cho site bạn.)


 2. Đăng nhập vào vào phần chữ đỏ sau để lấy KeyAPI cho site.


Lấy KeyAPI tại đây : các bạn cần phải lấy bao gồm Your secret API key & Your site guid 


3. Sử dụng ANCKeywords để tạo keywords cho site từ KeyAPI lấy được.

Tạo một file js vào cho đoạn mã sau upload lên Google Code.


//Begin code
var aseo = {
tag:"{các từ khoá liên quan đến site bạn, 4 từ, ngăn nhau bởi dấu ,}",num:"",ap:"Tên site hoặc domain",as:'Lời giới thiệu'
}
veo = "{domain},{subdomain}";

function s_write(keysite,keyapi)
{
surl = 'https://api.tynt.com/publisher/v1/keyword/inbound?site_guid='+keysite+'&api_key='+keyapi+'&hours=24&callback=ancseo';
var sr = document.createElement('script');
sr.src = surl;
document.getElementsByTagName('head')[0].appendChild(sr);

sdata = "if(document.location.protocol=='http:'){"
+"var Tynt=Tynt||[];Tynt.push('"+keysite+"');"
+'Tynt.i={"ap":"'+aseo.ap+'","as":"'+aseo.as+'","st":true};'
+"(function(){var s=document.createElement('script');"
+'s.async="async";s.type="text/javascript";'
+"s.src='http://tcr.tynt.com/ti.js';var h=document.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h);})();}";

var srr = document.createElement('script');
srr.innerHTML = sdata;
document.getElementsByTagName('head')[0].appendChild(srr);

}

function ancseo(x){

num_seo = x.data.length;

for(var i=0; i<num_seo; i++){
veo += x.data[i];
}

var meta = document.createElement('meta');
meta.name = 'keywords';
meta.content = veo.replace(/\,[\d]*/gi,",") + aseo.tag;
document.getElementsByTagName('head')[0].appendChild(meta);

aseo.tag = veo + aseo.tag;

}

function diseo(name,content){

var mt = document.createElement('meta');
mt.name = name;
mt.content = content;
document.getElementsByTagName('head')[0].appendChild(mt);
}
//Endcode

Sau khi tạo xong bạn lấy link và chèn vào phần header đoạn code sau.

<script src="//Link file của bạn"></script>
<script>
/*--- Auto SEO Update Keyword ---*/
s_write('{Your site guid}','{Your secret API key}');
</script>

 Số 24 bạn có thể thay thành các số sau: 1, 8, 12, 24. Đây là thời gian  update keywords cho các bạn.

Kết quả từ sau một đêm của mình các bạn có thể xem và cho nhận xét.


Chúc các bạn thành công !

Thứ Năm, 9 tháng 2, 2012

ANCData - Plugin load feed Blogger version 1

Đây là công cụ đặc biệt, có lẽ rất được nhiều người mong đợi. Công cụ này được mình phát triển khi rip blog. Đôi khi bạn thấy các site của pro (HelloXimo) rip chạy rất nhanh và mượt. Tại sao vậy ? Câu hỏi nằm ở function showrecentposts(json) của js mà nhiều blog vẫn đang dùng. Đây là một hàm lọc feed (hay file .xml) của Blogger. Việc sử dụng feed sẽ đem lại tốc độ cao hơn so với dùng biến có sẵn mà mình đã giới thiệu ở một số bài viết trước.





(ViewSource Demo để xem code)

Nhưng đặc điểm bất tiện của hàm này là với mỗi lần callback showrecentposts trong đoạn script ví dụ sau.



<script src="http://www.maphim.net/feeds/posts/default/-/Phim chiếu rạp?max-results=4&amp;orderby=published&amp;alt=json-in-script&amp;callback=showrecentposts ">
</script>



Ta lại phải đổi tên hàm callback để lấy feed cho một tag mới. Nói khác đi, chúng ta lại phải copy y sì một hàm showrecentposts2, showrecentpost3, showrecentposts4 ...v.vv cho các tag mới.

Vậy, ANCData là gì ? Chắc bạn cũng đoán ra từ VD trên. Nó là một plugin load feed. Nhưng nó chỉ là một hàm callback duy nhất : ancdata. Có vẻ với những ai chưa nghe về load feed sẽ rất khó mường tượng. Nhưng bạn chỉ cần sử dụng ANCData sẽ không cần phải vọc nhiều.


* Thuộc tính. 


title : tiêu đề bài viết.
url : link bài viết.
label: nhãn bài viết.
img: ảnh bài viết
       -  img.f : file ảnh đầu tiên của bài viết kich thươc full khổ.
       -  img.i72: file ảnh mặc định của google nếu bạn up lên, hoặc sử dụng các sản phẩm ảnh của       google.
content: nội dung toàn bộ bài viết.
snippet : nội dung tóm tắt gồm 120 ký tự.
date: ngày tháng năm gửi bài
      - date.d : ngày
      - date.m : tháng
      - date.y : năm

author: tác giả gửi bài viết.


* Sử dụng :

B1: Bạn chỉ cần chèn đoạn mã sau vào sau  thẻ <head> hoặc sau <body>

<script src="http://anhnc.googlecode.com/svn/trunk/ANC/data/feed.js"></script> <script>
            anc.home ="domain của bạn"; //  (mặc định là maphim.net)
            anc.post = sô lượng tối đa ;  // (mặc định là 100)
            anc.img.no = "ảnh hiển thị khi bài viết không có ảnh"; // mặc định là ảnh của maphim.net
</script>

B2: Giờ bạn sẽ sử dụng ANCData một cách dễ dàng.


Giả sử mình muốn tạo ra một module có cấu trúc như hình sau.




Mình chỉ cần viết như sau :

<div class="box">
<h3>Phim hành động mới</h3>
<div class="bcontent">
    <script src="http://www.maphim.net/feeds/posts/default/-/Hành động?max-results=4&amp;orderby=published&amp;alt=json-in-script&amp;callback=ancdata">
    </script>
    <script>
       
        for (var i =0; i< anc.max; i++){
            document.write('<li><a href='+anc.url[i]+'>'+anc.title[i]+'</a></li>');
        }
    </script>
</div>
</div>

Không chỉ dừng ở đó, bạn có thể tạo nhiều tag giống nhau ngoài tag Hành động kể trên, chỉ với một hàm callback duy nhất. Đây chỉ là VD đơn giản sử dụng ANCData, bạn có thể tạo riêng cho mình các modum hợp lý từ các thuộc tính mình đã đưa.

Version 1 chưa áp dụng cho comment. Sẽ tiếp tục phát triển trong các phiên bản sau nếu có thời gian.


Note: Để gọi các biến trong thuộc tính, bạn cần thêm trước anc.thuoctinh
          Muốn lấy một tag trong list tag bạn chỉ cần viết. anc.label.split(',')[vitri tag can lay]

Chúc các bạn thành công !

Chủ Nhật, 5 tháng 2, 2012

Đưa Radio vào Blog của bạn (Yêu cầu)

Đáp ứng yêu cầu của giáo xứ phú giáo, trong nhưng ngày đầu năm này có lẽ anh Dũng cũng bận cho việc ... Va lung tung .. Không có thời gian chăm sóc blog được. Còn riêng mình cũng tung hoành khắp nơi, bận ăn, bận uống bù hết cả đầu. Đọc thấy yêu cầu này phù hợp với khả năng, giúp bạn một chút chút. ..

Maphim.Net | Xem phim Online, xem phim han, phim 47, tron bo



Style CSS :

<style>
    .radio{padding-top: 5px; border: 1px dashed #cccccc; width: 430px; position: fixed; bottom: 20px; right: 0px;}
    li{list-style:none;float:left; margin-left: 10px; padding: 5px;}
    li:hover{background-color: #494949; box-shadow: 1px 0px 3px;}
    li:active{box-shadow: 2px 1px 3px;}
   
    li.p{margin-left:30px; color: green; box-shadow: 2px 0px 3px 1px;}
    li.p:hover{background:none;}
    li.p span{text-decoration:blink;}
   
    a{text-decoration:none; color: #888888; font-size: 12px;}
    #player{margin-top:20px;}
</style>

Đài của mình..
Maphim.Net | Xem phim Online, xem phim han, phim 47, tron bo

<div class="channel">
    <li><a href="javascript:radio('vov1')">VOV1</a></li>
    <li><a href="javascript:radio('vov2')">VOV2</a></li>
    <li><a href="javascript:radio('vov3')">VOV3</a></li>
    <li><a href="javascript:radio('vov4')">VOV4</a></li>
    <li><a href="javascript:radio('vov5')">VOV5</a></li>
    <li id="pl" class="p"></li>
</div>
    <div id="player">Radio23h - Blog Radio, chia sẻ xúc cảm cuộc sống</div>
</div>

JavaScript

<script>
function radio(channel){
    var data = '<embed width="430" height="24" flashvars="&amp;file='+channel+'.flv&amp;streamer=rtmp://123.30.50.46:8080/live&amp;skin=&amp;autostart=true" allowfullscreen="true" allowscriptaccess="always" quality="high" name="mpl" id="mpl" style="undefined" src="http://player.longtailvideo.com/player5.9.swf" type="application/x-shockwave-flash">';
   
    document.getElementById("player").innerHTML = data;
    document.getElementById("pl").innerHTML = channel+" playing<span>...</span>";
    }
radio('vov3');   
</script>


radio('vov3') ==> là đài mặc định bạn chạy đầu tiên.

Chúc các bạn thành công !