存档

2009年7月 的存档

学习无比强大的query_posts()

2009年7月31日
学习无比强大的query_posts()已关闭评论

wordpress的query_posts()之强大,让人叹为观止!学习学习!

将query_posts()放在LOOP之前限定你所需要的条件,wp_query会产生一个新的使用你的参数的SQL查询,而忽视通过URL接收到的其它的参数,如果想不忽略,可以在调用中使用$query_string。

query_posts($query_string . "&order=ASC")

设置文章显示的顺序,但是不干扰其余的查询字符串,参数前须有“&”符号

其他还有N多用途~~

  • 主页不显示某一分类下的日志
<?php
   if (is_home()) {
      query_posts("cat=-3");
   }
?>
  • 获得特定的日志
<?php
query_posts('p=5');
?>
  • 获得特定的页面
<?php
query_posts('page_id=7');      //只返回网页7
?>
<?php
query_posts('pagename=about'); //只返回关于网页
?>
<?php
query_posts('pagename=parent/child'); // 返回母网页的子网页
?>
  • 创建所有文章列表,并且提供分页功能
<?php
query_posts($query_string.'posts_per_page=-1');
while(have_posts()) { the_post();
put your loop here ;
}
?>

==========================================

类别 参数

显示属于某个类别的文章

  • cat
  • category_name

根据ID显示一个类别

只显示来自一个类别ID的文章

query_posts('cat=4');

根据名称显示一个类别

只显示属于某个类别名的文章

query_posts('category_name=Staff Home');

显示几个类别及ID

显示属于几个类别ID的文章

query_posts('cat=2,6,17,38');

删除某个类别的文章

显示所有的文章,但是类别ID前面有个’-‘(负号)负号的类被除外。

query_posts('cat=-3');

删除属于类别3的所有文章。有一个限制性条款:会删除只属于类别3的所有文章。如果一个类别也同时属于其它的类别,这个类别仍然不会被删除。

标签参数

显示与某个标签相关的文章

  • tag

为某个标签提取文章

query_posts('tag=cooking');

获得拥有任何这样的标签的文章

query_posts('tag=bread,baking');

获取拥有这三个标签的文章

query_posts('tag=bread+baking+recipe');

作者参数

你也可以根据作者限制文章数目

  • author_name=Harriet
  • author=3

author_name在 user_nicename区操作, 同时作者 在作者id上操作。

文章 & 网页参数

返回一篇单独的文章或者一个单独的网页

  • p=1 – 使用文章 ID来显示第一篇文章
  • name=first-post – 使用 post Slug 显示第一篇文章
  • page_id=7
  • pagename=about
  • showposts=1 (你可以使用 showposts=3,或者其它的任何数字显示一定数目的文章)

由于 模板层级方面的原因, home.php先执行了。这意味这你可以编写一个home.php,home.phh调用query_posts()重新得到一个特别的网页并且将那个网页设置为你的首页。没有任何插件或者hacks,你需要运行一个机制,并且显示和维护一个非博客的首页。

更有用的方法,可能是利用WP的网页功能并且为你的首页使用这个功能。你可以将”关于网页”设置为entry point或者设置为站点的末页。你可能执行一些更动态的步骤,设置一个自定义网页,显示最近的评论,文章,类别,存档。请看看下面的例子。

时间参数

得到某个特别的时间段内发表的文章

  • hour=
  • minute=
  • second=
  • day= – 一个月中的每一天; 显示,例如,十五号发表的所有文章。
  • monthnum=
  • year=

网页参数

  • paged=2 -显示使用”以前发表的文章”链接时,通常在网页2上显示的文章。
  • posts_per_page=10 -每个网页显示的文章数目;-1这个值,会显示所有的文章。
  • order=ASC -按时间顺序显示文章,以相反的顺序显示DESC(默认)

Offset 参数

你不能转移或者忽视一个或者更多的原始文章,这些文章一般是你的query同时使用offset参数收集到的。

下面的函数会显示(1)最近的5篇文章

query_posts('showposts=5&offset=1');

根据参数排序

根据这个区给得到的文章排序

  • orderby=author
  • orderby=date
  • orderby=category
  • orderby=title
  • orderby=modified
  • orderby=modified
  • orderby=menu_order
  • orderby=parent
  • orderby=ID
  • orderby=rand

同时考虑”ASC”或者的”DESC”的排序参数

联合参数

你可能从上面的例子中注意到,你使用一个&(&符号)将参数组合在一起,像:

query_posts('cat=3&year=2004');

类别13,关于当前月份显示在主页上的文章:

if (is_home())  {
query_posts ($query_string . '&cat=13&monthnum=' . date('n',current_time('timestamp'))); }

在2.3版本中,这个参数组合会返回属于类别1同时属于类别3的文章,只显示两篇(2)文章,根据标题,按降序排列:

query_posts(array('category__and'=>array(1,3),'showposts'=>2,'orderby'=>title,'order'=>DESC));

在2.3和2.5版本中,你可能期待下面的内容,返回属于类别1并且标签为”苹果”的所有文章

query_posts('cat=1&tag=apples');

一个bug阻止这个运行。请看看Ticket #5433,一个工作区要搜索几个使用+的标签

query_posts('cat=1&tag=apples+apples');

对于先前的查询,这个会产生期待的结果。注意使用’cat=1&tag=apples+oranges’能够产生期待的结果。

资料来源:站长百科 Template Tags/query posts

IT技术, php, 互联网技术 ,

学习制作WordPress主题

2009年7月31日
学习制作WordPress主题已关闭评论

如果你正准备学着制作Wordpress主题,那将非常有用。

WordPress模板基本文件

style.css 样式表文件
index.php 主页文件
single.php 日志单页文件
page.php 页面文件
archvie.php 分类和日期存档页文件
searchform.php 搜索表单文件
search.php 搜索页面文件
comments.php 留言区域文件(包括留言列表和留言框)
404.php 404错误页面
header.php 网页头部文件
sidebar.php 网页侧边栏文件
footer.php 网页底部文件

WordPress Header头部 PHP代码

注: 也就是位于<head>和</head>之间的PHP代码

<?php bloginfo(’name’); ?> 网站标题
<?php wp_title(); ?> 日志或页面标题
<?php bloginfo(’stylesheet_url’); ?> WordPress主题样式表文件style.css的相对地址
<?php bloginfo(’pingback_url’); ?> WordPress博客的Pingback地址
<?php bloginfo(’template_url’); ?> WordPress主题文件的相对地址
<?php bloginfo(’version’); ?> 博客的Wordpress版本
<?php bloginfo(’atom_url’); ?> WordPress博客的Atom地址
<?php bloginfo(’rss2_url’); ?> WordPress博客的RSS2地址
<?php bloginfo(’url’); ?> WordPress博客的绝对地址
<?php bloginfo(’name’); ?> WordPress博客的名称
<?php bloginfo(’html_type’); ?> 网站的HTML版本
<?php bloginfo(’charset’); ?> 网站的字符编码格式

WordPress 主体模板 PHP代码

<?php the_content(); ?> 日志内容
<?php if(have_posts()) : ?> 确认是否有日志
<?php while(have_posts()) : the_post(); ?> 如果有,则显示全部日志
<?php endwhile; ?> 结束PHP函数”while”
<?php endif; ?> 结束PHP函数”if”
<?php get_header(); ?> header.php文件的内容
<?php get_sidebar(); ?> sidebar.php文件的内容
<?php get_footer(); ?> footer.php文件的内容
<?php the_time(’m-d-y’) ?> 显示格式为”02-19-08″的日期
<?php comments_popup_link(); ?> 显示一篇日志的留言链接
<?php the_title(); ?> 显示一篇日志或页面的标题
<?php the_permalink() ?> 显示一篇日志或页面的永久链接/URL地址
<?php the_category(’, ‘) ?> 显示一篇日志或页面的所属分类
<?php the_author(); ?> 显示一篇日志或页面的作者
<?php the_ID(); ?> 显示一篇日志或页面的ID
<?php edit_post_link(); ?> 显示一篇日志或页面的编辑链接
<?php get_links_list(); ?> 显示Blogroll中的链接
<?php comments_template(); ?> comments.php文件的内容
<?php wp_list_pages(); ?> 显示一份博客的页面列表
<?php wp_list_cats(); ?> 显示一份博客的分类列表
<?php next_post_link(’ %link ‘) ?> 下一篇日志的URL地址
<?php previous_post_link(’%link’) ?> 上一篇日志的URL地址
<?php get_calendar(); ?> 调用日历
<?php wp_get_archives() ?> 显示一份博客的日期存档列表
<?php posts_nav_link(); ?> 显示较新日志链接(上一页)和较旧日志链接(下一页)
<?php bloginfo(’description’); ?> 显示博客的描述信息

其它的一些Wordpress模板代码

/%postname%/ 显示博客的自定义永久链接
<?php the_search_query(); ?> 搜索表单的值
<?php _e(’Message’); ?> 打印输出信息
<?php wp_register(); ?> 显示注册链接
<?php wp_loginout(); ?> 显示登入/登出链接
<!–next page–> 在日志或页面中插入分页
<!–more–> 截断日志
<?php wp_meta(); ?> 显示管理员的相关控制信息
<?php timer_stop(1); ?> 显示载入页面的时间
<?php echo get_num_queries(); ?> 显示载入页面查询

介绍完基本的函数代码后,介绍一点高级的使用

指定example.php中的内容只在首页显示

<?php if ( is_home() ) { include ('example.php'); } ?>

为不同分类指定不同的样式表

<?php if ( is_category('15') ) {<link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/cat-15.css"

type="text/css" media="screen" />;

<?php } else { ?>

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>"

type="text/css" media="screen" />

<?php } ?>

为不同的分类指定不同的图像

<?php if (is_category('7') ):<img src='<?php bloginfo('template_url');?>/images/cat7.jpg' alt='' />

<?php } elseif (is_category('8') ):

<img src='<?php bloginfo('template_url');?>/images/cat8.jpg' alt='' />

<?php endif; ?>

样式化单篇日志

<div id="post-<?php the_ID();?>">This snippet will assign the post ID to the DIV. For example, if the ID for the post is 8, that line will echo as

<div id=”post-8”></div>. Now you can style that individual post in the CSS as #post-8. Place this code

within the loop.

上一页和下一页链接

<?php next_posts_link('Next Entries »') ?><?php previous_post_link('« Older Entries'); ?>

动态页面链接

<ul><li<?php if(is_home()) { ?><?php } ?>><a href="

<?php bloginfo('home'); ?>">home</a></li>

<?php wp_list_pages('sort_column=menu_order&depth=1&title_li='); ?>

</ul>

This snippet will rst echo the text “home” with a link to the home page. Next, it will echo the WordPress

pages links in a list, in order dened by your settings, excluding the child pages, and excluding a title

header for the list. If one of the pages in the list is active, the link for that page will be assigned the class

“current_page_item”, which can now be styled in your CSS. Place this code in the template les.

动态页面标题

<?phpif (is_home()) { echo bloginfo('name'); } elseif (is_404()) { echo 'WPCandy » 404'; } elseif(is_search()) { echo 'WPCandy » Search Results'; } else { echo 'WPCandy » '; wp_title(''); }

?>

分类日志

<?php query_posts('cat=2&showposts=5'); ?>

CSS样式表头部声明

/*

Theme Name:  WPCandy

Description: Description goes here

Theme URI: http://wpcandy.com/

Version: 2.0

Author: Michael Castilla

Author URI: http://wpcandy.com/

Template: Dene a parent template (optional)

*/

日志循环

The Loop<?php if(have_posts()) : ?><?php while(have_posts()) : the_post(); ?>

// this is the inside of the loop

<?php endwhile; ?>

<?php else : ?>

<?php endif; ?>

标签云(Tag cloud)

<?php wp_tag_cloud('smallest=1&largest=9&'); ?>

页面模板头部声明

<?php/*

Template Name: Gallery

*/

?>

为每个分类指定不同的模板

<?php$post = $wp_query- >post;if ( in_category('3') ) {

include(TEMPLATEPATH . '/cat3.php’);

} elseif ( in_category('4') ) {

include(TEMPLATEPATH . '/cat4.php');

} else {

include(TEMPLATEPATH . '/cat.php');

} ? >

这是来自WPCandy的电子书,由帕兰翻译而成,你可以通过这里下载
转载自 高级Wordpress模板代码帮助手册中文版 | 帕兰映像

IT技术, php, 互联网技术 ,

C#截屏代码(截取全屏幕)

2009年7月30日
C#截屏代码(截取全屏幕)已关闭评论

代码很简单,使用Bitmap类的程序来获取屏幕图像,同时显示在对话框上,如果自己建立对话框,稍微做些改动就能直接编译通过。

使用C#截取全屏的代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;
using System.Drawing.Drawing2D;

public class Form1 : Form
{
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Button cmdCapture;
private System.Windows.Forms.PictureBox pictureBox1;

public Form1() {
InitializeComponent();

}

private void cmdCapture_Click(object sender, EventArgs e)
{
if (pictureBox1.Image != null) pictureBox1.Image.Dispose();

Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(0, 0, 0, 0, bmp.Size);
g.Dispose();
pictureBox1.Image = bmp;
pictureBox1.Size = bmp.Size;
}

private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
this.cmdCapture = new System.Windows.Forms.Button();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// panel1
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.AutoScroll = true;
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel1.Controls.Add(this.pictureBox1);
this.panel1.Location = new System.Drawing.Point(8, 8);
this.panel1.Name = “panel1”;
this.panel1.Size = new System.Drawing.Size(270, 233);
this.panel1.TabIndex = 0;
//
// cmdCapture
//
this.cmdCapture.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cmdCapture.Location = new System.Drawing.Point(169, 249);
this.cmdCapture.Name = “cmdCapture”;
this.cmdCapture.Size = new System.Drawing.Size(110, 30);
this.cmdCapture.TabIndex = 1;
this.cmdCapture.Text = “Capture Screen”;
this.cmdCapture.UseVisualStyleBackColor = true;
this.cmdCapture.Click += new System.EventHandler(this.cmdCapture_Click);
//
// pictureBox1
//
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
this.pictureBox1.Name = “pictureBox1”;
this.pictureBox1.Size = new System.Drawing.Size(100, 50);
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(290, 288);
this.Controls.Add(this.cmdCapture);
this.Controls.Add(this.panel1);
this.Font = new System.Drawing.Font(“Tahoma”, 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Name = “Form1”;
this.Text = “Screen Capture”;
this.panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);

}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}

//附  Graphics::CopyFromScreen  (Int32, Int32, Int32, Int32, Size)的方法说明

C#, IT技术 ,

c# 使用HttpWebRequest,HttpWebResponse 快速验证代理IP是否有用

2009年7月30日
c# 使用HttpWebRequest,HttpWebResponse 快速验证代理IP是否有用已关闭评论

大家好,相信大家都使用过代理IP上过网,但是有的IP一两天就失效了。要一个一个的手工去试打开IE,关闭IE,多烦啊。
有了这篇文章就好了。我们可以使用C#的HttpWebRequest,HttpWebResponse 来代理验证,谢谢大家评论指导!
呵呵,是不是很简单啊,其实这段代码改一下还可以做采集器,小偷等程序!我不说了大家自己看
public void yanzhen(string str, int port)
{
WebProxy proxyObject = new WebProxy(str, port);//str为IP地址 port为端口号
HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(“http://www.whatismyip.com.tw/”);
Req.Proxy = proxyObject; //设置代理

HttpWebResponse Resp = (HttpWebResponse)Req.GetResponse();
string str = “”;
string OkStr = “”;
Encoding code = Encoding.GetEncoding(“UTF-8”);
using (StreamReader sr = new StreamReader(Resp.GetResponseStream(), code))
{
if (sr != null)
{
try
{
str = sr.ReadToEnd();
StringSub.substr(str, “<h2>”, “</h2>”, 0);
str = str.Substring(str.IndexOf(start) + start.Length);
OkStr = str.Substring(0, str.IndexOf(last));
MessageBox.Show(“验证成功!显示IP为” + OkStr);
}
catch
{
MessageBox.Show(“文件读取失败!”);
}
finally
{
sr.Close();
}
}
}
}

呵呵,是不是很简单啊,其实这段代码改一下还可以做采集器,小偷等程序!

from问题解决园http://wenti.cnblogs.com/    http://www.cnblogs.com/wenti/archive/2009/07/22/wenti_3.html

IT技术 ,

使用google map的编码问题

2009年7月26日
使用google map的编码问题已关闭评论

周末在给网站的运动场地添加地图,使用的是google map,调试的时候遇到一个奇怪的问题,使用firefox时地图可以正常显示,而使用maxthon、IE浏览时就无法正常显示地图,google、baidu了半天也没找到解决办法,于是在JavaScript添加了alert函数来调试,终于把问题定位到了GBrowserIsCompatible()函数,但还是无法解决。于是又单独建立了一个html文件来调试我写的js,结果是html能正常使用,通过比较两者的差别,把问题锁定在header的<meta http-equiv=“content-type” content=“text/html; charset=gbk” />上,原来我的网页时GBK编码,而google map默认是utf-8,最好的解决办法就是告知浏览器在读取js文件是使用utf-8的编码格式,即引用js文件是添加charset=”utf-8″,如<script src=”http://maps.google.com/maps?file=api&xxxxxxxx” type=”text/javascript” charset=”utf-8″></script>。

告破,大喜!

互联网技术 ,