From e55a82b96cae8dc466076674b2032aac954c69d3 Mon Sep 17 00:00:00 2001
From: squidfunk <martin.donath@squidfunk.com>
Date: Sun, 11 Feb 2018 19:04:29 +0100
Subject: [PATCH] Added ability to override Disqus integration using metadata

---
 docs/getting-started.md                    |  2 +-
 material/base.html                         |  4 +--
 material/partials/integrations/disqus.html | 35 ++++++++++++--------
 material/partials/toc.html                 |  6 +++-
 src/base.html                              |  4 +--
 src/partials/integrations/disqus.html      | 37 ++++++++++++++--------
 src/partials/toc.html                      |  6 +++-
 7 files changed, 59 insertions(+), 35 deletions(-)

diff --git a/docs/getting-started.md b/docs/getting-started.md
index fcac49eb..13d23a34 100644
--- a/docs/getting-started.md
+++ b/docs/getting-started.md
@@ -580,7 +580,7 @@ in your `mkdocs.yml`:
 
 ``` yaml
 extra:
-  disqus: 'mkdocs-material'
+  disqus: 'your-shortname'
 ```
 
 The comments section is inserted on *every page, except the index page*.
diff --git a/material/base.html b/material/base.html
index a1650e0a..428f38be 100644
--- a/material/base.html
+++ b/material/base.html
@@ -154,8 +154,8 @@
                 {% endblock %}
               {% endblock %}
               {% block disqus %}
-                {% if config.extra.disqus and not page.is_homepage %}
-                  <h2 id="__comments">{{ lang.t("meta.comments") }}</h2>
+                {% if (config.extra.disqus and not page.is_homepage) or
+                      (page and page.meta and page.meta.disqus) %}
                   {% include "partials/integrations/disqus.html" %}
                 {% endif %}
               {% endblock %}
diff --git a/material/partials/integrations/disqus.html b/material/partials/integrations/disqus.html
index 5f003ca4..666ca08c 100644
--- a/material/partials/integrations/disqus.html
+++ b/material/partials/integrations/disqus.html
@@ -1,14 +1,21 @@
-<div id="disqus_thread"></div>
-<script>
-  var disqus_config = function () {
-    this.page.url = "{{ page.canonical_url }}";
-    this.page.identifier =
-      "{{ page.canonical_url | replace(config.site_url, "") }}";
-  };
-  (function() {
-    var d = document, s = d.createElement("script");
-    s.src = "//{{ config.extra.disqus }}.disqus.com/embed.js";
-    s.setAttribute("data-timestamp", +new Date());
-    (d.head || d.body).appendChild(s);
-  })();
-</script>
+{% set disqus = config.extra.disqus %}
+{% if page and page.meta and page.meta.disqus is string %}
+  {% set disqus = page.meta.disqus %}
+{% endif %}
+{% if disqus %}
+  <h2 id="__comments">{{ lang.t("meta.comments") }}</h2>
+  <div id="disqus_thread"></div>
+  <script>
+    var disqus_config = function () {
+      this.page.url = "{{ page.canonical_url }}";
+      this.page.identifier =
+        "{{ page.canonical_url | replace(config.site_url, "") }}";
+    };
+    (function() {
+      var d = document, s = d.createElement("script");
+      s.src = "//{{ disqus }}.disqus.com/embed.js";
+      s.setAttribute("data-timestamp", +new Date());
+      (d.head || d.body).appendChild(s);
+    })();
+  </script>
+{% endif %}
diff --git a/material/partials/toc.html b/material/partials/toc.html
index f268ac0c..482d6798 100644
--- a/material/partials/toc.html
+++ b/material/partials/toc.html
@@ -17,7 +17,11 @@
           </a>
         </li>
       {% endif %}
-      {% if config.extra.disqus and not page.is_homepage %}
+      {% set disqus = config.extra.disqus %}
+      {% if page and page.meta and page.meta.disqus is string %}
+        {% set disqus = page.meta.disqus %}
+      {% endif %}
+      {% if disqus %}
         <li class="md-nav__item">
           <a href="#__comments" title="{{ lang.t('meta.comments') }}" class="md-nav__link md-nav__link--active">
             {{ lang.t("meta.comments") }}
diff --git a/src/base.html b/src/base.html
index 092b6adc..edefba32 100644
--- a/src/base.html
+++ b/src/base.html
@@ -288,8 +288,8 @@
 
               <!-- Disqus integration -->
               {% block disqus %}
-                {% if config.extra.disqus and not page.is_homepage %}
-                  <h2 id="__comments">{{ lang.t("meta.comments") }}</h2>
+                {% if (config.extra.disqus and not page.is_homepage) or
+                      (page and page.meta and page.meta.disqus) %}
                   {% include "partials/integrations/disqus.html" %}
                 {% endif %}
               {% endblock %}
diff --git a/src/partials/integrations/disqus.html b/src/partials/integrations/disqus.html
index f8a458e2..1cdfec83 100644
--- a/src/partials/integrations/disqus.html
+++ b/src/partials/integrations/disqus.html
@@ -20,18 +20,27 @@
   IN THE SOFTWARE.
 -->
 
+<!-- Set from config but allow override -->
+{% set disqus = config.extra.disqus %}
+{% if page and page.meta and page.meta.disqus is string %}
+  {% set disqus = page.meta.disqus %}
+{% endif %}
+
 <!-- Disqus integration -->
-<div id="disqus_thread"></div>
-<script>
-  var disqus_config = function () {
-    this.page.url = "{{ page.canonical_url }}";
-    this.page.identifier =
-      "{{ page.canonical_url | replace(config.site_url, "") }}";
-  };
-  (function() {
-    var d = document, s = d.createElement("script");
-    s.src = "//{{ config.extra.disqus }}.disqus.com/embed.js";
-    s.setAttribute("data-timestamp", +new Date());
-    (d.head || d.body).appendChild(s);
-  })();
-</script>
+{% if disqus %}
+  <h2 id="__comments">{{ lang.t("meta.comments") }}</h2>
+  <div id="disqus_thread"></div>
+  <script>
+    var disqus_config = function () {
+      this.page.url = "{{ page.canonical_url }}";
+      this.page.identifier =
+        "{{ page.canonical_url | replace(config.site_url, "") }}";
+    };
+    (function() {
+      var d = document, s = d.createElement("script");
+      s.src = "//{{ disqus }}.disqus.com/embed.js";
+      s.setAttribute("data-timestamp", +new Date());
+      (d.head || d.body).appendChild(s);
+    })();
+  </script>
+{% endif %}
diff --git a/src/partials/toc.html b/src/partials/toc.html
index 5a37edf1..7265119f 100644
--- a/src/partials/toc.html
+++ b/src/partials/toc.html
@@ -55,7 +55,11 @@
       {% endif %}
 
       <!-- Disqus integration -->
-      {% if config.extra.disqus and not page.is_homepage %}
+      {% set disqus = config.extra.disqus %}
+      {% if page and page.meta and page.meta.disqus is string %}
+        {% set disqus = page.meta.disqus %}
+      {% endif %}
+      {% if disqus %}
         <li class="md-nav__item">
           <a href="#__comments" title="{{ lang.t('meta.comments') }}"
               class="md-nav__link md-nav__link--active">
-- 
GitLab