Tumblr: Как скрыть комментарии Disqus на страницах? - PullRequest
6 голосов
/ 04 июня 2011

Насколько я знаю, в Tumblr нет блока {block:Pages}, поэтому все, что мы добавляем к обычным сообщениям, добавляется и на страницы, такие как обмен и, что хуже всего, системы комментариев.

Кто-нибудь знает о взломе, или любой способ удалить / скрыть элементы со страниц?Это сложно, потому что страницы используют блоки {block:Permalink} {block:Text}, поэтому я довольно озадачен.

Недавно я только что обнаружил, как модифицировать CSS с тегами записей, используя только HTML: Tumblr:Как управлять CSS с помощью пост-тегов (ОБНОВЛЕНИЕ: Рабочий метод без JQuery!)

Я подумал, может быть, мы сможем использовать это, идея будет выглядеть примерно так:

{block:Text}
  <div class="post {block:HasTags}pagefix {block:Tags}{Tag}{/...}">
  ...
{/block:Text}

Как это работает, по умолчанию мы скрываем любой элемент, который не хотим показывать на страницах (пример: Disqus), добавляя класс .pagefix между {block:HasTags} в оболочке div, мы можем сказать ему показывать элементы на сообщениях.с тегами, таким образом элементы будут отображаться только на сообщениях, а не на страницах, потому что на страницах нет тегов.

Две проблемы с этим, 1) все сообщения ДОЛЖНЫ быть помечены в порядкечтобы показать любые скрытые элементы и 2) сценарий комментария Disqus должен быть вставлен в каждый тип сообщения, а не один раз перед конечным блоком {/block:Posts}.

Я могу быть простопомещая Disqus в wrong место, или какая-то другая ошибка, дайте мне знать, что вы думаете, я ничего не могу найти об этом в сети нигде.Это так глупо не иметь уникальный блок страницы ...

Ответы [ 3 ]

8 голосов
/ 07 июня 2013

Просто оберните ваш код Disqus в блоке даты.

{block:Date}
    <!-- Disqus code -->
{/block:Date}

Поскольку только записей имеют даты, код Disqus никогда не будет отображаться на странице. Это также решает проблему, описанную выше, когда наличие только одной записи нарушает метод.

3 голосов
/ 15 января 2012

Хитрость заключается в том, чтобы заключить код Disqus в теги {block:PermalinkPagination} следующим образом:

{block:PermalinkPagination}
   ...disqus code...
{/block:PermalinkPagination}

Ваш вопрос является частичным дублированием этого на webapps.stackexhange.com, полное объяснение можно найти здесь .

0 голосов
/ 22 августа 2013

Существует также проблема с кодом disqus, из-за которой, если вы хотите, чтобы на первой странице отображалось количество комментариев, а не поле для комментариев (но на странице Постоянная ссылка отображалось поле комментариев и комментариев, а также количество комментариев). Вы должны сделать следующее:

Добавить #disqus_thread к прямой ссылке на страницу, например, <a href="{Permalink}#disqus_thread"></a>

НЕ переносите код disqus в {block: PermalinkPagination} {/ block: PermalinkPagination}, так как это скроет комментарии с первой страницы. Удалите этот блок, если он существует, и оберните верхнюю часть сценария disqus only в {block: Permalinkpage} {/ block: Permalinkpage} - точный код disqus для Tumblr, приведенный ниже;

            {block:IfDisqusShortname}                    
                {block:Permalinkpage}
                <script type="text/javascript">var disqus_url = "{Permalink}"; var disqus_title ="{block:PostTitle}{PostTitle}{/block:PostTitle}";</script>
                <div id="disqus_thread"></div>
                <script type="text/javascript">
                (function() {
                var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
                dsq.src = 'http://{text:Disqus Shortname}.disqus.com/embed.js';
                (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
                })();
                </script>
                <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript={text:Disqus Shortname}">comments powered by Disqus.</a></noscript>
                {/block:Permalinkpage}


                <!--<a href="http://disqus.com" class="dsq-brlink">{Title}'s comments powered by <span class="logo-disqus">Disqus</span></a>-->
                <script type="text/javascript">
                var disqus_shortname = '{text:Disqus Shortname}';
                (function () {
                var s = document.createElement('script'); s.async = true;
                s.src = 'http://{text:Disqus Shortname}.disqus.com/count.js';
                (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
                }());
                </script>
        {/block:IfDisqusShortname}
        </div>
...