Created
May 8, 2020 05:20
-
-
Save willbuilds/728b2c1bef049c90f4c857ed6abc2ac3 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| {% comment %} | |
| Place at bottom of DOM, before </body> | |
| {% endcomment %} | |
| {% comment %} | |
| Article structured data | |
| https://developers.google.com/search/docs/data-types/articles | |
| {% endcomment %} | |
| {% if template contains 'article' %} | |
| {%- capture article_description -%} | |
| {%- if article.excerpt != blank -%} | |
| {{ article.excerpt | strip_html }} | |
| {%- else -%} | |
| {{ article.content | truncatewords: 100 | strip_html }} | |
| {%- endif -%} | |
| {%- endcapture -%} | |
| <script type="application/ld+json"> | |
| { | |
| "@context": "http://schema.org", | |
| "@type": "BlogPosting", | |
| "mainEntityOfPage": { | |
| "@type": "WebPage", | |
| "@id": "{{ shop.url }}{{ article.url }}" | |
| }, | |
| "headline": {{ article.title | json }}, | |
| {% if article.image %} | |
| "image": { | |
| "@type": "ImageObject", | |
| "url": {{ article.image | img_url: '800x800' | prepend: 'https:' | json }}, | |
| "height": 800, | |
| "width": 800 | |
| }, | |
| {% endif %} | |
| "datePublished": {{ article.published_at | date: '%Y-%m-%dT%H:%M:%S%z' | json}}, | |
| "dateModified": {{ article.published_at | date: '%Y-%m-%dT%H:%M:%S%z' | json}}, | |
| "author": { | |
| "@type": "Person", | |
| "name": {{ article.author | json }} | |
| }, | |
| "publisher": { | |
| "@type": "Organization", | |
| "name": {{ shop.name | json }}, | |
| "logo": { | |
| "@type": "ImageObject", | |
| "url": {{ article.user.image | img_url: '200x200' | prepend: 'https:' | json }} | |
| } | |
| }, | |
| "description": {{ article_description | json }} | |
| } | |
| </script> | |
| {% endif %} | |
| {% comment %} | |
| Breadcrumbs | |
| https://developers.google.com/search/docs/data-types/breadcrumbs | |
| {% endcomment %} | |
| {%- if current_tags -%} | |
| {%- assign tag_names = current_tags | join: ', ' %} | |
| {% comment %}Converting an array to a handle converts it to a string{% endcomment %} | |
| {%- capture tag_handles -%} | |
| {%- for tag in current_tags -%} | |
| {{- tag | handle | append: '|' -}} | |
| {%- endfor -%} | |
| {%- endcapture -%} | |
| {%- endif -%} | |
| {% if collection.url == blank %} | |
| {% assign collection_url = '/collections/all' %} | |
| {% else %} | |
| {% assign collection_url = collection.url %} | |
| {% endif %} | |
| {% if template.name == 'product' | |
| or template.name == 'list-collections' | |
| or template.name == 'collection' | |
| or template.name == 'blog' | |
| or template.name == 'article' | |
| or template.name == 'search' | |
| or template.name == 'cart' | |
| or template.name == 'page' | |
| %} | |
| <script type="application/ld+json"> | |
| { | |
| "@context": "http://schema.org", | |
| "@type": "BreadcrumbList", | |
| "itemListElement": [ | |
| {% case template.name %} | |
| {% when 'product' %} | |
| {% if product.collections.size >= 1 %} | |
| { | |
| "@type": "ListItem", | |
| "position": 1, | |
| "item": { | |
| "@id": "{{ shop.url }}/collections", | |
| "name": {{ 'structured_data.breadcrumbs.collections' | t | json }} | |
| } | |
| }, | |
| { | |
| "@type": "ListItem", | |
| "position": 2, | |
| "item": { | |
| "@id": "{{ shop.url }}/collections/{{ product.collections.first.handle }}", | |
| "name": {{ product.collections.first.title | json }} | |
| } | |
| }, | |
| {% else %} | |
| { | |
| "@type": "ListItem", | |
| "position": 1, | |
| "item": { | |
| "@id": "{{ shop.url }}/products", | |
| "name": {{ 'structured_data.breadcrumbs.products' | t | json }} | |
| } | |
| }, | |
| {% endif %} | |
| { | |
| "@type": "ListItem", | |
| "position": {% if product.collections.size >= 1 %}3{% else %}2{% endif %}, | |
| "item": { | |
| "@id": "{{ shop.url }}{{ product.url | within: collection }}", | |
| "name": {{ product.title | json }} | |
| } | |
| } | |
| {% when 'list-collections' %} | |
| { | |
| "@type": "ListItem", | |
| "position": 1, | |
| "item": { | |
| "@id": "{{ shop.url }}/collections", | |
| "name": {{ 'structured_data.breadcrumbs.collections' | t | json }} | |
| } | |
| } | |
| {% if current_page != 1 %} | |
| , | |
| { | |
| "@type": "ListItem", | |
| "position": 2, | |
| "item": { | |
| "@id": "{{ shop.url }}/collections", | |
| "name": {{ 'structured_data.breadcrumbs.page' | t: page: current_page | json }} | |
| } | |
| } | |
| {% endif %} | |
| {% when 'collection' %} | |
| { | |
| "@type": "ListItem", | |
| "position": 1, | |
| "item": { | |
| "@id": "{{ shop.url }}/collections", | |
| "name": {{ 'structured_data.breadcrumbs.collections' | t | json }} | |
| } | |
| }, | |
| { | |
| "@type": "ListItem", | |
| "position": 2, | |
| "item": { | |
| "@id": "{{ shop.url }}{{ collection_url }}", | |
| "name": {{ collection.title | json }} | |
| } | |
| } | |
| {% if current_tags %} | |
| , | |
| { | |
| "@type": "ListItem", | |
| "position": 3, | |
| "item": { | |
| "@id": "{{ shop.url }}{{ collection_url }}/{{- tag_handles | split: '|' | join: '+' -}}", | |
| "name": {{ 'structured_data.breadcrumbs.tags_html' | t: tags: tag_names | json }} | |
| } | |
| } | |
| {% endif %} | |
| {% if current_page != 1 %} | |
| {% if current_tags %} | |
| {% assign position = 4 %} | |
| {% else %} | |
| {% assign position = 3 %} | |
| {% endif %} | |
| , | |
| { | |
| "@type": "ListItem", | |
| "position": {{ position }}, | |
| "item": { | |
| "@id": "{{ shop.url }}/collections?page={{ current_page }}", | |
| "name": {{ 'structured_data.breadcrumbs.page' | t: page: current_page | json }} | |
| } | |
| } | |
| {% endif %} | |
| {% when 'blog' or 'article' %} | |
| { | |
| "@type": "ListItem", | |
| "position": 1, | |
| "item": { | |
| "@id": "{{ shop.url }}{{ blog.url }}", | |
| "name": {{ blog.title | json }} | |
| } | |
| } | |
| {% if template.name == 'article' %} | |
| , | |
| { | |
| "@type": "ListItem", | |
| "position": 2, | |
| "item": { | |
| "@id": "{{ shop.url }}{{ article.url }}", | |
| "name": {{ article.title | json }} | |
| } | |
| } | |
| {% elsif current_tags %} | |
| , | |
| { | |
| "@type": "ListItem", | |
| "position": 2, | |
| "item": { | |
| "@id": "{{ shop.url }}{{ blog.url }}/tagged/{{- tag_handles | split: '|' | join: '+' -}}", | |
| "name": {{ 'structured_data.breadcrumbs.tags_html' | t: tags: tag_names | json }} | |
| } | |
| } | |
| {% endif %} | |
| {% if current_page != 1 %} | |
| {% if current_tags %} | |
| {% assign position = 3 %} | |
| {%- capture url -%} | |
| {{ shop.url }}{{ blog.url }}/tagged/{{ tag_handles | split: '|' | join: '+' }}?page={{ current_page }} | |
| {%- endcapture -%} | |
| {% else %} | |
| {% assign position = 2 %} | |
| {%- capture url -%} | |
| {{ shop.url }}{{ blog.url }}?page={{ current_page }} | |
| {%- endcapture -%} | |
| {% endif %} | |
| , | |
| { | |
| "@type": "ListItem", | |
| "position": {{ position }}, | |
| "item": { | |
| "@id": "{{ url }}", | |
| "name": {{ 'structured_data.breadcrumbs.page' | t: page: current_page | json }} | |
| } | |
| } | |
| {% endif %} | |
| {% when 'search' %} | |
| { | |
| "@type": "ListItem", | |
| "position": 1, | |
| "item": { | |
| "@id": "{{ shop.url }}/search", | |
| "name": {{ 'structured_data.breadcrumbs.search' | t | json }} | |
| } | |
| } | |
| {% if search.performed %} | |
| { | |
| "@type": "ListItem", | |
| "position": 2, | |
| "item": { | |
| "@id": "{{ shop.url }}/search?q={{ search.terms }}", | |
| "name": {{ search.terms | json }} | |
| } | |
| } | |
| {% if current_page != 1 %} | |
| { | |
| "@type": "ListItem", | |
| "position": 3, | |
| "item": { | |
| "@id": "{{ shop.url }}/search?page={{ current_page }}&q={{ search.terms }}", | |
| "name": {{ 'structured_data.breadcrumbs.page' | t: page: current_page | json }} | |
| } | |
| } | |
| {% endif %} | |
| {% endif %} | |
| {% when 'cart' %} | |
| { | |
| "@type": "ListItem", | |
| "position": 1, | |
| "item": { | |
| "@id": "{{ shop.url }}/cart", | |
| "name": {{ 'structured_data.breadcrumbs.cart' | t | json }} | |
| } | |
| } | |
| {% when 'page' %} | |
| { | |
| "@type": "ListItem", | |
| "position": 1, | |
| "item": { | |
| "@id": "{{ page.url }}", | |
| "name": {{ page.title | json }} | |
| } | |
| } | |
| {% else %} | |
| {% endcase %} | |
| ] | |
| } | |
| </script> | |
| {% endif %} | |
| {% comment %} | |
| Product structured data | |
| https://developers.google.com/search/docs/data-types/products | |
| {% endcomment %} | |
| {% if template contains 'product' %} | |
| {% assign selected_variant = product.selected_or_first_available_variant | default: product.variants.first %} | |
| {% assign product_image = selected_variant.featured_image | default: product.featured_image %} | |
| {%- capture product_name -%} | |
| {{ product.title }} | |
| {%- if selected_variant.title != 'Default Title' and selected_variant.option1 == 'Default Title' -%} | |
| - {{ selected_variant.title }} | |
| {%- endif -%} | |
| {%- endcapture -%} | |
| {%- assign now = 'now' | date: '%Y-%m-%d' | split: '-' -%} | |
| {% capture year_from_now %}{{ now[0] | plus: 1 }}-{{ now[1] }}-{{ now[2] | at_most: 28 }}{% endcapture %} | |
| <script type="application/ld+json"> | |
| { | |
| "@context": "http://schema.org/", | |
| "@type": "Product", | |
| "name": {{ product_name | strip_newlines | json }}, | |
| "image": {{ product_image | img_url: '1024x1024' | prepend: 'https:' | json }}, | |
| {% if product.description != blank %} | |
| "description": {{ product.description | json }}, | |
| {% endif %} | |
| {% if product.vendor %} | |
| "brand": { | |
| "@type": "Thing", | |
| "name": {{ product.vendor | json }} | |
| }, | |
| {% endif %} | |
| {% if selected_variant.sku != blank %} | |
| "sku": {{ selected_variant.sku | json }}, | |
| {% endif %} | |
| {% if selected_variant.barcode != blank %} | |
| "mpn": {{ selected_variant.barcode | json }}, | |
| {% endif %} | |
| "offers": { | |
| "@type": "Offer", | |
| "priceCurrency": {{ cart.currency.iso_code | json }}, | |
| "price": {{ selected_variant.price | divided_by: 100.0 | json }}, | |
| "availability": "http://schema.org/{% if selected_variant.available %}InStock{% else %}OutOfStock{% endif %}", | |
| "url": "{{ shop.url }}{{ selected_variant.url }}", | |
| "seller": { | |
| "@type": "Organization", | |
| "name": {{ shop.name | json }} | |
| }, | |
| "priceValidUntil": {{ year_from_now | json }} | |
| } | |
| } | |
| </script> | |
| {% endif %} | |
| {% comment %} | |
| Store information | |
| https://developers.google.com/search/docs/data-types/sitename | |
| {% endcomment %} | |
| <script type="application/ld+json"> | |
| { | |
| "@context": "http://schema.org", | |
| "@type": "WebSite", | |
| "name": "{{ shop.name }}", | |
| "url": "{{ shop.url }}" | |
| } | |
| </script> | |
| <script type="application/ld+json"> | |
| { | |
| "@type": "Organization", | |
| "@context": "http://schema.org/", | |
| "name": "{{shop.name}}", | |
| "logo": { | |
| "@type": "imageObject", | |
| "url": "https:{{ 'logo.png' | asset_img_url: '300x240' | split: '?' | first }}", | |
| "height": "300px", | |
| "width": "240px" | |
| }, | |
| "url": "{{ shop.url }}" | |
| } | |
| </script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
for collection page?