為了網站的SEO效果更好,需要對頁面的Meta數據(例如Keyword, Description等)進行設置,我按照一般用Drupal的網站的辦法,加裝了Nodeword模塊,但用起來似乎不太符合我們的要求,對于單個頁面編輯時分别設定這些參數還是不錯的,而我們是需要批量自動設置,并嵌入一些變量。我們在安裝了Nodeword後,隻能批量設置Meta數據中的Keyword,使用可變的分類關鍵字和固定的人工設定關鍵字來組成Keyword,而Description還沒有找到辦法批量設置。
另一個我們發現比較麻煩的事情是安裝了Nodeword後,MySQL數據庫中添加了相應的表,而這些表占用空間極大,每個Node都要新建N條數據庫記錄,這在頁面少的情況下無所謂,但數量多了就有些問題了。例如我們一個Node數量在50萬的網站,就會多出一個有300萬條記錄的表,不僅占用空間,在數據導入、處理、展示的時候肯定都是很消耗資源的。
于是我們決定改用其他辦法,其實也很簡單,就是在頁面中運行一段很短的PHP程序,例如:
<?php //添加Meta數據 drupal_set_html_head( " <meta name='keywords' content='$keyword, $category, AdSense, AdWords, Google,廣告,谷歌,聯盟,賺錢' /> <meta name='description' content='下面是Google為關鍵字“ $keyword ”匹配的廣告及說明,包括“競争程度”、“全球每月搜索量”、“本地每月搜索量”和“估算平均每次點擊費用”等信息。' /> "); ?>
其中$keyword和$category都是變量,這段程序可以放在.tpl.php的模闆文件中,或者contemplate的設置中,如果沒有變量的話,還可以放在block中。
這比安裝那個Nodeword模塊方便多了,還可以實現更多我們需要的功能。我們做好了這個程序後,就可以在MySQL中删除那幾個與Nodeword有關的表。
補充:以上為Drupal 6的寫法,Drupal 7的調用函數寫法有變化,導緻以前的頁面無法顯示,屏幕輸出空白,需要改為:
$keywords = "$keyword, $category, AdSense, AdWords, Google,廣告,谷歌,聯盟,賺錢"; $description = "下面是Google為關鍵字“ $keyword ”匹配的廣告及說明,包括“競争程度”、“全球每月搜索量”、“本地每月搜索量”和“估算平均每次點擊費用”等信息。"; $meta= " <meta name=\"keywords\" content=\"$keywords\" /> <meta name=\"description\" content=\"$description\" /> "; $element = array( '#type' => 'markup', '#markup' => $meta, ); drupal_add_html_head($element, 'meta');
评论