当前位置

Drupal全站实现AMP

James Qi 在 2017年5月4日 - 16:18 提交

  今年3月开始准备尝试Google推荐的AMP,摸索了AMP (Accelerated Mobile Pages) “加速移动网页”中的广告,然后使用Drupal的模块、模板实现Drupal网站生成AMP版本页面,再后来4月份花了不少时间去把很多针对国外访问者的网站添加了AMP版本。

  从这段时间的观察来看amp版本流量从无到有,从刚开始的每天几十增加到目前每天大几千,增长速度有所下降但增长趋势还在延续。昨天Google的人还让我报上两个域名,加入他们内部的amp测试计划,具体是什么内容还不清楚。听说amp project开始在国内架设cdn服务器,以后的发展还是有希望的。

  这些处理的系列网站子域名很多,页面数量巨大,添加AMP版本只使用了现成的Accelerated Mobile Pages (AMP)模块,只有node页面可以有对应的amp版本,而taxonomy/term页面、Views页面、模块中定义的页面都不能使用这个模块来生成对应的amp版本,另外amp版本页面中的链接都是链到正常版本页面而没有链到其它amp版本页面,也不算很好的体验。

  应该是做成全站各个页面都是amp版本、可以通过amp验证,而且站内链接直接链接到amp版本。今天花了一些时间来尝试,基本上把我这个博客网站做成了全面amp,主要修改的地方:

  • amp模块
    • amp.module: 修改amp_is_amp_request中的判断,只要是带有?amp或者&amp查询参数都返回TRUE,以便使用amptheme模板等;
    • amp.module: 修改amp_html_head_alter中多语言时链接有误的地方;
  • amp模板
    • html.tpl.php:如果head中没有canonical就添加返回正常版本的网址、底部一律添加到正常版本的链接;
    • page.tpl.php:定义几个函数:add_amp、remove_style、modify_img,用于修改链接为amp页面、去掉style标签内容、修改img图片代码,将首页链接$front_page改为"$front_page?amp";
    • node.tpl.php:!$view_mode == 'amp'需要改为!($view_mode == 'amp'),再在下面以前判断是否为完整页面if ($page)的地方改为判断是否amp页面if ($view_mode == 'amp');
  • 普通版本模板
    • html.tpl.php:如果head中没有amphtml就添加链接到amp版本的网址、底部一律添加到amp版本的链接;

  经过这一番修改,基本上实现了全站amp化,可以通过amp验证。少量地方(例如分类页翻页中page与amp查询参数顺序等)待仔细完善。

自由标签:

评论

小白,你好!

如果是已经做好了的网站要做AMP的话,我建议是增加一套AMP对应的皮肤来解决,这是最简单、改动最小的办法。

如果您使用的是WordPress或者Drupal等国外CMS,可以找到对应的AMP版本主题皮肤,只要开启使用并做一些简单设置就可以有AMP版本了。

如果您的网站是其它CMS或者自己开发的程序,可以自己对着AMP官方网站的要求来开发一套AMP版本主题皮肤,与以前的系统共存就可以。

一般不建议把以前的网站全部改造成只有AMP版本的或者推翻以前的结构完全重构,那样会影响老用户的感受以及搜索引擎已经收录页面的权重。

James Qi / 祁劲松

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。