在Typecho模版制作的时候,经常都要判断当前页面的类型,此时可以用到Typecho 为我们提供了一个简单而强大的内置 is 函数,它可以非常准确的判断当前页面所属的类型,从而灵活点实现我们需要的效果。
那么它可以判断出哪些页面类型呢?基本上首页、归档页、分类页、标签页、日期归档页、内容页面、独立页面以及附件页面等都可以通过is函数来判断。
我们先来了解一下is 函数的定义,它在 /var/Widget/Archive.php 中,其原型大致如下:
/**
* 判断归档类型和名称
*
* @access public
* @param string $archiveType 归档类型
* @param string $archiveSlug 归档名称(可选)
* @return boolean
*/
public function is($archiveType, $archiveSlug = NULL)
{
// Some code here…
}
从函数定义可以看出,第一个参数用于指定页面类型,比如 index、archive、category 等,第二个参数则提供更精细的判断,比如检查特定分类或标签的 slug,这个参数是可选的。。利用这个函数,我们可以轻松地在主题模版中编写条件判断,实现页面功能的有针对性加载效果。
结合我们网站一般需要的页面,包括首页,分类页,文章页,归档页等要求,来讲解一下各个页main的判断方法
首页判断
使用用法:if ($this->is('index')) { // 当前是首页,在这里显示特色搜索框 need('search_box.php'); }
说明:当你需要在首页才加载一些特定的模块时,可以利用 is('index') 判断,就可以让首页才加载这个内容。
归档页判断
使用用法:if ($this->is('archive')) { // 当前是归档页,可以加载归档导航或列表 }
说明:
归档页面往往包含多种信息,比如分类文章、标签文章和日期归档,只需用 is('archive') 就能捕捉到这一大类页面,从而统一处理页面布局。分类和特定分类判断
使用用法:if ($this->is('category')) { // 当前页面是分类文章页,显示特色边栏 } if ($this->is('category', 'default')) { // 这里可以判断是否属于指定分类,如果是的话,则显示特定内容。 }
说明:
不仅可以判断是否为分类页,传入第二个参数 slug 后,还能检查是否为特定分类。比如默认分类的 slug 可能就是“default”,这时候你就可以加载特定的文章列表或风格。标签和特定标签判断
用法:if ($this->is('tag')) { // 当前是标签文章页 } if ($this->is('tag', 'technology')) { //跟前面分类页的判断类似,如果是特定的标签的话,可以显示指定的内容。 }
说明:
与分类类似,标签页也支持通用判断和特定标签判断,使得你能针对不同标签设置个性化样式或模块。日期归档判断
使用用法:if ($this->is('date')) { // 当前页面是日期归档页 } if ($this->is('date', '2025')) { // 当前页面是2025年的归档页面 }
说明:
对于基于时间组织内容的博客来说,日期归档功能十分关键,is('date') 能让你根据不同日期,展示与之匹配的文章及图表。内容页面、独立页面与附件页面判断
使用用法:// 判断内容页面(文章页、独立页面、附件页面) if ($this->is('single')) { // 这里加载内容页面的通用模板 } // 判断具体文章或独立页面 if ($this->is('page', 'about')) { // 如果当前页面是关于页面,则加载特别的关于模块 } // 判断附件页面 if ($this->is('attachment')) { // 当前页面是附件显示页 }
说明:
is 函数还支持判断是否为单个内容页面,甚至可以根据文章 ID 或页面的 slug 做出更精准的选择。这样一来,每个页面都可以根据自己的需求展示特定的页面。
通过前面的例子,相信大家已经能够完全掌握is函数的用法了,不管需要判断哪个页面,我们都能够通过is函数来解决。这个函数在实际模板制作中说非常有用的,特别是对于一些资源站点的建设,可以通过判断不同页面展示不同内容。