如何将JavaScript添加到Tumblr博客上的每个非索引页面?

如何将JavaScript添加到Tumblr博客上的每个非索引页面?,javascript,tumblr,tumblr-themes,Javascript,Tumblr,Tumblr Themes,我想将JavaScript代码添加到我博客上的每个帖子页面。我有以下内容,但它似乎从来没有出现在任何页面上,更不用说只是永久链接或个人帖子页面。在这里,我尝试了许多不同的方法来删除Posts块或PermalinkPage块,但都没有效果。我做错了什么 <!-- Start JS --> {block:Posts} {block:PermalinkPage} <script type='text/javascript'> __config = {

我想将JavaScript代码添加到我博客上的每个帖子页面。我有以下内容,但它似乎从来没有出现在任何页面上,更不用说只是永久链接或个人帖子页面。在这里,我尝试了许多不同的方法来删除Posts块或PermalinkPage块,但都没有效果。我做错了什么

<!-- Start JS -->
{block:Posts}
    {block:PermalinkPage}
    <script type='text/javascript'>
    __config = {
            {block:Date},date:'{Year}-{MonthNumberWithZero}-{DayOfMonthWithZero} {24HourWithZero}:{Minutes}:{Seconds}'{/block:Date}
            {block:PostSummary},title:{JSPlaintextPostSummary}{/block:PostSummary}
            {block:HasTags},tags:[{block:Tags}'{Tag}', {/block:Tags}],{/block:HasTags}
            ,url:'{URLEncodedPermalink}'
    };
    (function(){
      var s = document.createElement('script');
      s.type = 'text/javascript';
      s.src = document.location.protocol + '//example.com/example.js';
      (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(s);
    })();
    </script>
    {/block:PermalinkPage}
{/block:Posts}
<!-- END JS -->

{block:Posts}
{block:PermalinkPage}
__配置={
{block:Date},Date:{Year}-{MonthNumberWithZero}-{dayofmonwithzero}{24HourWithZero}:{Minutes}:{Seconds}{/block:Date}
{block:PostSummary},标题:{JSPlaintextPostSummary}{/block:PostSummary}
{block:HasTags},标记:[{block:tags}{Tag}',{/block:tags}],{/block:HasTags}
,url:“{URLEncodedPermalink}”
};
(功能(){
var s=document.createElement('script');
s、 类型='text/javascript';
s、 src=document.location.protocol+'//example.com/example.js';
(document.getElementsByTagName('head')[0]| | document.getElementsByTagName('body')[0])。appendChild;
})();
{/block:PermalinkPage}
{/block:Posts}

这就是我如何使用JavaScript/前端解决它的方法

var path = document.location.pathname;
path = path.split("/")[1]; // Should return the primary directory
path = path.toLowerCase(); // This should catch your.tumblr.com/Search and your.tumblr.com/search
if(path === "" || path === "search")){
    console.log('Index or Search page');
}else{
   // Run your function here
}
基本上,如果路径URL为空或等于
search
,则不运行该函数,而是在任何其他情况下运行该函数

然而,正如我提到的,这并不是100%可靠的。因为路径可能是
http://your.tumblr.com/#
函数将失败,因此您可能必须构建更明确的逻辑(对于空字符串,您可以说if
path!==“”

我仍然不知道为什么在每一页上都有这个不是一个好主意。除非用户确实被链接到站点上的页面,并且没有通过索引页面进行路由。除非您的JavaScript代码是海量的,否则它可以从索引页面缓存(但在热链接等情况下,仍然可以从所有其他页面缓存)

编辑

根据下面的评论,我已经在一个测试Tumblr帐户上创建了一个基本示例

代码如下所示:

  var path = document.location.pathname;
  path = path.split("/")[1];
  path = path.toLowerCase();
  if(path === "" || path === "about"){
    $('body').css('background','#F09');
    console.log('Index or about page');
  }else{
    $('body').css('background','#FC0');
    console.log('Other page');
  }
我使用的Tumblr页面如下:

(我认为没有搜索页面,搜索功能是您在模板中插入或激活的块,在每个页面上都可用。)

该函数基本上检查索引页(空主目录)或关于页(如果需要,将其替换为“搜索”或其他页)

控制台日志将在每个页面上输出。如果路径匹配索引或大约,我将主体颜色设置为粉红色,否则每隔一页都将是橙色

(粉红色背景)

(橙色背景)

通过这种逻辑,如果函数满足路径变量的要求,那么应该很容易调整函数以执行代码,如我的第一个示例所示


正如我所提到的,虽然有一个问题。这实际上仍然是索引页,但是对于空目录,我们的测试返回false,即使Tumblr将其映射到主页

我把它塞进了我的沙盒博客,想看看这个问题可能是什么,当我检查JS控制台时,这是一个令人头痛的问题

{block:Date},date:

删除日期之前的逗号,它应该可以工作。如果您还有更多问题,请告诉我。

为什么不将javascript添加到每个页面?它将被缓存,至少因为Javascript应用程序不应该在foo.tumblr.com的主页上启动。它应该在foo.tumblr.com/everypagebutsearchs上启动,看看这个:(刚刚下了一半)。令人困惑的是,Tumblr块indexPage指的是不同类型的索引页。您可以使用tumblr标记定位搜索页面,但是省略代码更复杂。我知道一种使用jquery(我认为可以移植到vanilla js)来解决这个问题的方法,但当然它比在tumblr标签中设置的更黑客,也没有那么健壮)。我正试图弄清楚如何使用Tumblr标签来实现这一点,但到目前为止还没有弄清楚。该页面上的信息没有帮助我取得任何进展。单独使用tumblr标记是不可能的。我不介意从索引页面缓存它。我只是不想在索引或搜索页面上触发JS。在我所说的情况下,用户肯定会链接到各个帖子页面。如果Tumblr标签出现在每个页面上但没有激活,那么它是否有可能?主页上没有Tumblr标签(尽管搜索页面上有一个标签),因为模板通常是整个站点的一段代码。因此,我建议的解决方案将在每个页面上运行,但仅在满足不作为索引或搜索页面的条件时才执行该函数。如果我举个例子会有帮助吗?我无法让你的代码在主页之外的任何其他页面上工作。举个例子会很有帮助。console.log()甚至没有在主页上启动。通过您的更新,我仍然没有看到代码加载到foo.tumblr.com/image/12345页面上。我是不是遗漏了什么?我试着把你的代码放在模板的不同位置,但在/image/$id页面中仍然看不到。啊,对不起,那些页面不在tumblr模板体系结构中。每个人的账户都是一样的,不可定制。您可以访问
foo.tumblr.com/post/12345
foo.tumblr.com/about
(和其他自定义页面)
foo.tumblr.com/taged/sometag
等,但不能访问图像页面,或者归档文件。我尝试将字段配对为只包含url,但仍然不起作用。您是否检查页面并确定脚本标记根本没有插入?JS控制台中的这部分代码有错误吗?因为当我删除日期前的逗号时,它插入了脚本标记。是的,我在一个单独的窗口中打开了浏览器,打开了一个帖子页面,我正在保存我的更改并退出编辑器,以100%确定,但我仍然不确定