【问题标题】:How To Detect If On A Single Post / Page on Tumblr?如何检测是否在 Tumblr 上的单个帖子/页面上?
【发布时间】:2012-02-07 16:21:59
【问题描述】:

我还没有找到一种方法来检测用户当前是否正在查看页面、帖子或整个文章列表。 WordPress 有 is_page、is_single 等功能,但是有没有人有办法使用 Tumblr?我目前正在使用以下代码对其进行破解:

$(function() {
    var uri_root = 'http://' + window.location.hostname + '/';
    var uri = window.location.href;
    if(uri_root !== uri){
        alert("Viewing a single POST or PAGE!");
    }
});

我想知道这是否是最好的方法还是有替代方法?

【问题讨论】:

    标签: javascript jquery tumblr


    【解决方案1】:

    我找到了更合适的解决方案。根据 Tumblr 的文档:

    {block:IndexPage} {/block:IndexPage} 在索引(帖子)页面上呈现。

    {block:PermalinkPage} {/block:PermalinkPage} 在帖子永久链接页面上呈现。

    所以基本上,包装在 IndexPage 块中的代码将只在可以显示多于一篇文章的页面上运行,无论是文本、照片、视频等文章。

    ...包装在 PermalinkPage 中的代码将只针对单个帖子永久链接页面运行。

    【讨论】:

    • 我试试这个解决方案效果很好,谢谢老兄+1的回答!
    • 这个方案确实比JS方案好很多。
    • 检测Ask页面怎么样?有这方面的障碍吗?我在我的页面上嵌入了一个询问框 iframe,但我只想在用户导航到询问页面时显示它。目前它显示在询问和永久链接页面上。
    • @Owzzz 这些静态页面没有,但是{block:Date}{/block:Date} 仅显示单个帖子页面的内容,这意味着您可以在两者之间进行半排序。至于将询问框嵌入询问页面,这是不必要的,因为 tumblr 已经为您生成了带有询问框的询问页面。
    【解决方案2】:

    每个帖子都有一个班级帖子的 div。因此,请计算具有 post 类的 div 的数量。

    类似这样的:$('div.post').lengthdocument.getElementsByClassName('post') 如果没有 jQuery。

    【讨论】:

      【解决方案3】:

      为了检测它是在页面还是帖子上,我创建了这个对我很有效的脚本。

      {block:PermalinkPage} 
        var page = {JSPostID};
        if(page == '') alert('Page!');
        else alert('Post');
      {/block:PermalinkPage}
      

      或者使用最简单的函数

      function isPage(){
          {block:PermalinkPage} if({JSPostID} == '') return true; {/block:PermalinkPage}
          return false;
      }
      function isPost(){
          {block:PermalinkPage} if({JSPostID} != '') return true; {/block:PermalinkPage}
          return false;
      }
      

      【讨论】:

      • 您能否详细说明{JSPostID} 变量?
      猜你喜欢
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多