May 7, 2007

[翻译]改进你的标签/归档页面

原文:http://hackosphere.blogspot.com/3006/08/new-hack-to-improve-your-labelsearch.html
(更新:在这个 hack 的基础上,我又开发了更好的版本——可展开/合拢的标签/归档页面。点击这里查看。)
  在 Blogger Beta 博客中,当你选择一个标签或者在导航栏中搜索时,会在 main 列(main column)显示显示符合这个标签/搜索的的文章。当选择文章归档中的某项时也是同样的情况。正如 Ricardo 在我以前的文章中指出的:当文章过多时,这并不显得很友好。下面将要说到的 hack 只显示符合条件的文章标题(和固定链接),这样你就可以只阅读自己所希望看到文章。
  在我完成第一个 hack(下拉式标签)后,我花了一些时间来研究 Blogger Beta 模板中的各个段和部件。在开始说新的 hack 之前,先简单介绍一下部件。段是整个博客的一部分,它由很多的部件组成,而每个部件都与一个结构化的数据相关联。比如,下面的部件管理博客中的文章显示。

<b:widget id='Blog1' locked='false'
title='Blog Posts' type='Blog'>
<b:includable id='main' var='top'>
<!-- posts -->
<div id='blog-posts'>
<b:loop values='data:posts' var='post'>
<b:if cond='data:post.dateHeader'>
<h2 class='date-header'>
<data:post.dateHeader/></h2>
</b:if>

<b:include data='post' name='post'/>

<b:if cond='data:blog.pageType == "item"'>
<b:if cond='data:post.allowComments'>
<b:include data='post' name='comments'/>
</b:if>
</b:if>
</b:loop>
</div>

  其中,“data:posts”是一个关联到“Blog”的文章列表。正如你所看到的,这里通过循环在遍历所有的文章。“var”是一个循环变量,它代表各个文章。对于每个文章,在文章内容后面显示时间(如果有)。“b:include”相当于在后面的代码中定义的一个函数。然后,这里有一个条件判断来检查页类型是否是“item”。这就是为什么只有条目页后(item page)面才显示评论。这里只简单介绍部件的代码。至于详细的介绍,请查看 Scott 的文章
  现在,让我们回到 hack。进入“编辑 HTML”,点击“扩展窗口小部件代码”用下面的代码替换上面代码中的斜体部分。
<b:if cond='data:blog.homepageUrl !=
data:blog.url'
>
<b:if cond='data:blog.pageType != "item"'>
<a expr:href='data:post.url'>
<data:post.title/></a><br/><br/>
<b:else/>
<b:include data='post' name='post'/>
</b:if>
<b:else/>
<b:include data='post' name='post'/>
</b:if>

  简单的说,检查当前页面是主页面还是条目页面。如果都不是,那就一定是搜索、标签或者归档页面。对于这些页面,只显示文章的标题(链接到文章)。其中“blog.homepageUrl”是以前的<$BlogURL$>标签,“blog.pageType”用来检查
  你可以在我的博客的侧边栏中选择标签或者在2006年的归档试试这个hack 的效果。如果你喜欢,在你的博客中试试,让我知道你的评价。
更新:在这篇文章中我介绍了如何超过每个标签页不超过20篇文章的限制。

0 comments:

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger