Перейти к содержимому


Фотография
- - - - -

Disqus update


Лучший Ответ CB9TOIIIA , 02 November 2015 - 16:21

Всем спасибо :) все работает - теперь в маркете:

http://forum.jbzoo.c...ments-new-code/

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 7

#1 CB9TOIIIA

CB9TOIIIA

Отправлено 28 October 2015 - 07:47

*
Популярное сообщение!

Всем привет! Кто-нибудь использует disqus? у них обновился код, который дает аналитику и много др. плюшек :)

pjWC7Uj.png
 

 

Старый элемент по адресу:

/media/zoo/elements/disqus

Нас интересует:

/media/zoo/elements/disqus/tmpl/disqus.php

У нас имеется код:

<?php
/**
 * @package   com_zoo
 * @author    YOOtheme http://www.yootheme.com
 * @copyright Copyright (C) YOOtheme GmbH
 * @license   http://www.gnu.org/licenses/gpl.html GNU/GPL
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

?>

<?php if ($developer) : ?>
	<script type='text/javascript'>
		var disqus_developer = 1;
	</script>
<?php endif; ?>

<div id="disqus_thread"></div>
<script type="text/javascript" src="http://disqus.com/forums/<?php echo $website; ?>/embed.js"></script>
<noscript><a href="http://<?php echo $website; ?>.disqus.com/?url=ref">View the discussion thread.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>
<script type="text/javascript">
	//<![CDATA[
	(function() {
			var links = document.getElementsByTagName('a');
			var query = '?';
			for (var i = 0; i < links.length; i++) {
				if (links[i].href.indexOf('#disqus_thread') >= 0) {
					query += 'url' + i + '=' + encodeURIComponent(links[i].href) + '&';
				}
			}
			document.write('<script charset="utf-8" type="text/javascript" src="http://disqus.com/forums/<?php echo $website; ?>/get_num_replies.js' + query + '"></'+'script>');
		})();
	//]]>
</script>

Который в свою очередь надо заменить на иной - ссылка на универсальный код

 

Пример:

<div id="disqus_thread"></div>
<script>
    /**
     *  RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
     *  LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables
     */
    /*
    var disqus_config = function () {
        this.page.url = PAGE_URL;  // Replace PAGE_URL with your page's canonical URL variable
        this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
    };
    */
    (function() {  // DON'T EDIT BELOW THIS LINE
        var d = document, s = d.createElement('script');
        
        s.src = '//SUBDOMAIN.disqus.com/embed.js';
        
        s.setAttribute('data-timestamp', +new Date());
        (d.head || d.body).appendChild(s);
    })();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>

Этот код нужно подправить, чтобы работал с ZOO (заменить идентификаторы на переменные). Доки

 

также предлагаю сразу в код встроить: 

<script id="dsq-count-scr" src="//SUBDOMAIN.disqus.com/count.js" async></script>

Тем самым получать комментарии (кол-во)

 

Example:

<span class="disqus-comment-count" data-disqus-url="http://example.com/article1.html">First article</span>

Может сообществом плагин обновим? и в marketplace. Думаю всем полезно будет.


Сообщение отредактировал CB9TOIIIA: 28 October 2015 - 07:47

  • 6

#2 CB9TOIIIA

CB9TOIIIA

Отправлено 28 October 2015 - 08:00

На самом деле тут особо познаний не надо :) 

 

С первого примера видим как формируется subdomain disqus:

<a href="http://<?php echo $website; ?>.disqus.com/?url=ref">View the discussion thread.</a>

Его используем в новом коде:

 s.src = '//SUBDOMAIN.disqus.com/embed.js';

Будет:

 s.src = '//<?php echo $website; ?>.disqus.com/embed.js';

Остается малое:

   var disqus_config = function () {
        this.page.url = PAGE_URL;  // Replace PAGE_URL with your page's canonical URL variable
        this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
    };

Вот тут я пока не понял, как корректно сказать :)


  • 0

#3 CB9TOIIIA

CB9TOIIIA

Отправлено 28 October 2015 - 09:06

Читаем про PAGE_IDENTIFIER и URL:

 

https://help.disqus....rticles/2158629

 

для WP было бы так:

this.page.url = '<?php echo get_permalink(); ?>';
this.page.identifier = '<?php echo dsq_identifier_for_post($post); ?>';

Почитав доки понял главное https://help.disqus....ultiple-pages-:

Example situations known to cause identifier conflict:

  • Setting the same disqus_identifier or disqus_url variable

Поэтому предполагаю: URL - это урл до материала, а ID - видимо ID материала Zoo (могу ошибаться).


Сообщение отредактировал CB9TOIIIA: 28 October 2015 - 09:08

  • 0

#4 CB9TOIIIA

CB9TOIIIA

Отправлено 30 October 2015 - 13:23

up  (fingers)


  • 0

#5 SmetDenis

SmetDenis

Отправлено 02 November 2015 - 15:23

 

Получается что-то вроде этого (если я верно понял задачу).

  var disqus_config = function () {
        this.page.url = "<?php echo JRoute::_($this->app->route->item($this->getItem(), false), true, 2);?>";
        this.page.identifier = "item<?php echo $this->getItem()->id;?>";
    };

  • 1
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#6 CB9TOIIIA

CB9TOIIIA

Отправлено 02 November 2015 - 15:58

 this.page.identifier = "item<?php echo $this->getItem()->id;?>";

тут специально впереди item или просто так?)

 

выводится example:

  this.page.identifier = "item12836";

  • 0

#7 SmetDenis

SmetDenis

Отправлено 02 November 2015 - 16:03

тут специально впереди item или просто так?)

 

На всякий случай, если идентификатор не принимает числа. Например длинные будут считаться строкой.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#8 CB9TOIIIA

CB9TOIIIA

Отправлено 02 November 2015 - 16:21   Лучший Ответ

Всем спасибо :) все работает - теперь в маркете:

http://forum.jbzoo.c...ments-new-code/


  • 1




Click to return to top of page in style!