seo.html 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <!-- begin _includes/seo.html -->
  2. {%- if site.url -%}
  3. {%- assign seo_url = site.url | append: site.baseurl -%}
  4. {%- endif -%}
  5. {%- assign seo_url = seo_url | default: site.github.url -%}
  6. {% assign title_separator = site.title_separator | default: '-' | replace: '|', '&#124;' %}
  7. {%- if page.title -%}
  8. {%- assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: site.title -%}
  9. {%- endif -%}
  10. {%- if seo_title -%}
  11. {%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%}
  12. {%- endif -%}
  13. {% if page.canonical_url %}
  14. {%- assign canonical_url = page.canonical_url %}
  15. {% else %}
  16. {%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %}
  17. {% endif %}
  18. {%- assign seo_description = page.description | default: page.excerpt | default: site.description -%}
  19. {%- if seo_description -%}
  20. {%- assign seo_description = seo_description | markdownify | strip_html | newline_to_br | strip_newlines | replace: '<br />', ' ' | escape_once | strip -%}
  21. {%- endif -%}
  22. {%- assign author = page.author | default: page.authors[0] | default: site.author -%}
  23. {%- assign author = site.data.authors[author] | default: author -%}
  24. {%- if author.twitter -%}
  25. {%- assign author_twitter = author.twitter | replace: "@", "" -%}
  26. {%- endif -%}
  27. {%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image | absolute_url -%}
  28. {%- assign page_large_image = page_large_image | escape -%}
  29. {%- assign page_teaser_image = page.header.teaser | default: site.og_image | absolute_url -%}
  30. {%- assign page_teaser_image = page_teaser_image | escape -%}
  31. {%- assign site_og_image = site.og_image | absolute_url -%}
  32. {%- assign site_og_image = site_og_image | escape -%}
  33. {%- if page.date -%}
  34. {%- assign og_type = "article" -%}
  35. {%- else -%}
  36. {%- assign og_type = "website" -%}
  37. {%- endif -%}
  38. <title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
  39. <meta name="description" content="{{ seo_description }}">
  40. {% if author.name %}
  41. <meta name="author" content="{{ author.name | default: author }}">
  42. {% if og_type == "article" %}
  43. <meta property="article:author" content="{{ author.name | default: author }}">
  44. {% endif %}
  45. {% endif %}
  46. <meta property="og:type" content="{{ og_type }}">
  47. <meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en_US" }}">
  48. <meta property="og:site_name" content="{{ site.title }}">
  49. <meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
  50. <meta property="og:url" content="{{ canonical_url }}">
  51. {% if seo_description %}
  52. <meta property="og:description" content="{{ seo_description }}">
  53. {% endif %}
  54. {% if page_large_image %}
  55. <meta property="og:image" content="{{ page_large_image }}">
  56. {% elsif page_teaser_image %}
  57. <meta property="og:image" content="{{ page_teaser_image }}">
  58. {% endif %}
  59. {% if site.twitter.username %}
  60. <meta name="twitter:site" content="@{{ site.twitter.username | replace: "@", "" }}">
  61. <meta name="twitter:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
  62. <meta name="twitter:description" content="{{ seo_description }}">
  63. <meta name="twitter:url" content="{{ canonical_url }}">
  64. {% if page_large_image %}
  65. <meta name="twitter:card" content="summary_large_image">
  66. <meta name="twitter:image" content="{{ page_large_image }}">
  67. {% else %}
  68. <meta name="twitter:card" content="summary">
  69. {% if page_teaser_image %}
  70. <meta name="twitter:image" content="{{ page_teaser_image }}">
  71. {% endif %}
  72. {% endif %}
  73. {% if author_twitter %}
  74. <meta name="twitter:creator" content="@{{ author_twitter }}">
  75. {% endif %}
  76. {% endif %}
  77. {% if page.date %}
  78. <meta property="article:published_time" content="{{ page.date | date_to_xmlschema }}">
  79. {% endif %}
  80. {% if og_type == "article" and page.last_modified_at %}
  81. <meta property="article:modified_time" content="{{ page.last_modified_at | date_to_xmlschema }}">
  82. {% endif %}
  83. {% if site.facebook %}
  84. {% if site.facebook.publisher %}
  85. <meta property="article:publisher" content="{{ site.facebook.publisher }}">
  86. {% endif %}
  87. {% if site.facebook.app_id %}
  88. <meta property="fb:app_id" content="{{ site.facebook.app_id }}">
  89. {% endif %}
  90. {% endif %}
  91. <link rel="canonical" href="{{ canonical_url }}">
  92. {% if paginator.previous_page %}
  93. <link rel="prev" href="{{ paginator.previous_page_path | absolute_url }}">
  94. {% endif %}
  95. {% if paginator.next_page %}
  96. <link rel="next" href="{{ paginator.next_page_path | absolute_url }}">
  97. {% endif %}
  98. <script type="application/ld+json">
  99. {
  100. "@context": "https://schema.org",
  101. {% if site.social.type == "Organization" %}
  102. "@type": "Organization",
  103. "url": {{ '/' | absolute_url | jsonify }}{% if site.og_image %},
  104. "logo": {{ site_og_image | jsonify }}{% endif %}
  105. {% else %}
  106. "@type": "Person",
  107. "name": {{ site.social.name | default: site.name | jsonify }},
  108. "url": {{ '/' | absolute_url |jsonify }}{% if site.social.links %},
  109. "sameAs": {{ site.social.links | jsonify }}{% endif %}
  110. {% endif %}
  111. }
  112. </script>
  113. {% if site.google_site_verification %}
  114. <meta name="google-site-verification" content="{{ site.google_site_verification }}" />
  115. {% endif %}
  116. {% if site.bing_site_verification %}
  117. <meta name="msvalidate.01" content="{{ site.bing_site_verification }}">
  118. {% endif %}
  119. {% if site.alexa_site_verification %}
  120. <meta name="alexaVerifyID" content="{{ site.alexa_site_verification }}">
  121. {% endif %}
  122. {% if site.yandex_site_verification %}
  123. <meta name="yandex-verification" content="{{ site.yandex_site_verification }}">
  124. {% endif %}
  125. {% if site.naver_site_verification %}
  126. <meta name="naver-site-verification" content="{{ site.naver_site_verification }}">
  127. {% endif %}
  128. <!-- end _includes/seo.html -->