【发布时间】:2013-06-30 20:41:32
【问题描述】:
在 tumblr 中,是否可以在主页中仅显示带有特定标签的帖子?
如果有,是怎么做的?
【问题讨论】:
-
您是要进行扩展,还是这不是编程问题?
-
这是一个编程问题,我正在寻找修改主题的html。
标签: tumblr
在 tumblr 中,是否可以在主页中仅显示带有特定标签的帖子?
如果有,是怎么做的?
【问题讨论】:
标签: tumblr
我只是在这里写了相反问题的解决方案:
您可以从那里获得灵感并实施相反的方法。或者,您可以简单地将“隐藏”标签添加到您不希望在主页上显示的每一项内容。
【讨论】:
我知道这个话题已经很老了,但我想我会为那些仍在寻找这个问题的答案的人分享我所做的事情。
首先,将以下代码粘贴到主题 HTML 中的“”之后。
<meta name="text:Default Tag" content="" />
接下来,在主题 HTML 中的“
”之后,粘贴以下内容:{block:IndexPage}<script type="text/javascript">
var url = location.href;
if (url == "{BlogURL}") {
window.location = "{BlogURL}tagged/{text:Default Tag}";
}
</script>{/block:IndexPage}
在您的主题设置中,您应该会看到一个标有“默认标签”的框。将您希望帖子出现的标签放在该框中(不带标签),然后点击保存。
现在,如果有人访问您的博客,它会将他们转发到显示带有您指定标签的帖子的页面。当然,这可能不是最好的方法,但这是我能想到的最好的方法,不会弄乱主题。
我喜欢这种方式的另一件事是,您可以使用“/?”向某人发送您的博客 URL。附加到它(例如“myblog.tumblr.com/?”),它会显示你所有的帖子。
【讨论】:
使用 mircealungu 的建议对我来说非常有效!我是这样做的:
1.找到文章标签,添加类名:
class="不推荐 {TagsAsClasses}"
如果它已经有一个类名,请将上面的粗体部分添加到类名引号内。我的最终看起来像这样:
<article id="{PostID}" class="post notfeatured {TagsAsClasses} {PostType}{block:PermalinkPage} {block:Date}not-{/block:Date}page{/block:PermalinkPage}">
2.找到文章标签前面的div标签,加上classname:
class="{block:TagPage} tag_page {/block:TagPage}{block:PermalinkPage}perma_page{/block:PermalinkPage}"
同样,如果一个类已经存在,只需在类名引号内添加上面的粗体部分。我的结局是这样的:
<div id="posts" class="{block:TagPage} tag_page {/block:TagPage}{block:PermalinkPage}perma_page{/block:PermalinkPage}" >
3. 最后,将其添加到您的 CSS 中:
article.notfeatured {display: none;}
article.featured, .tag_page article.notfeatured, .perma_page article.notfeatured {display: block;}
现在任何标记为“精选”的帖子都会显示在您的主页上,但不会显示其他内容。到目前为止对我来说没有任何问题,效果很好!你可以看到它here。
您还可以使用 javascript 对显示进行重新排序,以便使精选帖子出现在列表的首位。脚本很简单:
$('article.featured').prependTo('#posts');
还有here is a demo。只需将其放在 javascript 标记中,并将其放在主题中的 /body 标记之前。在这种情况下,不要使用上面的 CSS,因为您不想隐藏帖子。我为脚本实现了一个 .top 类,并为 CSS 保留了 .featured 类,我同时使用了 CSS 和脚本。
【讨论】:
Tumblr 的 Custom Themes 不提供这样的功能。
您可以使用 JS 或 CSS 来(在视觉上)隐藏索引页面上没有特定标签的所有帖子,但这样您就不会再有每页完整的 10 个(或任何您配置的)帖子了。
您可以使用 Tumblr 的 API 创建匹配帖子列表(使用 Javascript)并显示该内容而不是默认帖子(因此您的自定义主题将仅包含索引页面内容的脚本)。不过,您必须确保寻呼机仍然有效。
【讨论】:
其实是有可能的,但不一定能如你所愿。
第一。确定您的各个帖子的 ID(通常类似于 #post 或 #entry,让我们称您的为 #entry)
第二。用这个替换你的开放帖子 div: 第二。添加这段css
{block:IndexPage}
#entry (or whatever name it is) {display:none}
.featured {display:inline !important}
{/block:IndexPAge}
第三。将您要在主页上显示的所有不带引号的帖子标记为“精选”
这应该可行,但它很可能会隐藏您的搜索页面和标签页面上的所有非“精选”帖子,这是您可能不想要的。
如果您希望用户在访问您的博客时被定向到特定的“启动页面”,您可以随时使用 jquery 重定向脚本。希望这对您有所帮助!
【讨论】:
很抱歉,以他们今天现有的主题选项,您无法在不严重破坏您的 seo 声誉的情况下实现这一目标。
【讨论】:
我尝试了很多方法来做到这一点,使用 tumblr php api 和其他, 这对我有用:我正在使用 tumblr 之外的页面并通过 curl php 调用加载标记的帖子。 它可以通过 ajax 完成,但出于 SEO 原因,我想使用 php。 代码如下:
$oath = 'xxx';
$blogName = 'yyy.tumblr.com';
$tag='tagname';
$apiLink = "http://api.tumblr.com/v2/blog/$blogName/posts/?api_key=$oath&tag=$tag";
// Initializing curl
$ch = curl_init( $apiLink );
// Configuring curl options
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array('Content-type: application/json') ,
);
// Setting curl options
curl_setopt_array( $ch, $options );
// Getting results
$result = curl_exec($ch); // Getting JSON result string
$data = json_decode($result);
$posts = $data->response->posts;
【讨论】:
我意识到这是旧的,但我不得不这样做,所以这是我的解决方案。在主题末尾,在脚本标签中添加:
{block:IndexPage}
$( ".the-posts" ).load( "tagged/home .the-posts article" );
{/block:IndexPage}
home 是您为希望在索引页面上看到的帖子提供的标签。这基本上会将正确的文章加载到帖子 div 中,替换那里的内容。有关更多信息,请参阅 jquery 手册页:http://api.jquery.com/load/。
【讨论】: