2015-01-06 3 views
1

Конечный результат: Я пытаюсь исправить проблему с чтением ссылок Disqus с параметрами URL UTM в виде отдельных страниц с чистого URL.Могу ли я установить disqus_identifier без потери старых комментариев? Динамически?

История событий: Когда Disqus был первоначально установлен на этом сайте на HubSpot, параметры не были заданы иначе, чем на форуме. Когда читатели посещают сообщения в блоге напрямую или через чистый URL без параметров отслеживания, они будут видеть правильную тему комментариев Disqus. Но если они посещают почту с «грязным» URL-адресом с множеством параметров отслеживания, например, одним из отправленных с нашей подпиской по электронной почте, они будут видеть поток комментариев Disqus, связанный с , с конкретным URL-адресом.

Очевидно, мы хотим, чтобы люди, которые посещают эту страницу по электронной почте, могут видеть те же темы комментариев, что и люди, которые посещают наш собственный сайт.

Так я имею в виду решение это использовать xxxxxxxxx часть hs-content-id-xxxxxxxxx класса в <body>, чтобы установить disqus_identifier:

var hsbody = document.body.classList; 
var hsid = hsbody.item(0); 
var disqus_identifier = hsid.replace("hs-content-id-", ""); 

Это вызывает некоторые вопросы и проблемы:

  1. ~~ Можно ли установить идентификатор динамически, таким образом? Или, что более важно, это глупо, чтобы сделать это? ~~ Редактировать: Disqus на самом деле рекомендует динамически устанавливать идентификатор, поэтому я здесь не совсем глуп.
  2. Если я установил это глобально, будут ли старые потоки иметь идентификатор, и это будет мешать существующим комментариям?
  3. Есть ли способ ?
  4. Я просто обдумываю это, пишу это, и я понял, что, возможно, просто использовал каноническую ссылку как disqus_identifier. Мысли?

Ограничения: Я не могу отключить коды отслеживания для писем (хотя это было бы самым простым способом сделать это). У нас нет сайта-разработчика, так что все это живое, поэтому я бы предпочел не делать слишком много догадок (хотя я, очевидно, могу легко вернуться).

ответ

1

Поскольку disqus_identifier установлен на URL-адрес страницы, если он не определен, я просто указываю его на канонический URL страницы. Я не могу проиграть!

var canonical = ""; 
     var links = document.getElementsByTagName("link"); 
      for (var i = 0; i < links.length; i ++) { 
       if (links[i].getAttribute("rel") === "canonical") { 
        canonical = links[i].getAttribute("href"); 
       } 
      } 
     var disqus_identifier = canonical; 

Да, это довольно грубо. Если вы хотите его доработать, пожалуйста, будь моим гостем. Кажется, работает.