为了网站的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');
评论