AMP插件For Typecho

之前心血来潮暴力实现了AMP页面,本来只是自己瞎折腾一下。结果发现还是有不少TX有这个需求,于是利用今天从福州回来车上的时间将AMP页面做成了插件,有需要的TX可以去Github上自取

由于是第一次做Typecho的插件,所以有什么问题请反馈,我好及时修复。

嗯,就这样,平潭的风真的好大……


哦,对了,如果之前已经用过模板暴力修改法的TX(尤其是已经被Google收录了的),请做如下修改:

post.php增加跳转


    <?php if (isset($_GET['amp'])){;
        header('HTTP/1.1 301 Moved Permanently');
        Header("Location: https://holmesian.org/amp/{$this->request->slug}");
        exit();
        ?>
    ...

header.php中删除下列内容

    <?php if ($this->is('post')): ?>
    <link rel="amphtml" href="<?php $this->permalink() ?>?amp=1">
    <?php endif; ?>


相关文章

已有 72 条评论
  1. 孙响

    后台插件设置MIP/AMP推送接口调用地址,只有一个输入框,但是接口地址两个,怎么写

    孙响 回复
    1. Holmesian

      @孙响

      AMP和MIP的地址只差一个type参数不同,随便用哪个都可以。提交的时候程序会自动替换的。

      Holmesian 回复
  2. ith8

    老哥 请教个问题,我提交百度MIP的熊掌校验的时候,一直提示我
    @id值和页面地址 不一致

    pubDate格式不对,正确格式示例:'2017-06-06T08:10:21'

    title内容为空
    <script type="application/ld+json">

    { "@context": "https://ziyuan.baidu.com/contexts/cambrian.jsonld", "@id": "<?php $this->permalink(); ?>", "title": "<?php $this->title(); ?>", "images": [ "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png", "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo_top_ca79a146.png", "https://m.baidu.com/static/index/plus/plus_logo.png" ], "description": "<?php $this->description(); ?>", "pubDate": "<?php $this->date('Y-m-d\TH:i:s'); ?>" }

    </script>

    这是哪里原因 求指导。。。 这一段代码加到了您的插件Action.php文件<!--mip 运行环境--> 里面 求指导哪里错了么。。。看静态文件 输出的
    "pubDate": "",
    "title": "",
    "@id": ""
    都是空的,求老师指导下

    ith8 回复
    1. Holmesian

      @ith8

      你要对相应的参数赋值呀,参考https://github.com/holmesian/Typecho-AMP/blob/master/Action.php文件的第93~104行。

      Holmesian 回复
  3. SunnyLyx

    老哥,貌似通过Google打开的amp首页无法加载任何文章(https://www.google.com/amp/s/example.com/ampindex)
    表现为amp页面文章列表加载动画(转圈或三个点)完毕后,文章列表仍为空白
    包括访问Holmesian Blog的Google ampindex也是如此
    Chrome 63+ & webview 44 均是这种情况(包括PC版Chrome 63改ua访问)
    Chrome Console 有3个无法加载的资源
    望Dalao看一下
    PS:测试不全面,也不排除是代理环境问题

    SunnyLyx 回复
    1. Holmesian

      @SunnyLyx

      感谢反馈,Access-Control-Allow-Origin跨域问题,已经解决,请更新插件。

      Holmesian 回复
  4. 清雨

    再反馈个无伤大雅的小Bug,此插件会把还未发布(定时发布)的文章链接也输出到 Sitemap 里。

    清雨 回复
    1. 清雨

      @清雨

      上面的输出到 Sitemap 的待发布文章链接也都是可以正常访问的,所以比较无所谓。还有一个Bug就是AMP/MIP两种格式的文章链接里指向完整版文章的链接里都带了多余的“#comments”后缀,导致点击后是直接转跳到文章评论区,而不是文章正文处。

      清雨 回复
      1. Holmesian

        @清雨

        已经改好,请更新测试。

        Holmesian 回复
        1. 清雨

          @Holmesian

          嗯,更新完新版本两处的问题确实都解决了。

          清雨 回复
  5. 学习笔记Blog

    博主,你这个AMP/MIP的插件思路非常先进,不知道有没有兴趣移植到 WordPress 呢?当然 WordPress 下可能在样式上复杂一些!

    学习笔记Blog 回复
    1. Holmesian

      @学习笔记Blog

      最近的修改都是在奔波各个工地的路途中做出来的,由于不用WordPress,估计不会花时间去做移植。

      Holmesian 回复
  6. bojone

    你好,启用了插件后,所有的amp文章都显示Delete,不知道是正常的吗?
    比如 kexue.fm/amp/4033

    bojone 回复
    1. Holmesian

      @bojone

      你的文章不是Markdown格式的,我原来的想法是直接不支持非Markdown的内容,因为内联样式会导致直接转换不能得到完全符合规范的页面AMP/MIP页面。

      我尝试不过滤非Markdown的文章,稍后请尝试一下新版本的插件。

      Holmesian 回复
      1. bojone

        @Holmesian

        主要原因是我博客开得早,早期并不是用markdown的,后来转起来也挺麻烦,就不想转了

        bojone 回复
        1. Holmesian

          @bojone

          HTML转Markdown会导致内联样式丢失,而且有很多疑难杂症,需求不大的话确实别折腾了。

          Holmesian 回复
      2. bojone

        @Holmesian

        已经用上新版本,感谢。

        bojone 回复
  7. 姬长信

    https://blog.isoyu.com/archives/20740.html
    https://blog.isoyu.com/amp/20740.html
    会显示Delete
    请问一下这是什么情况

    姬长信 回复
    1. Holmesian

      @姬长信

      简单看了一下,这个文章的别名是不是设置成了数字20740?

      如果是的话,那么这就是我当时偷懒没做匹配的情况了……等我有空完善下吧。

      Holmesian 回复
      1. 姬长信

        @Holmesian

        原因可能是我不是用Markdown语法

        姬长信 回复
        1. Holmesian

          @姬长信

          哦~ 那就对了,本来我一开始就想问的,Readme里面写了我就以为是markdown语法的文章。

          非Markdown的情况太麻烦,目前只支持Markdown语法。

          Holmesian 回复
          1. 姬长信

            @Holmesian

            哈哈,没事。辛苦了

            姬长信
      2. 姬长信

        @Holmesian

        测试仍存在该问题

        姬长信 回复
        1. Holmesian

          @姬长信

          已经更新,请测试。

          Holmesian 回复
        2. Holmesian

          @姬长信

          这个文章的别名是不是数字20740?

          你的自定义文章路径是什么?

          Holmesian 回复
      3. 姬长信

        @Holmesian

        好的,非常感谢

        姬长信 回复
  8. 学习笔记Blog

    博主呀,很久没有更新文章了,催更一下!

    学习笔记Blog 回复
    1. Holmesian

      @学习笔记Blog

      年底比较忙,今天趁着车上的时间把AMP首页做完了。

      Holmesian 回复
      1. 学习笔记Blog

        @Holmesian

        嗯,我刚去GitHub上下载升级了!还加入了熊掌号的支持!赞一个先!

        学习笔记Blog 回复
        1. Holmesian

          @学习笔记Blog

          所有问题已经排除,可以用新版本插件了。

          Holmesian 回复
        2. Holmesian

          @学习笔记Blog

          先别更新,还有小问题没有解决。

          Holmesian 回复
          1. 学习笔记Blog

            @Holmesian

            哦,我用着感觉都很正常呀!

            学习笔记Blog
  9. 清雨

    再谢谢你特地抽空适配了带“.html”这类后缀的伪静态,然后再反馈个问:
    两个sitemap里面的链接确实都带后缀了,并且使用带后缀的地址访问也正常了
    但是在控制台→AMP/MIP自动提交,两个类型的页面执行“提交到百度”,提交的列表还是不带“.html”这类伪静态后缀的
    希望抽空再完善下

    清雨 回复
    1. 清雨

      @清雨

      嗯,还有,你的博客没有赞赏码可以扫么?

      清雨 回复
      1. Holmesian

        @清雨

        自动提交的路径已经完善好。
        没考虑到会有人愿意赞赏,我做的东西能帮到其他人我就很开心了。O(∩_∩)O

        Holmesian 回复
        1. 清雨

          @Holmesian

          嗯,已用上新版插件,3Q~

          清雨 回复
  10. chinakafei

    https://www.ruanjian99.com/amp/qianfangbaiji

    图片拉伸,求博主帮忙!!!

    chinakafei 回复
    1. Holmesian

      @chinakafei

      1、你的图片地址没使用协议,针对这个情况我更新了一下读取尺寸的函数,请更新一下插件; 2、目前插件是按照AMP标准解决图片适应性问题,你的情况是多个amp-img标签落在了同一个p标签里导致的。请编辑文章,在图片与图片之间增加一个空行,受AMP标准限制,不方便在程序里直接帮你加p标签。

      Holmesian 回复
      1. chinakafei

        @Holmesian

        好的,谢谢博主的帮助,我刚刚看到你更新了插件,增加了Helper::addRoute('amp_index', '/ampindex/', 'AMP_Action', 'AMPindex');

        是不是代表首页也支持了?

        chinakafei 回复
        1. Holmesian

          @chinakafei

          还没做完,有空再弄,最近事情比较多。

          Holmesian 回复
          1. chinakafei

            @Holmesian

            感谢,问题解决!!!!非常好的插件!!

            chinakafei
  11. 学习笔记Blog

    网站首页AMP访问的格式应该是啥?

    学习笔记Blog 回复
    1. Holmesian

      @学习笔记Blog

      没有做针对首页的AMP页面,有空我增加一下。

      Holmesian 回复
      1. 学习笔记Blog

        @Holmesian

        谢谢,期待中……!

        学习笔记Blog 回复
  12. Damon胡东东

    博主能否兼容下其他伪静态规则呢,你的伪静态应该是{slug},如果使用了{category}/{cid}.html这种的话怎么搞呢?发现只能amp/600这样访问,如果是amp/test/600.html则不行

    Damon胡东东 回复
    1. Holmesian

      @Damon胡东东

      我更新了一下插件,支持别名{slug}和序号{cid}两种方式的AMP/MIP页面访问。
      所以现在无论使用怎样的Rewrite规则,也不管是否设置文章别名,都可以在标准页面生成可以访问的rel="amphtml"和rel="miphtml"地址。

      由于typecho插件只能在挂载插件时设置路由的限制,自定义amp/mip页面路径的要求可能无法实现。

      Holmesian 回复
      1. 清雨

        @Holmesian

        和这个层主一样的情况,他的意思是网站是带“.html”后缀的伪静态,希望转成AMP/MiP后能继续带“.html”后缀访问。不知能否实现?
        我这边访问amp/{slug}.html和mip/{slug}.html,页面都只提示“Delete”,而访问amp/{slug}和mip/{slug}都是正常的。
        看了一下amp_sitemap和mip_sitemap里面的链接都是不带“.html”后缀的。

        最后谢谢你的插件,确实很方便,期待以后越来越完善。

        清雨 回复
        1. Holmesian

          @清雨

          已经按你的需求完善。现在标准页中关联的amp/mip地址将根据后台设置的自定义文章路风格的最后一项来生成,sitemap中的地址也会更新。

          Holmesian 回复
          1. 清雨

            @Holmesian

            还麻烦你特地更新插件,感谢~

            清雨
      2. Damon胡东东

        @Holmesian

        辛苦啦,对这方面不了解,只会拿来用,O(∩_∩)O哈哈~

        Damon胡东东 回复
  13. Damon胡东东

    不错,博主很给力啊,已经用上了

    Damon胡东东 回复
  14. 个人博客

    感谢分享

    个人博客 回复
  15. null-ecp

    博主在吗 这个是那个AMP的接口地址吗

    null-ecp 回复
    1. Holmesian

      @null-ecp

      是的,就是这个

      Holmesian 回复
      1. null-ecp

        @Holmesian

        谢谢啦

        null-ecp 回复
  16. jason

    不错~ 终于用上AMP了

    jason 回复
  17. Flyer

    感谢分享 已使用

    Flyer 回复
    1. Holmesian

      @Flyer

      能用上就好~ ^_^

      Holmesian 回复
  18. ryoy

    兄弟… 这个博客的主题是什么?

    ryoy 回复
    1. Holmesian

      @ryoy

      https://github.com/siseboy/junichi

      Holmesian 回复
  19. Kay

    谷歌已经收录这一篇了,但是AMP测试不是有效的 AMP 网页呢。AMP 标记缺失或不正确。例如本文的AMP页面:https://search.google.com/test/amp?id=w9hnBj-HMvmhGHSQvjtopg 通过测试的页面:https://search.google.com/test/amp?id=y4F4ZyEJABP98vnPYrSLVg

    Kay 回复
    1. Holmesian

      @Kay

      自动格式化的锅,已经修复了。

      原因是amp-custom amp-boilerplate amp-boilerplate都必须是单行。

      Holmesian 回复
  20. 天使漫步

    您好,typechodev网站已经收录该插件,谢谢您的贡献。

    天使漫步 回复
    1. Holmesian

      @天使漫步

      ^ _ ^

      Holmesian 回复
      1. 天使漫步

        @Holmesian

        见收录网址:https://www.typechodev.com/case/amp-for-typecho.html

        天使漫步 回复
        1. Holmesian

          @天使漫步

          我昨天更新了插件,添加了后台提交的功能。

          Holmesian 回复
  21. asher

    1.1 版的,显示 这个错误:AMP_Action ,不能进入正常的APM页面。请问什么原因呢?

    asher 回复
    1. Holmesian

      @asher

      是启用插件时提示错误还是打开AMP页面时提示?

      你设置-》永久链接-》自定义文章路径用的是什么格式?

      最好给个地址我看一下。

      Holmesian 回复
      1. asher

        @Holmesian

        已经没问题了,AMP的链接要按你提供的方式就好了。谢谢博主。

        asher 回复
  22. 尚寂新

    请教一下页面后面带参数那个方式对seo比较好还是/amp/这种有优势?如果不用插件的话怎么实现/amp/这种格式

    尚寂新 回复
    1. Holmesian

      @尚寂新

      对于Google来说,正常页面和AMP页面已经建立了联系,所以URL采用何种形式差别不大,保持统一即可。

      对于其他搜索引擎来说,各家标准不一样,URL路径用什么格式会有绝对的优势不好说,但是就个人经验而言:个人博客采用URL路径层次比动态参数要好。

      另外对于不支持AMP的搜索引擎来说,正常页面和AMP页面是两个不同的页面,内容雷同,要原网页获得更多权重的话似乎更应当屏蔽不支持AMP的搜索引擎访问AMP页面。

      Holmesian 回复
      1. 尚寂新

        @Holmesian

        那百度收录参数链接效果咋样{但我知道谷歌处理参数链接处理的不错}

        尚寂新 回复
发表新评论