Công cụ SEOOnpage

Một phần của tài liệu xây dựng công cụ hỗ trợ tối ưu hóa website cho các công cụ tìm kiếm (Trang 67 - 72)

4.3.1. Đặt bài toán

Mục tiêu của việc tối ưu hóa trong trang là từ những thông tin cần thiết có ảnh hưởng đến thứ hạng của website. Công cụ phân tích SEO Onpage dựa vào những thông tin đó đi phân tích sâu hơn, để chỉ ra những yếu tố nào đã thực hiện tốt, yếu tố nào cần bổ sung, và yếu tố nào hủy bỏ. Giúp các webmaster có thể chỉnh sửa website có lợi nhất với các công cụ tìm kiếm. Với mục tiêu này, Công cụ phân tích SEO Onpage đã thực hiện việc chắt lọc những thông tin cần thiết cho các công cụ tìm kiếm, cụ thể như:

+ Thông tin cơ bản gồm: tiêu đề trang, file hình favicon, tập tin robots.txt, tập tin sitemap.xml, bộ đếm Google Analytics, ngôn ngữ lập trình, thông tin đăng ký. + Thẻ Meta gồm: Tiêu đề thẻ meta, thẻ meta description, thẻ meta keyword, thẻ meta robots.

+ Thẻ tiêu đề Heading gồm: Thẻ h1, thẻ h2, thẻ h3. + Thẻ định dạng văn bản gồm: thẻ em, thẻ strong.

+ Thẻ liên kết gồm: thẻ a đầu tiên, liên kết ngoài trang, liên kết ngoài trang không có TITLE, liên kết trong trang, liên kết trong trang không có TITLE.

+ Thẻ hình ảnh gồm: thẻ image, liên kết image không có ALT, liên kết image không có TITLE.

4.3.2. Phƣơng pháp giải quyết

Trong công cụ phân tích trong trang vẫn sử dụng phương thức DOM để xử lý và trích xuất thông tin chính xác, trong phần này code thực hiện khó hơn vì phải tính toán, phân tích, đưa ra lời khuyên để người dùng dựa trên kết quả đó để có hướng khắc phục cho website của mình.

Cách thức hoạt động theo sơ đồ

Hình 68 - Sơ đồ Onpage (Nguồn: tác giả)

Để có được thông tin cụ thể như vậy, công cụ phân tích SEO Onpage dùng các phương thức trong file seoonpage.php. Như đã nói ở trên, chúng ta có 6 phần thông để phân tích, chúng ta đi chi tiết vào từng phần.

Thông tin cơ bản

/**** Title tag *****/

$this->_['titletag'] = $titletag = strip_tags(trim(@$html->find('title', 0)->plaintext)); $this->_['titletag_char'] = @mb_strlen($titletag,'utf-8');

$this->_['titletag_word'] = str_word_count($titletag); if ($this->_['titletag_char']==0)

$this->_['titlesms']='<span class="bad">Bạn cần bổ sung nội dung thẻ title</span>'; elseif($this->_['titletag_char']<=30 || $this->_['titletag_char']>=80)

$this->_['titlesms']='<span class="wanning">Nội dung thẻ title đã ngoài khoảng [30 - 80]</span>';

else $this->_['titlesms']='<span class="good">Bạn đã làm tốt</span>';

Đoạn code này cho ra kết quả thông tin của thẻ title, giải thích một số tham số + Dòng đầu tiên: nội dung của thẻ title lấy từ file HTML

+ Dòng thứ hai: cho biết nội dung thẻ title có mấy ký tự. + Dòng thứ ba: cho biết nội dung thẻ title có mấy chữ . + Năm dòng cuối:

o Nếu thẻ title không có ký tự thì đưa ra lời khuyên “Bạn cần bổ sung nội dung thẻ title”

o Nếu ký tự <30 và >80 thì đưa ra lời khuyên “Nội dung thẻ title đã ngoài khoảng [30-80], ngược lại bạn đã làm tốt.

Thẻ META

/**** Description meta tag *****/

$this->_['metadescription'] = $metadescription = strip_tags(trim(@$html- >find('meta[name="description"]', 0)->content));

$this->_['metadescription_char'] = @mb_strlen($metadescription,'utf-8'); $this->_['metadescription_word'] = str_word_count($metadescription); if ($this->_['metadescription_char']==0)

$this->_['metadescriptionsms']='<span class="bad">Bạn cần bổ sung nội dung thẻ meta description</span>';

elseif($this->_['metadescription_char']<=100 || $this->_['metadescription_char']>=150) $this->_['metadescriptionsms']='<span class="wanning">Nội dung thẻ meta description đã ngoài khoảng [100 - 150]</span>';

else $this->_['metadescriptionsms']='<span class="good">Bạn đã làm tốt</span>'; Đoạn code này cho ra kết quả thông tin của thẻ meta description, giải thích tham số

+ Dòng thứ hai: đếm có mấy ký tự. + Dòng thứ ba: đếm có mấy từ. + Năm dòng cuối:

o Nếu ký tự của thẻ meta description =0 thì đưa ra lời khuyên “Bạn cần bổ sung nội dung thẻ meta description”.

o Nếu ký tự <100 và >150 thì đưa ra lời khuyên “Nội dung thẻ meta description đã ngoài khoảng [100 - 150], ngược lại bạn đã làm tốt”.

Thẻ Heading foreach($arrH1 as $e) { $h1_plaintext=$e->plaintext; if(!empty($h1_plaintext)){ $i++; if($i==1){ $this->_['h1'] = $h1 = strip_tags(trim($h1_plaintext)); $this->_['h1_char'] = @mb_strlen($h1,'utf-8'); $this->_['h1_word'] = str_word_count($h1); if($carrH1==1)

$this->_['h1sms']='<span class="good">Bạn đã làm tốt</span>'; else

$this->_['h1sms']='<span class="wanning">Nên chỉ có 1 thẻ H1 duy nhất trong 1 trang.</span>'; } $str_h1_ok = true; } else { $str_h1_ok = false; }

$h1divshow_hide .= htmlentities($e->outertext,ENT_QUOTES, "UTF-8" ).'<br> <br>'; }

Đoạn code này cho ra kết quả thông tin của thẻ H1, giải thích tham số + Duyệt qua hết các thẻ H1, nếu có thẻ H1 thì tăng biến đếm lên một

Vì là thẻ H1, mình chỉ cần lấy nội dung thẻ H1 đầu tiên, nếu đếm bằng 1, thì lấy nội dung, chiều dài ký tự, chiều dài từ.

Nếu trong mảng H1 lưu, chỉ có 1 H1 thì thông báo “Bạn đã làm tốt” Ngược lại, thông báo “Nên chỉ có 1 thẻ H1 duy nhất trong 1 trang”

Thẻ liên kết <A>

$this->_['inlink'] = $inlink;

$this->_['countinlink'] = $countinlink;

Đếm có bao nhiêu liên kết trong trang, và hiện những liên kết đó. $this->_['in_no_title_link'] =$in_no_title_link;

$this->_['count_in_no_title_link'] =$count_in_no_title_link;

Đếm có bao nhiêu liên kết trong trang không có title, và hiện liên kết đó $this->_['countoutlink'] = $countoutlink;

$this->_['outlink'] = $outlink;

Đếm có bao nhiêu liên kết ngoài trang, và hiện những liên kết đó. $this->_['out_no_title_link'] =$out_no_title_link;

$this->_['count_out_no_title_link'] =$count_out_no_title_link;

Đếm có bao nhiêu liên kết ngoài trang không có title, và hiện liên kết đó.

Thẻ hình ảnh <IMG>

$this->_['cimg']=$carrimg;

$this->_['img_link_all']=$img_link_all; Liệt kê tất cả các thẻ <IMG>

$this->_['img_no_title']=$img_no_title;

$this->_['img_link_no_title']=$img_link_no_title;

Liệt kê tất cả các thẻ <IMG> mà không có thuộc tính title $this->_['img_no_alt']=$img_no_alt;

$this->_['img_link_no_alt']=$img_link_no_alt;

Liệt kê tất cả các thẻ <IMG> mà không có thuộc tính ALT

4.3.3. Kết quả

Thông tin thu được từ công cụ phân tích SEO Onpage cho ra một kết quả khá chính xác trong tính toán. Theo thống kê khi công cụ bắt đầu chạy thì mất khoảng 1 đến 5 giây để xử lý và rút trích thông tin của một URL đã nhập vào. Theo sự trải nghiệm của tác giả thì nhận thấy rằng thời gian xử lý rất nhanh chóng, hơn một số công cụ khác trên internet như http://seotool.vn, thông tin được tập hợp theo từng nhóm để người dùng dễ quan sát, và mỗi thành phần trong nhóm được thể hiện khá đầy đủ, bên cạnh đó những thành phần được sắp xếp theo trật tự và theo hướng thân thiện vì nó khá giống với kết quả của công cụ tìm kiếm Google.

Một phần của tài liệu xây dựng công cụ hỗ trợ tối ưu hóa website cho các công cụ tìm kiếm (Trang 67 - 72)