WordPress判断文章所属分类函数in_category,实现文章页自定义

最近自己在修改一个采用Wordpress程序的博客的时候需要用到一个特殊的功能:我需要判断这篇文章是属于哪些分类,如果属于我设定的分类下的文章,则输出一个DIV内容。按道理说实现这个功能应该不算太难,因为印象中wordpress有相关的函数。简单查阅了一些资料后发现is_category和in_category这两个函数,最后是靠in_category函数实现的。具体方法也很简单:

in_category(array( ’1′, ’2′, ’3′)) ) 这段函数的意思是识别分类目录ID为1、2、3这三个分类,可以利用这个功能实现特定分类使用自定义模板或内容等。

这其中还有个小插曲让我纠结了很久,那就是in_category和is_category的差别,它们的差别让我想实现的功能差点就黄掉了。这里贴出来做个记录:

in_category:判断当前文章或指定文章是否属于某个指定类别,只有直属的类别,不包括直属类别的父辈类别;可以在循环内使用,也可以独立使用。

is_category:判断是否正在显示一个类别归档页面。

也就是说,如果你要在wordpress里面判断某个东西是否属于某分类,则用in_category,而如果是想判断某个分类的表现,那就要用is_category函数。

smss.exe是什么进程?Windows会话管理器smss.exe详解

无论何时,当我们打开Windows任务管理器时都会在里面看到smss.exe进程,这是一个会随着基于Windows NT操作系统的启动而一直存在的进程。如果尝试结束此进程会导致操作系统立即被关闭。

那么这个smss.exe是什么进程?它在操作系统中起到什么作用?本文的相关描述或许对你有所帮助:

进程综述

smss.exeWindows任务管理器中的smss.exesmss.exe进程是微软®公司为其发布的基于Windows NT系统(200/XP/Vista以及Win7等)定义的一个重要系统核心程序,官方描述为:Windows会话管理器。

会话管理器负责Windows操作系统启动及操作中的许多的重要步骤,比如打开额外的页面文件、执行延迟的文件改名和删除操作,创建系统环境变量。他也将Csrss.exeWinlogon.exe进程启动起来,Winlogon.exe进程会依次创建其他系统进程。

smss.exe这是一个Windows后台进程,会随着系统一起启动,由于其是系统运行的重要进程,如果强行将其终止系统也会被关闭,如下图所示:

结束smss.exe进程会是操作系统立即关闭
smss.exe作为系统进程在通常情况下都是安全的,我们可以在以下位置看到其程序文件:

所在位置:C:\Windows\System32\smss.exe(C代表系统安装所在分区盘符)

功能详解

smss.exe(会话管理器)是Windows系统中第一个创建的用户模式进程。负责完成执行体和内核初始化工作的内核模式系统线程在最后阶段创建了实际的Smss进程。在启动Windows的过程中,smss.exe作用过程分为7个步骤,分别如下:

  1. 创建LPC port对象,为MSDOS定义符号连接,例如COM1、LPT1,假如安装有Terminal Services,则创建\Sessions目录
  2. 运行注册表里HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute定义的程序,一般默认的是运行Autochk
  3. 执行HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations表键中的延迟,删除,改名操作
  4. 加载HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs 初始化paging files和注册表
  5. 创建系统环境变量,这些定义在HKLM\System\CurrentControlSet\Session Manager\Environment
  6. 加载和初始化Win32子系统的内核模块Win32k.sys
  7. 创建Win32子系统服务器进程,包括Csrss.exe并创建Winlogon.exe进程。

在注册表的HKLM\SYSTEM\CurrentControlSet\Control\Session Manager下面,你可以找到许多配置信息,它们驱动了Smss.exe的初始化步骤。Smss.exe中的主线程在执行了这些初始化步骤以后, 一直在Csrss.exe和Winlogon.exe的进程句柄上等待。如果这两个进程中的任何一个非正常终止了,则Smss让系统崩溃掉(崩溃的代码是 STATUS_SYSTEM_PROCESS_TERMINATED或0xC000021A),因为Windows要依赖于这两个进程的存在才能运行得下去。(拓展阅读:svchost.exe是什么进程?)

同时Smss.exe等待加载子系统的请求、调试事件,以及创建新的终端服务器会话(terminal server sessions)的请求。终端服务会话(Terminal Services session)的创建是由Smss.exe来完成的。当Smss.exe接到一个创建会话的请求时,它首先调用NtSetSystemInformation,请求建立内核模式的会话数据结构。又依次调用内部的内存管理器函数MmSessionCreate, 该函数建立起会话虚拟地址空间,该地址空间中包含会话中的换页内存池,以及由Win32子系统的内核模式部分(Win32k.sys)和其他的会话空间设备驱动程序所分配的、属于每个会话的数据结构。然后,Smss.exe为该会话创建Winlogon.exe和Csrss.exe的实例。

用is_tag()函数实现WordPress不同TAG页面显示不同内容

虽然Wordpress是一个博客系统,但如果利用好也是个强大的CMS(内容管理)系统。在Wordpress的实际使用中往往会创建很多的TAG标签页面,当文章多了一些TAG页面内容也开始丰富起来,但如果当作CMS来用的话这个千篇一律的TAG页面显然无法很好的满足突出当前TAG标签中心内容的用处。

这个时候我们就需要用到一个Wordpress自身具备的条件判断函数is_tag()。我们要想实现不同TAG显示不同内容就可以用它来判断,其用法为:

<?php if ( is_tag() ) { ?>//可以用 is_tag(‘tagname’) 判断具体的TAG页面<?php } ?>

利用上面的is_tag()函数,并在括号中添加TAG标签名称(注意:是链接名,也就是TAG别名),然后在相应的地方插入就可以使Wordpress不同TAG页面显示不同内容了。

正确使用Ctrl+A快捷键调用Excel函数参数对话框(帮助窗口)

这是一个关于如何正确使用Excel中的“函数参数对话框”快捷键Ctrl+A的电子表格使用技巧。

Excel对于使用Excel电子表格进行办公的用户来说,使用Excel函数来完成一些复杂的工作是常有的。但是,Excel的很多函数有很长的参数,有的时候,我们在编辑栏内输入了函数名之后,才尴尬的发现把参数给忘记了。不过现在不要紧:

你只要按下“Ctrl+A”快捷键就可以调出函数参数的帮助窗口

注意:在整个表格中按Ctrl+A会全选。我们要在空白单元格中双击,当编辑栏出现输入数据的光标时,按Ctrl+A会显示“=”号。当插入点位于公式中某个函数名称的右边时,会显示“函数参数”对话框,当插入点位于公式中某个函数名称呼右边按 Ctrl+Shift+A 将会插入参数名称和括号

如此一来我们在输入函数参数的时候可以一边看函数的参数说明一边输入参数,对于参数很长的那些不易记住的函数来说,这个快捷键无疑是个福音。最后也希望大家在不断反复的操作过程中顺便也能够超常发挥将这些参数统统记下来,这样可以吸引同事们的仰慕眼神哦~!

C Primer Plus里没有提及的C语言scanf()函数用法

根据beginning linux programing 4th edtion发现C语言scanf()函数还有这样的用法:

char str[80];
scanf("%[^\n]",str);

直到读取到回车键才停止读取,而不是像通常的scanf(“%s”,str);那样读到空白字符就停止读取。换言之上述方法可以读取一个句子而不是通常的只能读取一个单词。

不过缺点也是显而易见的,和gets相仿,这样可能导致溢出漏洞。正如,历史上对scanf系列函数的评价并不高。

#include 
int main(void)
{
    char str[80];
    puts("Please enter some word, end with the key ENTER");
    scanf("%[^\n]", str);
    printf("What you input is %s", str);
    return 0;
}