#javascript #tumblr
#javascript #tumblr
Вопрос:
JS total noob здесь.
Я пытаюсь применить этот код внутри файла темы tumblr, но он применяется только к самому последнему сообщению в основной ленте. Это делается для отображения количества комментариев для disqus, но с использованием {sourcelurl}
{block:ContentSource}
<a href="{permalink}" id="disqus-comment-count">0</a>Comments
<script>
let sourceurl = '{sourceurl}'
var disqusVar = sourceurl.replace("https://href.li/?","") '#disqus_thread';
$("#disqus-comment-count").attr("data-disqus-url", disqusVar);
</script>
{/block:ContentSource}
Для тех, кому интересно, скрипт должен быть заключен в {block:ContentSource}{/block:ContentSource} для работы переменной {sourceurl} .
Есть идеи, почему это может быть?
Комментарии:
1. Из этого примера сложно определить, можете ли вы создать jsfiddle или аналогичный и / или ссылку на свой блог. Я полагаю, вы хотите повторить этот блок под каждым сообщением? В этом случае
$("#disqus-comment-count")
он должен быть уникальным, поскольку он использует идентификатор. Будет способ ссылаться на каждое количество сообщений, используя.closest()
или что-то подобное. Если вы выводите это под каждым сообщением, что'{sourceurl}'
оценивается? Отличается ли это для каждого сообщения?2. @lharby Спасибо за ваш ответ. Ссылка на пример блога. предполагается, что link {sourceurl} выводит ссылку в поле источника содержимого сообщения Tumblr при создании сообщения, которое связывает его с URL-адресом потока Disqus. Так что да, вы правы, это отличается для каждого сообщения. Количество комментариев, похоже, работает внутри самого сообщения, но не на главной странице ленты, где оно применяется только к первому сообщению.
3. Да, здесь есть пара проблем: вы объявляете
sourceurl
с помощью let , который работает на первой итерации, но позже вы пытаетесь сбросить let (обычно вы это делаетеlet sourceurl = someVar
, а затем позжеsourceurl = anotherVar
(без let). Другая проблема заключается в том, что#disqus-comment-count
это идентификатор, поэтому jQuery будет ожидать его только один раз в dom. Есть способ перебирать идентификаторы, используя .attr() однако было бы лучше, если бы вы могли изменить disqus href на classname . Если вы можете поместить всю тему tumblr в pastebin, я мог бы попробовать. Смотрите: imgur.com/a/nRJcqyg4. @lharby Ах, теперь, когда вы указали на это, дублирующийся var и уникальный идентификатор имеют смысл. Итак, теоретически, для ленты (не внутри сообщения) потребуется другой цикл? В настоящее время внутри post работает нормально. Вот весь HTML-код tumblr. [ссылка] ( pastebin.com/SQ8s5pxV )
5. @lharby Другим аспектом может быть добавление data-disqus-url в href, похоже, работает до вывода уникального sourceurl для каждого сообщения.
<a href="{permalink}" id="disqus-comment-count" data-disqus-url="{sourceurl}">0</a>
Но все еще должен быть JS (цикл?) Для удаления href.li в URL-адресе (что характерно для tumblr). Для этого и нужен .replace . Еще раз спасибо за помощь.