当前位置

使用drupal_goto_alter来替换百度MIP表单Post提交后跳转网址

James Qi 在 2017年9月19日 - 16:20 提交

  百度MIP我们也使用有一段时间了,现在开始有一点收录和流量,以前遗留的一些技术问题也需要去解决,包括表单Post方式提交后跳转网址不对的问题。

  前面记录了一篇《AMP表单Post方式提交后不能跳转的问题及解决办法》,Drupal中的搜索功能以前用AMP一样的办法:改表单为Get提交方式来实现Drupal中的正确跳转,对于联系我们、页面留言都还没有太关注,刚才看是可以跳转的,只是没有跳转到对应的mip页面,而是跳转到对应的web页面。

  AMP解决后,我去查了百度MIP官方网站中关于mip-form的文档,写得非常简单,没有说到需要改Header中用专用语句来实现跳转,网上也没有相关其它资料,那么我只需要修改跳转到的语句是对应的mip页面就可以了。

  用Drupal中自定义模块的钩子函数hook_drupal_goto_alter可以实现,代码如下:

function jamesqi_drupal_goto_alter(&$path, &$options, &$http_response_code) {
  $options['absolute'] = TRUE;
  global $theme;
  if ($theme == 'ampsubtheme_example') {
    $server_name = $_SERVER['SERVER_NAME'];
    $options['query'] = array('amp'=>'');
    $url = url($path, $options);
    header("AMP-Access-Control-Allow-Source-Origin: https://$server_name");
    header("AMP-Redirect-To: $url");
    header("Access-Control-Expose-Headers: AMP-Redirect-To, AMP-Access-Control-Allow-Source-Origin,Access-Control-Allow-Origin");
    echo json_encode(array("AMP-Redirect-To: $url"));
    die();
  } elseif ($theme == 'mipsubtheme_example') {
    $options['query'] = array('mip'=>'');//添加查询参数mip
  }
}

  这个已经在我的博客中修改可用了,后面再推广到其它系列网站。


  2017年10月31日补充:

  如果开启了Honeypot并且默认启用了一个陷阱url的表单项(来引诱填表机器人填写以鉴别和屏蔽垃圾信息),在Web版本上看不到这个,但在amp版本中会看到标题为Leave this field blank的输入框,需要修改css来不显示,具体是../sites/all/themes/miptheme/mipsubtheme_example/css/mip-custom-styles.css中添加:

.url-textfield {
  display:none;
​}

  另外,这个还没有完全成功,待排查......