保哥笔记

如何优化shopify的tag标签url路径

将shopify的tag标签斜杠URL改为连字符URL

如何将shopify的tag标签从包含斜杠的URL形式改为使用连字符的URL形式,比如https://your-domain.com/blogs/news/tagged/tagname改为https://your-domain.com/blogs/news/tagged-tagname。Shopify的博客标签页URL结构通常是平台预设的,直接修改可能存在一定限制,但可以通过一些技术手段尝试实现。

以下是一个基于 JavaScript 的实现思路,它可以在页面加载后动态修改这些链接的显示方式。​​请注意,这种方法主要改变的是页面中链接的视觉呈现和点击行为,而并非真正改变服务器端的路由结构​。搜索引擎可能仍会索引原始的URL结构。

🛠️ 操作思路与步骤

  1. 访问主题代码​:在Shopify后台,进入 ​​​“在线商店” > “模板”​​。找到你当前使用的主题,点击 ​​​“编辑代码”​​。
  2. 创建或编辑JavaScript文件​:在代码编辑器中,找到或创建一个用于存放自定义JavaScript的文件,例如 theme.jscustom.js.js。如果没有,你可以在 assets文件夹下新建一个(例如 tag-url-modify.js.liquid),​​确保文件扩展名包含 .liquid​,这样你才能在其中使用Liquid模板变量。
  3. 添加JavaScript代码​:将以下代码放入你创建或选择的JavaScript文件中。这段代码会寻找所有包含 /tagged/的链接,并将其替换为 /tagged-
// 确保在DOM加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
  // 获取当前博客的handle,用于构建正确的URL
  var blogHandle = '{{ blog.handle }}'; // Liquid变量输出当前博客的句柄
  
  // 找到页面中所有的链接元素
  var allLinks = document.querySelectorAll('a');
  
  // 遍历这些链接
  allLinks.forEach(function(link) {
    var oldHref = link.href;
    
    // 检查链接是否包含博客的tagged路径模式
    // 使用正则表达式进行匹配和替换
    var regex = new RegExp('(/blogs/' + blogHandle + '/tagged/)([^/?]+)', 'i');
    
    if (regex.test(oldHref)) {
      // 替换URL中的/tagged/为/tagged-
      var newHref = oldHref.replace(regex, '$1$2').replace('/tagged/', '/tagged-'); // 先保留第一组,然后替换关键字
      // 更新链接的href属性
      link.setAttribute('href', newHref);
    }
  });
  
  // 可选:如果你也希望在页面中显示的文字链接也看起来是新的格式,可以修改链接文本
  allLinks.forEach(function(link) {
    var linkText = link.textContent;
    if (linkText && linkText.includes('/tagged/')) {
      link.textContent = linkText.replace('/tagged/', '/tagged-');
    }
  });
});

代码简要说明​:

  1. 在主题中引入JS文件​:你需要确保上面的JavaScript代码能被主题加载。通常在 theme.liquid布局文件的 </body>标签结束前,或其他确保脚本加载的地方,添加如下代码来引入你的脚本:

    {{ 'tag-url-modify.js' | asset_url | script_tag }}

    (假设你的文件名为 tag-url-modify.js.liquid,Shopify在引入时会自动处理 .liquid扩展名和 asset_url

  2. 保存并测试​:保存所有修改,然后访问你的博客页面,查看包含标签的链接(例如在博客文章底部或标签云中),检查其 href属性是否已更改为 tagged-的格式。​​请务必在不同页面(如博客主页、单篇文章页、标签列表页)以及不同的标签上进行充分测试​,确保修改正确生效且没有破坏其他功能。

⚠️ 重要操作提醒

💎 总结

通过上述JavaScript方法,你可以在前端​实现博客标签链接显示格式的更改​。但请理解其局限性,并强烈考虑设置301重定向以确保SEO价值和无缝的用户体验。

进行任何代码修改前,​​务必备份你的主题​。如果对技术细节不确定,建议寻求专业的Shopify开发人员的帮助。

将tag标签只指定在固定的blog分类中

在 Shopify 中,​​默认情况下,标签(Tag)是全局的​,同一个标签可以被添加到​不同博客分类(Blog)的文章中​。Shopify 后台并没有直接限制一个标签只能用于某一个特定博客的功能。

不过,你可以通过一些方法来实现“让特定标签只出现在指定博客分类”的效果。下面是一个基于 ​Liquid 代码筛选的思路,你可以根据这个思路修改主题模板文件。

🛠️ 操作思路与步骤

  1. 规划与约定

    首先,你需要做好规划。例如,你决定“tech-news”这个标签只用于“News”这个博客分类下的文章,而“recipe-tips”标签只用于“Cooking”博客的文章。​​这需要你手动遵守这个约定​,在给文章打标签时注意区分。

  2. 修改主题代码(Liquid)​

    接下来,你需要修改显示标签的地方(例如博客文章页面、标签云组件等)的代码,增加​条件判断(IF语句)​​。核心逻辑是:​​只有当某标签被应用在了你指定的博客中,才显示它​。

    例如,假设你希望只在“News”博客中显示“tech-news”标签,可以在主题的 Liquid 模板文件(如 article-template.liquid或博客相关的片段文件)中找到显示标签的循环部分,并添加判断:

    {% for tag in article.tags %}
      {% comment %}检查当前文章是否属于“news”博客,并且标签是“tech-news”{% endcomment %}
      {% if blog.handle == "news" and tag == "tech-news" %}
        <a href="{{ blog.url }}/tagged/{{ tag | handle }}">{{ tag }}</a>
      {% endif %}
    
      {% comment %}或者,你也可以设置一个允许显示在“news”博客中的标签列表{% endcomment %}
      {% assign allowed_tags_in_news = "tech-news, industry-update, event" | split: ", " %}
      {% if blog.handle == "news" and allowed_tags_in_news contains tag %}
        <a href="{{ blog.url }}/tagged/{{ tag | handle }}">{{ tag }}</a>
      {% endif %}
    {% endfor %}
    • blog.handle​ 是博客的唯一标识(比如“news”),你可以在 Shopify 后台的博客设置页面找到它。
    • 你可以根据需要扩展条件逻辑,为不同的博客分类设置不同的允许标签列表。
  3. 创建不同的标签“显示”逻辑

    如果你想在不同的博客分类页面上显示完全独立的标签云,你也可以​为不同的博客创建不同的模板(Template)​​。

    • 在 Shopify 主题代码编辑器中,你可以复制一份 blog.liquid模板,并将其重命名为 blog.[handle].liquid(例如 blog.news.liquid)。
    • 然后在这个新模板中,使用 {% if blog.handle == "news" %}条件来输出完全不同的标签列表或样式,从而实现每个博客都有自己独立的标签集合视觉效果。

💡 注意事项

有没有Shopify应用可以自动限制标签只在特定博客使用?

关于在Shopify中自动限制标签仅在特定博客使用的问题,目前的情况如下:

🚫 应用限制与现状

根据现有的信息,Shopify平台及其应用生态在标签管理上存在一些固有限制:

💡 可行的替代方案与管理建议

虽然没有一键解决方案,但你可以通过以下方法实现近似的管理效果:

  1. 建立人工命名规范

    这是最直接且可靠的方法。为不同博客的标签制定一套前缀或后缀规则。

    • 示例​:如果你的店铺有“新闻”和“教程”两个博客,可以规定:

      • “新闻”博客的标签统一使用前缀 news-,如 news-公司动态, news-行业趋势
      • “教程”博客的标签统一使用前缀 tutorial-,如 tutorial-入门指南, tutorial-高级技巧
    • 优势​:简单易行,能清晰区分标签归属,便于后台搜索和筛选。
  2. 利用Liquid代码进行前端控制

    如果你希望在前端页面上(如博客文章页、侧边栏)只显示与当前博客相关的标签,可以通过编辑主题模板代码(使用Liquid语言)来实现基于条件的标签显示逻辑。例如,你可以编写代码,使得在“新闻”博客的文章页面上,只展示那些带有 news-前缀的标签。

    • 注意​:此方法需要一定的技术知识,修改主题代码前务必备份。它控制的是标签的​显示​,而非在打标签时进行限制。
  3. 关注应用生态更新

    Shopify的应用生态在不断进化。虽然目前可能没有完美匹配的应用,但未来可能会有开发者推出相关工具。可以定期在Shopify App Store搜索“blog tag management”等关键词关注动态。

⚠️ 重要操作提醒