跳至正文
Shopify · Google SEO

Shopify 卸载插件后的残留清理:代码、脚本与数据

// / / 光算科技

点掉后台的卸载按钮,解除的只是授权关系,店铺前台和主题文件不会回到装这个应用之前的样子。需要清掉的东西分三处:主题目录里的 Liquid 与脚本文件、模板 JSON 里指向这个应用的区块配置、以及页面上还在加载的第三方脚本。三处的清法不一样,混在一起做最容易删错。

先分清残留物存在哪一层

不把层级分清,搜索就没有关键词。主题 Sections 文档里说明,放在 JSON 模板或 section group 中的 section 可以支持 app block,商家不用改主题代码就能把应用内容插进页面。这类内容存在的位置不是 snippets 目录,而是模板 JSON 文件本身;主题模板文档同时写明,JSON 模板要把 HTML 与 Liquid 放进被引用的 section,数据也直接存在模板里。两条合起来解释了一个常见现象:应用卸载之后,模板里那段配置还在,页面上只剩一个空白占位或一段报错文字。

残留物可能在这些层级:搜索前先知道去哪儿找

搜索前先知道去哪儿找(光算 · 示意图)

第二层是应用写进主题的代码:assets 里的脚本与样式、snippets 里被 {% render %} 调用的片段、layout/theme.liquid 里手工加进去的 <script> 标签。这层跟安装时的改动有关,卸载不会碰它。

第三层不在文件里,而在请求里。有些应用用脚本标签或像素的方式在每个页面注入外部文件,主题文件看着干净,网络面板里还在请求它的域名。

所有删除都在副本主题上做

主题编辑器里复制一份当前主题,改动在副本上完成,逐页确认之后再发布。这不是谨慎,是主题文件没有可以逐行回退的历史:删掉一个还被别处引用的 snippet,页面可能整块空白,而没有副本时你只能凭记忆往回补。

按标识搜索,不要按文件名搜索

应用留下的文件不会叫 app.liquid,它有具体的名字和域名,要搜的是这些标识:

清理顺序:顺序错了要多花一倍时间

顺序错了要多花一倍时间(光算 · 示意图)

搜索目标典型位置找到之后先确认
应用名或它的 handlesections、snippets、assets这个文件是否只被该应用使用
应用文档里给出的脚本域名layout/theme.liquid、snippets域名是否只属于这一个应用
shopify://apps/templates 下的 .json 文件该 section 是否仍在 order 列表里
被注入的 {% render %}sections、layout是否还有别的 section 调用同一片段

搜到之后别急着删。先确认这段代码的调用方只有这一个应用,再确认删掉之后页面结构里没有别的 section 依赖它的输出。不同应用给的域名和标识都不一样,拿不到就在页面上反查请求来源,拿域名回主题里搜,比凭文件名猜快得多。页面上到底加载了哪些第三方域名,可以按第三方脚本审计里的清单法先列全,再决定删哪一个。

清理顺序:先摘引用,再删文件

顺序错了会多花一倍的排查时间。可行的顺序是从引用端往文件端走:先处理模板 JSON 里指向该应用的 section 定义与 order 引用,再去删 snippets 与 assets 里的文件,最后处理 layout 里手写的标签。原因是主题渲染到一个不存在的 section 或文件时,报错信息通常只指向模板,不会告诉你源头在哪;反过来先断了引用,删文件时「确实没有别处调用」这个判断才有依据。删之前把要删的内容复制到一个本地文本文件里留底,回滚时不必翻主题副本。

模板 JSON 里的 app block 要手动摘

应用通过 app block 加进模板的配置大致长这样,字段以你自己的主题文件为准:

{
  "sections": {
    "app_block_ab12": {
      "type": "shopify://apps/your-app-handle/blocks/main/3f9c1e",
      "settings": {}
    }
  },
  "order": ["app_block_ab12", "main"]
}

删除时要同时处理两处:sections 里的定义,和 order 数组里的引用。只删一半,模板就会引用一个不存在的 section,前台表现取决于主题的容错写法,可能是空白,也可能是整段布局错位。改完打开主题编辑器看一遍预览,确认这个模板能正常打开、其余 section 都还在。

卸载和停止加载是两件事

平台会处理它自己管理的部分,应用嵌入被关掉之后对应的注入一般也会停。主题里手写进去的标签不会,它跟着主题走,继续在每个页面加载。Google 的 JavaScript SEO 基础文档里说明,Googlebot 会把返回 200 的页面送进渲染队列,渲染后不可见的内容索引不到,被 robots 挡住的脚本也不会被渲染。判断标准因此不是「页面看起来正常」,而是源码与渲染结果里还有没有旧域名。

检查按三步走:在页面源码里搜域名,在网络面板里按域过滤,最后看控制台有没有指向已删除文件的 404。第三步最常被跳过,而它恰好是判断删干净了没有的直接证据。

样式和字体比脚本更容易被漏掉

清脚本的人多,清样式的少。应用常见的第二种残留是 CSS:它可能写进 assets 里的一个样式文件,也可能只是往 theme.liquid 里加了一条 link 标签,有的还会带一个自定义字体或图标集。判断方法是把应用名和它的域名在 assets 目录里再搜一遍,同时在 theme.liquid 里找指向外部域名的 link 标签与字体声明。删了脚本却留着样式通常不会报错,只会留下一些匹配不到元素的选择器,和一份白白加载的外部字体。

数据要在卸载之前处理

应用认证说明写得很清楚:应用调用后台接口用的是访问令牌,能读到什么由安装时你批准的授权范围决定。这句话反过来读就是,应用手里确实存着店铺数据,范围就是当时你点过同意的那一份。评论与问答、表单提交、邮件订阅、会员积分、序列号记录这些,大多不在店铺自带的订单与客户数据里。

卸载之后还能不能取回,取决于应用方是否提供导出、数据保留多久,这一点没有统一规则,只能查应用方的说明或者直接问客服,不要假设卸载完还找得回来。可执行的做法是:卸载前逐个应用确认有没有需要留存的数据,能导的导成文件存到店铺以外的地方,导完再卸。这件事最好和权限一起做,先按应用权限审计把每个应用实际用到的功能对一遍,用不到的授权撤掉,用不到的应用直接进卸载清单,比一个一个想起来再处理更省事。

结账相关的东西别在这个流程里动

结账流程由平台渲染,主题层能改的范围有限。有些应用会说自己能改结账页,它改的往往是平台允许扩展的那部分设置,而不是主题代码。清理时如果发现某段代码看起来和结账有关,先确认它是主题文件还是平台设置;拿不准就单独列出来核实,不要顺手删,删错位置的后果是买家付不了款。每个应用具体能改哪些设置,以你店铺后台当前可见的界面为准。

回归检查怎么算做完

  1. 在副本主题上按页面类型各过一遍:首页、集合页、产品页、购物车、结账前一步。
  2. 看浏览器控制台与网络面板,确认没有请求指向已删除的文件或旧域名。
  3. 打开主题编辑器预览,确认布局没有因为少了一个 section 而错位。
  4. 发布后用同一设备、同一网络复测一次性能,和改动前对比,把两次原始结果都留档。

验证时如果还看到旧文件,先用无痕窗口或换一台设备复看一遍,排除本地缓存与代理的影响,再判断是不是真没删干净。清理很少能带来肉眼可见的排名变化,把它当作彻底程度的验证更合适。如果你的期待是自然流量本身的变化,那件事的周期按月和季度算,先看SEO 起效周期再决定要不要为一次清理设效果目标,会少很多误判。

清完留一张记录表

清理不是一次性动作,下次换主题或者应用回归时会用到同一张表。四个字段够用,删的时候顺手填:

应用找到的位置处理动作怎么验证过
评论应用templates 下的 JSON、snippets 里的片段删 section 定义与 order 引用、删片段产品页预览正常,源码无旧域名
弹窗营销应用theme.liquid 里的标签、assets 脚本与样式删标签与文件,样式一并清网络面板无请求,控制台无 404
采集与统计应用snippets 与主题里的嵌入设置关嵌入、撤授权源码搜域名无结果

表里的应用类型只是举例,位置一列以你自己搜出来的结果为准。这张表和权限清单放在同一个文档里更省事,撤权时对着看,少一种半清状态:代码删了、授权还在。

什么时候不值得专门清一次

有三种情况可以直接跳过:应用只是停用、随时可能开回来;主题本来就要换代,残留会随新主题一起消失,那就把清理并进改版的验收项里;残留只是一个空占位容器,不发请求也不影响渲染和布局。反过来,如果残留是采集脚本、弹窗、轮播、或者从外部域名加载的阻塞渲染脚本,它会持续影响每个访客和每一次抓取,这类早清远比并进改版划算。

还有两条边界要说清。Shopify 不会替你清理主题代码,也没有哪个按钮能检测残留,能不能清干净取决于你搜得全不全。以及,搜不到又拿不准的段落,宁可注释掉并在代码里写明日期和原因,直接删除却记不住动过什么,下一次排查会花更多时间。顺带一句,清理往往和替换同时发生:决定不再用某个应用时,先看它做的事能不能被原生能力覆盖,再回到清理,这条判断链在原生功能替代应用里写得比较细;如果只是两个应用功能重叠,那属于选型阶段的问题,可以参考应用选择标准重新合并。

清理和成本管理是店铺内部就能完成的活,后者看的是订阅费与实际使用量是否还对得上,见插件成本管理。如果下一步要让海外买家在搜索里找到这些页面,那是另一类工作,光算做的谷歌 SEO与外贸站点建设跟主题清理不冲突,也不依赖任何应用。