为Shopify的Blog页面添加面包屑导航和配套的面包屑结构化数据

Shopify有很多主题不支持多级Blog导航,如何为你的Shopify改造成以下的面包屑导航:

Blog首页:全站页首 > 博客首页
Blog分类页:全站页首 > 博客首页 > 博客分类页
Blog文章页:全站页首 > 博客首页 > 博客分类页 > 博客文章页

下面保哥为你讲解具体的操作方案和步骤:

创建Blog首页

先创建一个Blog分类,URL为/blog/all,作为Blog首页

  • 进入Shopify后台,找到内容 —— 博客文章 —— 管理博客 —— 添加博客
  • 标题可以取名为Blog,或者Blog Center
  • 搜索引擎列表中的URL名称,使用all

shopify-blog.png

为Blog首页创建模板

为这个Blog分类创建一个模板,并将/blog/all页面的模板样式绑定这个Blog模板,将所有分类及分类下的6篇文章进行调用

编辑breadcrumb.liquid代码

将以下代码替换原来的breadcrumb.liquid代码

{% assign _breadcrumb_mobile = settings.breadcrumb_mobile %}
{% assign _breadcrumb_styles = settings.breadcrumb_styles %}

{% if template contains 'customers' or template == 'page' %}
  {% capture _breadcrumb_image %} {{ 'breadcrumb_bg.jpg' | asset_url }} {% endcapture %}
{% else %}
  {% capture _breadcrumb_image %} {{ sectionhttps://www.holkieusa.com.settings.breadcrumb_image | img_url: '1920x' }} {% endcapture %}
  {% if section.settings.breadcrumb_image == blank %}{% capture _breadcrumb_image %} {{ 'breadcrumb_bg.jpg' | asset_url }} {% endcapture %}{% endif %}
{% endif %}

<div class="wrap-breadcrumb bw-{{ _breadcrumb_styles }} {% unless _breadcrumb_mobile %} d-none d-md-block{% endunless %}"{% if _breadcrumb_styles == 'image' %} style="background-image: url({{_breadcrumb_image }});"{% endif %}>
  <div id="breadcrumb" class="breadcrumb-holder container">
        <ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList">
          <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
            <a itemprop="item" href="/">
              <span itemprop="name" class="d-none">Home</span>{{ 'general.text.home' | t }}
              <meta itemprop="position" content="1" /> 
            </a>
          </li>
          {% if template contains 'product' or template contains 'collection' %}
            {% comment %} Get breadcrumb path from metafields {% endcomment %}
            {% assign breadcrumb_path = nil %}
            {% if template contains 'product' %}
              {% assign breadcrumb_path = product.metafields.custom.breadcrumb_path.value %}
            {% elsif template contains 'collection' %}
              {% assign breadcrumb_path = collection.metafields.custom.breadcrumb_path.value %}
            {% endif %}
            {% if breadcrumb_path %}
              {% assign position_counter = 2 %}
              {% for crumb in breadcrumb_path %}
                {% assign crumb_url = '/collections/' | append: crumb.handle %}
                <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="d-none">
                  <a href="{{ crumb_url }}" itemprop="item">
                    <span itemprop="name">{{ crumb.name }}</span>
                    <meta itemprop="position" content="{{ position_counter }}" />
                  </a>
                </li>
                <li>{{ crumb.name | link_to: crumb_url }}</li>
                {% assign position_counter = position_counter | plus: 1 %}
              {% endfor %}
            {% endif %}
          {% endif %}
          {% if template contains 'product' %}
            {% comment %} Set product position based on path existence {% endcomment %}
            {% assign product_position = position_counter | default: 2 %}
            <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="d-none">
              <a href="{{product.url}}" itemprop="item">
                <span itemprop="name">{{ product.title }}</span>
                <meta itemprop="position" content="{{ product_position }}" />
              </a>
            </li>
            <li class="active">{{ product.title }}</li>
          {% elsif template contains 'collection' %}
            {% if current_tags %}
              {% comment %} Tag filtering - show tag as last item {% endcomment %}
              <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="d-none">
                <a href="{{collection.url}}" itemprop="item">
                  <span itemprop="name">{{ collection.title }}</span>
                  <meta itemprop="position" content="{{ position_counter }}" />
                </a>
              </li>
              <li>{{ collection.title | link_to: collection.url }}</li>
              
              {% assign tag_position = position_counter | plus: 1 | default: 3 %}
              <li itemprop="itemListElement" itemscopehttps://www.holkieusa.com itemtype="http://schema.org/ListItem" class="d-none">
                <a href="{{collection.url}}/{{ current_tags.first }}" itemprop="item">
                  <span itemprop="name">{{ current_tags.first }}</span>
                  <meta itemprop="position" content="{{ tag_position }}" />
                </a>
              </li>
              <https://www.holkieusa.comli class="active">{{ current_tags.first }}</li>
            {% else %}
              {% comment %} Default collection view {% endcomment %}
              {% if breadcrumb_path == blank %}
                <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="d-none">
                  <a href="{{collection.url}}" itemprop="item">
                    <span itemprop="name">{{ collection.title }}</span>
                    <meta itemprop="position" content="{{ position_counter | default: 2 }}" />
                  </a>
                </li>
              {% endif %}
              <li class="active">{{ collection.title }}</li>
            {% endif %}

          {% comment %} show all {% endcomment %}
          {% elsif template == 'blog' %}
            {% if blog.handle == 'all' or request.path == '/blogs/all' %}
            {% comment %} blog all - 特殊处理当前位置 {% endcomment %}
               <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="active">
                 <a itemprop="item" href="{{ canonical_url }}">
                   <span itemprop="name">All Blog</span>
                   <meta itemprop="position" content="2" />
                 </a>
               </li>
            {% else %}
            {% comment %} blog collections {% endcomment %}
             <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="d-none">
                <a itemprop="item" href="/blogs/all">
                      <span itemprop="name">All Blog</span>
                      <meta itemprop="position" content="2" />
                </a>
               </li>
               <li>{{ 'All Blog' | link_to: "/blogs/all" }}</li>
                <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="d-none">
                  <a itemprop="item" href="{{ blog.url }}">
                     <span itemprop="name">{{ blog.title }}</span>
                     <meta itemprop="position" content="3" />
                  </a>
                </li>
                 <li class="active">{{ blog.title }}</li>
                 {% endif %}
          {% elsif template == 'article' %}
               <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="d-none">
                <a itemprop="item" href="/blogs/all">
                      <span itemprop="name">All Blog</span>
                      <meta itemprop="position" content="2" />
                </a>
               </li>
               <li>{{ 'All Blog' | link_to: "/blogs/all" }}</li>
            {% comment %} blog collections {% endcomment %}
                <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="d-none">
                  <a itemprop="item" href="{{ blog.url }}">
                     <span itemprop="name">{{ blog.title }}</span>
                     <meta itemprop="position" content="3" />
                  </a>
                </li>
                     <li>{{ blog.title | link_to: blog.url }}</li>
            {% comment %} blog article {% endcomment %}
                <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="d-none">
                  <a itemprop="item" href="{{ article.url }}">
                     <span itemprop="name">{{ article.title }}</span>
                     <meta itemprop="position" content="4" />
                  </a>
                </li>
                <li class="active">{{ article.title }}</li>
            {% else %}
                <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="active">
          <a itemprop="item" href="{{ canonical_url }}">
            <span itemprop="name">{{ page_title }}</span>
            <meta itemprop="position" content="2" />
          </a>
        </li>
            {% endif %}
        </ul>
  </div>
</div>

保存即可。

设置301跳转

将系统的/blog这个打开404状态的页面设置跳转到/blogs/all

内容 —— 菜单 —— 创建URL重定向

shopify-url-301.png

将/blog跳转到/blogs/all

TAG
相关文章
本文标题:《为Shopify的Blog页面添加面包屑导航和配套的面包屑结构化数据》
本文链接:https://zhangwenbao.com/shopify-blog-breadcrumb.html
版权声明:本文原创,转载请注明出处和链接。许可协议:CC BY-NC-SA 4.0
发表新评论