1

潜伏已久,第一次提问。

我目前正在为 Tumblr 博客编写一个自定义主题,以便在每篇文章之后嵌入一个小部件,无论它们的类型如何。这个小部件需要帖子的标题,如果没有,则需要博客的标题。

根据Tumblr,{Title} 指的是博客标题。但是,如果我们有文本帖子或聊天帖子,{Title} 指的是帖子标题。

这是我的代码:

var title;
if ('{PostType}' === 'text' || '{PostType}' === 'chat') 
    title = '{Title}';
else if ('{PostType}' === 'photo' || '{PostType}' === 'photoset' || '{PostType}' === 'audio' || '{PostType}' === 'video')
    title = '{PlaintextCaption}';
else if ('{PostType}' === 'quote')
    title = '{PlaintextQuote}';
else if ('{PostType}' === 'link')
    title = '{PlaintextName}';
else if ('{PostType}' === 'answer')
    title = '{PlaintextQuestion}';

if (title === '')
    title = '{Title}';

例如,如果我有一个没有标题的照片帖子,那么标题将正确设置为博客标题。但是如果我有一个没有标题的文本帖子,那么标题将被设置为 [空字符串] 而不是博客标题。

所以我的问题是:当我在文本或聊天帖子中时,如何获得博客标题?

4

1 回答 1

2

您可以做的是在您输入{block:Posts}. 所以在你的<head>,你可以这样做:

var blogTitle = '{Title}';

然后像这样修改你的代码:

var title;
if ('{PostType}' === 'text' || '{PostType}' === 'chat') 
    title = blogTitle;
else if ('{PostType}' === 'photo' || '{PostType}' === 'photoset' || '{PostType}' === 'audio' || '{PostType}' === 'video')
    title = '{PlaintextCaption}';
else if ('{PostType}' === 'quote')
    title = '{PlaintextQuote}';
else if ('{PostType}' === 'link')
    title = '{PlaintextName}';
else if ('{PostType}' === 'answer')
    title = '{PlaintextQuestion}';

if (title === '')
    title = '{Title}';

另外,要小心,因为{PostType}永远不会== 'photoset'。Photoset 帖子类型总是以“照片”的形式出现。在制作类名时,我通常会做如下反驳:

class="type-{PostType}{block:Photoset}set{/block:Photoset}

...输出将是class="type-photoset".

于 2012-08-22T02:48:55.623 回答