在tumblr中,是否可以仅在主页中显示带有特定标签的帖子? 如果是这样,它是如何完成的?
答案 0 :(得分:7)
我刚刚写了解相反问题的解决方案:
你可以从那里获取灵感并实施相反的目标。或者,您只需向主页上不希望显示的每个内容添加“隐藏”标记。
答案 1 :(得分:6)
我知道这个话题已经很老了,但我想我会分享我为那些仍在寻找这个问题答案的人所做的一切。
首先,在"< / title>"之后粘贴以下代码在您的主题HTML。
<meta name="text:Default Tag" content="" />
接下来,紧跟在&#34;&lt; body&gt;&#34;在您主题的HTML中,粘贴以下内容:
{block:IndexPage}<script type="text/javascript">
var url = location.href;
if (url == "{BlogURL}") {
window.location = "{BlogURL}tagged/{text:Default Tag}";
}
</script>{/block:IndexPage}
在您的主题设置中,您应该会看到一个标有&#34;默认标记&#34;的框。将您喜欢的帖子标记放在该框中(没有标签),然后点击保存。
现在,如果有人访问您的博客,它会将其转发到显示带有指定标记的帖子的页面。当然,这可能不是最好的方式,但这是我能想出的最好的方式,不会弄乱主题。
我喜欢这种做法的另一个方法是,你可以向某人发送你的博客网址&#34; /?&#34;附加到它(例如&#34; myblog.tumblr.com /?&#34;),它将显示你的所有帖子。
答案 2 :(得分:3)
使用mircealungu的建议对我来说非常合适!我是这样做的:
1。找到文章标记,并添加类名:
class =“ notfeatured {TagsAsClasses} ”
如果它已有类名,请在类名引号内添加上面粗体的部分。我最终看起来像这样:
<article id="{PostID}" class="post notfeatured {TagsAsClasses} {PostType}{block:PermalinkPage} {block:Date}not-{/block:Date}page{/block:PermalinkPage}">
2. 找到文章标记之前的div标记,并添加类名:
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和脚本。
答案 3 :(得分:1)
Tumblr的Custom Themes没有提供这样的功能。
您可以使用JS或CSS(在视觉上)隐藏索引页面上没有特定标记的所有帖子,但这样您就不再拥有每页的完整10个(或任何您配置的)帖子。
您可以使用Tumblr的API创建匹配帖子列表(使用Javascript)并显示该内容而不是默认帖子(因此您的自定义主题将仅包含索引页面内容的脚本)。但是,您必须确保寻呼机仍可正常工作。
答案 4 :(得分:0)
实际上,这是可能的,但它可能无法发挥作用。
第一。识别您个人帖子的ID(通常类似#post或#entry,让我们称之为#entry)
第二。用这个替换你的开场发布div: 第2位。添加这一点css
{block:IndexPage}
#entry (or whatever name it is) {display:none}
.featured {display:inline !important}
{/block:IndexPAge}
第三。将您要在主页上显示的所有帖子标记为“精选”
这应该可行,但它很可能会隐藏您搜索页面和标签页面上的所有非“特色”帖子,这可能是您不想要的。
如果您希望用户在访问博客时被定向到特定的“启动页面”,则可以始终使用jquery重定向脚本。希望其中一些有所帮助!
答案 5 :(得分:0)
我很遗憾地说,凭借截至今天的现有主题选项,如果不会破坏您的声誉,就无法实现这一目标。
答案 6 :(得分:0)
我尝试了很多方法,使用tumblr php api和其他方法, 这对我有用:我在tumblr之外使用页面并通过curl php调用加载标记的帖子。 它可以通过ajax完成,但出于搜索引擎优化的原因,我想使用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;
答案 7 :(得分:0)
我意识到这已经过时了,但我只是必须这样做,所以这是我的解决方案。在主题的末尾,在脚本标签中添加:
{block:IndexPage}
$( ".the-posts" ).load( "tagged/home .the-posts article" );
{/block:IndexPage}
其中home
是您希望在索引页面上显示的帖子的标记。这将基本上将正确的文章加载到帖子div中,替换它的内容。有关详细信息,请参阅jquery手册页:http://api.jquery.com/load/。