管理学 点击: 2015-03-28
wordpress主题模版制作教程
学习本教程,需要:
对PHP,WP,CSS,PS有一定的基础,懂得初步的应用。
你是一个想要表现自己的家伙,并且不想再使用别人制作的主题。
你要有耐心,细心,细心,耐心
WP 主题简介
在详细分解代码之前,我们还是要先了解一下WP主题的大致情况。一个 WP 的主题是由几个 templates 文件组成的,每一个主题必有的二个文件是:index.php 和 style.css,除此之外还有一些其它的文件(不是必须),它们和 index.php 文件间存在优先级关系,如果它们存在,WP 模板系统就会调用它们显示相应的页面,否则模板系统会调用 index.php 来显示。
它们有可能是以下文件:
single.php – 单一日志文件,用于显示单一日志
page.php — 页面模板文件,用于显示静态页面
archive.php — 存档文件,用于显示存档页面
category.php — 类别文件,用于显示类别页面
search.php — 搜索文件,用于显示搜索结果
404.php — 错误文件,用于显示404页面
comments.php — 评论文件,用于显示评论和评论框
index.php
首先制作index.php,我们知道在一个网页中,代码主要分为二部分,一个是页头信息,一个是页面内容。
<html>
<head>
………页头信息
</head>
<body>
………页面内容
</body>
</html>
每个主题的页头信息都是几乎一样,具体可以查看默认模板的 header.php 文件(为保证所有页面的页头信息的一致性,所有页头信息都放在 header.php 文件)。
接下来我们谈下一话题,关于母猪的产后护理……(我学的太杂了,都弄混了)
我们来谈一下body中的内容。它包含四个部分,每一部分都可以叫做一个集成模块,其实一个主题就是由不同的模块构成,模块又是由不同的模块构成。
header WP 的顶部,显示博客的名字与描述,放置导航栏,搜索栏等等。
content WP 的正文部分,显示贴子的内容,作者,时间,分类,评论,编辑等等。
sidebar WP 的侧边栏部分。
footer WP 的尾部,这部分只有很少的内容,通常是版权信息。
对于每一个集成模块中的内容,理论上是可以随意放置的,比如我们可以把header模块中的搜索栏放在sidebar模块中去。那如何区分这四个集成模块呢?看以下代码。
<div id=”header”>
这是我的博客名字
</div>
<div id=”content”>
这是我写的贴子
</div>
<div id=”sidebar”>
友情链接,搜索栏
</div>
<div id=”footer”>
版权所有:我是二道
</div>
通过div标签,我们可以把这些个模块分隔开来。
现在开始我们第一部分的代码块,不过在写代码之前我还得要啰嗦一句,这不是我说的,是我爱水煮鱼说的,写代码要有层次感,要记得使用缩进,缩进不是空格,不是用你键盘上最长的那个键,而是TAB这个键。
header
<div id=”header”>
<h1><a href=”<?php bloginfo(’url’);?>”><?php bloginfo(’name’);?></a></h1>
<?php bloginfo(’description’);?>
</div>
id是div的一个属性,为id赋于不同的值,这样就可以区分每一个div代码段。
bloginfo()是WP中定义好的函数,参数url代表网址,参数name代表网站的名字,参数description代表对网站的自我描述。 在上面的代码中,就是为网站的名字加上一个超链接,并且显示描述。
这一部份代码也是存放于header.php文件中,在index.php文件中只要用一行代码就可以调用到
<?php get_header(); ?>
这样的好处是,你只要修改一下header.php文件,所有调用这个文件的页面都会跟随改变,而不用一个一个地去修改了。
content
现在开始我们第二部分的代码块
<div id=”content”>
<?php if(have_posts()) : ?>
<?php while(have_posts()) : the_post(); ?>
<?php endwhile; ?>
<?php endif; ?>
</div>
这里调用if(have_potst())来检测是否有文章存在,如果有的话,就用while循环显示。the_post()就是调用文章的函数。 而每一篇文章又是有标题,有写作时间,有分属类别,有读者的评论,这些又全部需要用div标签来分隔开。
看下面的代码
<div id=”content”>{wordpress说说}.
<?php if(have_posts()) : ?><!–开始检测–>
<?php while(have_posts()) : the_post(); ?><!–以下面的格式显示每篇文章–>
<div class=”post”>
<h2><a href=”<?php the_permalink();?>”><?php the_title();?></a></h2><!–文章的标题,含有链接地址–>
<div class=”entry”>
<?php the_content();?><!–文章的内容–>
<p class=”postmetadata”><!–文章后面跟随的内容–>
<?php _e(’Filed under:’);?>
<?php the_category(’,');?><!–调用当前文章的分类–>
<?php _e(’by’);?><!–创建可以翻译的主题–>
<?php the_autnor(”);?><!–调用文章的作者–>
<br />
<?php comments_poopup_link(’No Comments»’,'1 Comments»’,'% Comment»’);?><!–调 用一个弹出的留言窗口,如果这个功能没有激活,则是显示留言列表–>
<?php edit_post_link(’Edit’,'|’,”);?><!–只有在登陆后才可见到,对文章进行编辑的链接–>{wordpress说说}.
</p>
</div><!–文章内容彻底结束–>
</div><!–一篇文章终于结束–>
<?php endwhile; ?>
<?php endif; ?>
</div>
class
现在我们得要说说class了,它与id都是标签的属性,但是不同之处在于,
id的参数值是唯一的,它只能使用一次,而class的参数值是可以多次使用,
比如id=”header”只能用一次,因为我们只有一个地方可以出现博客的名字。
而class=”entry”会经常出现,那是因为我们的博客里不只是有一篇文章。
为什么我们要用到id与class,难道只用一个不行吗,反正功能都是相同的。
不要忘了我们前面说过的一个重要文件,style.css样式表文件。
我们为某一段代码添加了属性,如同起个名字而已,这样在样式表中我们就可以为这些名字来定制它们的样式了。
这样说你还不明白?那就打个最简单的比方吧,你可以有很多的兄弟,但是你们只能有一个爹,
你不能用你爹的名字叫你的兄弟,但是你爹可以用你兄弟的名字叫你。
样式表文件就和你奶奶一样,你爹再牛逼也得听你奶奶的话,叫他怎么样他就得要怎么样。
Not Found
前面的代码中有说到,如果检测到有文章的话,就用循环调出来,可是如果没有文章的话那要怎么样呢?
<?php else:?>
<div class=”post” id=”post-<?php the_ID(); ?>”>
<?php _e(’Not Found’);?>
</div>
把这一段代码加在<?php endwhile; ?>之后就可以了。
页面导航
当你的博客内容越来越多的时候,在WP的后台又设定了首页只显示10个文章,那么从第11个开始都无法在首页显示出来。 这样在博客的最后一篇文章下面就会出现下一页或是前一页的链接。如果你还不到10个文章,这个链接就不会出现。
把下面的代码加入到<?php else:?>前面
<div class=”navigation”>
<?php posts_nav_link(); ?>
</div>
分析一下posts_nav_link(),它可以有三个参数
posts_nav_link(’in between’,'before’,'after’)
第1个参数是显示在后一页和前一页链接的中间。第2个参数显示在后一页和前一页链接的前面。第3个参数显示在后一页和前一页链接的后面。
用什么来显示,你自己决定,常用的就是一些符号或是箭头而已嘛。
现在再看一下index.php文件中我们已经有了哪些个代码
<?php get_header(); ?>
<div id=”content”>
<?php if(have_posts()) : ?>
<?php while(have_posts()) : the_post(); ?>
<div class=”post”>
<h2><a href=”<?php the_permalink();?>”><?php the_title();?></a></h2>
<div class=”entry”>
<?php the_content();?>
<p class=”postmetadata”>
<?php _e(’Filed under:’);?>
<?php the_category(’,');?>
<?php _e(’by’);?>
<?php the_autnor(”);?>
<br />
<?php comments_poopup_link(’No Comments»’,'1 Comments»’,'% Comment»’);?>
<?php edit_post_link(’Edit’,'|’,”);?>
</p>
</div>
</div>
<?php endwhile; ?>
<div class=”navigation”>
<?php posts_nav_link(); ?>
</div>
<?php else:?>
<div class=”post” id=”post-<?php the_ID(); ?>” >
<?php _e(’Not Found’);?>
</div>
<?php endif; ?>
WordPress主题完全翻译教程
以前也有介绍过主题翻译,现在主题站更新的主题绝大部分都来自国外,都是很经典的主题,有些朋友不太懂英文,主题使用有些问题,所以今天就再详细、系统的介绍一下主题翻译,以后大家再遇到英文主题,可以参考这篇主题完全翻译教程来自己把英文主题翻译成中文版。
教程还是以一款主题的WordPress主题为例,我们就用FalknerPress这款主题作为例子,详细简介如果翻译主题。
一、俗话说,工欲善其事,必先利其器。
在翻译这款主题之前,先介绍几款工具。
1、还是推荐常用的,Editplus,这里有一个详细的使用介绍,简单看看就OK。
2、Topstyle,这是一款CSS编辑器,很智能。
二、开始翻译主题。
主题文件几乎每个都需要或多或少的翻译一些内容,这里我就举一些常用的文件翻译一下。
首先是header.php文件,也就是主题的头文件,主题的分类导航栏是英文的,看图:
我们需要把这些文字翻译成中文,现在我们用Editplus打开header.php,找到对应的代码:
1.</P>
2.<LI><A href="/">Home</A>
3.<P>
把其中的 Home 换成 首页 ,然后另存为UTF-8格式,覆盖原来的header.php就好了。
文章列表部分,也就是图片这部分主要有 index.php 控制:
这块翻译的地方比较多,我都用红线标记出来了:
其中 Lastest News 这里可以翻译成:最新发表 最新资讯 等,用Editplus打开主题文件夹下面的 index.php ,找到:
1.</P>
2.<DIV id=latest>Latest News</DIV>
3.<P>
把其中的 Latest News 里翻译成中文,另存为UT8-8格式,就好了。
另外还有几处地方,Posted by; under;
'No Comments', '1 Comment', '% Comments';这些都一一翻译成中文就可以了。这里特别说明一点,'No Comments', '1 Comment', '% Comments'这分别要翻译成:没有评论,1条评论,条评论。 另存为UTF-8格式就好。
其他翻译的地方也都类似,但要注意两点,一点是中英文的对照翻译,一点是另存为UTF-8格式。
大家在翻译的时候,可以尽量 ”非主流“一点,雷人一点,这样可以显出博客有自己的特点。
除了首页,还需要翻译单篇文章页面:single.php,归档页面:archive.php,搜索页面:search.php,等等页面。大家可以在翻译的时候自己搞定。
主题翻译中必然要翻译footer.php这个文件,但大家在很多时候打开这个文件都只能看到乱码,至于为什麽是乱码,我这里也说说,虽然主题多,但很多人在免费试用主题之后并不厚道,很多把主题作者的版权链接给去掉的,这方便好像国人特别喜欢去掉主题版权信息,所以很多主题作者在放出主题的同时,也就加密了,防止大家篡改这里的版权信息。所以如果遇到加密的,大家就不要修改了。 另外,为了体现对主题翻译者劳动的尊重,翻译者可以在Footer.php里加上翻译的信息,或者在CSS的最开始加上说明即可。
本来先整理一份中英文对照表,但是觉得大家应该各自发挥,所以就不给大家规范,大家自己来就好了。
最后说明一点,这里之所以介绍Topstyle这个CSS编辑器,是因为有些应为主题的字体在翻译成汉语之后会有点大,不太合适,这时候使用这个调整对应的CSS就可以了,但这只是极少数的情况。
基本上就这样了,大家可以自己尝试一下,Wopus主题站的很多主题都是没有中文版的,大家可以帮忙汉化一下,然后投稿给我们:tougao@wopus.org ,也算是对WordPress本地化的一种贡献。
有什么不明白的,欢迎留言,我会一一作答。
说说大型高并发高负载网站的系统架构
说说大型高并发高负载网站的系统架构 收藏 此文于2010-04-29被推荐到CSDN首页 如何被推荐?
读 《构建可扩展的Web站点》笔记
从目录中就可以看出来, 这是一本超越纯粹代码范畴的书. 涉及到开发工具, 开发方法, 开发过程, 体系结构, 应用分层, 常用web功能举例和注意事项, 性能瓶颈, 扩展并提出一些解决方法, 最后还涉及到性能的监控方法.{wordpress说说}.
扩展Web应用程序{wordpress说说}.
一、概念
简单的来说,如果一个系统可扩展,那么你可以通过扩展来提供系统的性能。这代表着系统能够容纳更高的负载、更大的数据集,并且系统是可维护的。扩展和语言、某项具体的技术都是无关的。扩展可以分为两种:
1. 垂直扩展(stade up),通俗的说就是将某台单一的机器的性能提升的更高,如添加内存、更换更强的处理器等等。
2. 水平扩展(out),通俗的说就是添加新的机器。
对比可以发现,水平扩展比垂直扩展有更强大的扩展性,可以说是“无限”扩展,毕竟单台的机器的性能总是有限的,硬件的技术发展还赶不上web的发展。但同时,水平扩展也来了更高的维护成本。实际中,需要根据具体情况来寻求一个平衡点。
二、冗余
机器总可能会发生故障,而唯一的保证故障状况下服务依然可用的办法就是由多个硬件备份。备份可以分为热备份和冷备份,注意的区别在于数据服务是否在线,数据在线服务的同时进行的备份成为热备份。例如将mysql服务器关闭,然后拷贝数据文件到备份位置,则是典型的冷备份行为。
三、负载均衡
当我们使用了水平扩展之后,我们开始考虑新的问题了,如何将大量的请求“均衡”到我们的扩展机器上呢?{wordpress说说}.
两种负载均衡模式:有状态(如有携带session)和无状态
两种负载均衡方式:硬件均衡和软件均衡
硬件均衡比较简单,通常接入一个设备即可,之后的均衡和故障检测等等都由硬件自动完成。成本较高。
软件均衡则是通过软件来转发各种请求,更加容易的定义转发规则,有较多的开源产品选择。
第四层和第七层
经常在负载均衡中看到第四层和第七层这两个名词。它们实际上是指它们各自工作时所处理的网络协议的层数(使用ISO模型)。
第四层是数据传输层,包括TCP和UDP,第七层则是应用层,通常web中为HTTP应用。如Apache、nginx等支持第七层的均衡,而且可配置性都相当强大,能够适应较复杂的应用。例如可以简单的将流量分担到各个负载机上,也可以定义一套业务规则,将应用划分为不同的池,每个池处理某些固定规则的URL。
对比软件均衡与硬件均衡,可以发现它们各自的优缺点:
1. 硬件均衡成本比较高,软件均衡多数可以使用免费的开源软件来实现。
2. 硬件均衡对于故障检测比软件均衡更加强大、快速。在采用硬件均衡时,一旦某台机器出现故障,马上就可以检测出来并立即屏蔽。
3. 硬件均衡可以快速的添加机器(接入硬件接口即可),而软件均衡除了添加机器外还要添加一些配置信息,以将某些流量导入到新的机器。
4. 软件均衡可以定义非常复杂的业务规则,而硬件均衡在这方面相对较弱。
5. 多数的硬件均衡方案都有捆绑附加的一些服务如HTTPS加速、DOS防火墙等等。
还有一种比较流行的方案:DNS解析。这种方式对解决用户分布在不同地理位置、不同网络的情况有着相当好的效果,每个用户都可以根据自己的网络得到一个较快速的访问IP。缺点也比较明显:DNS更新缓慢,对于实时性的均衡几乎没有什么作用,因为DNS的更新往往需要一两个小时,甚至一两天。
四、使用缓存
使用缓存将某些实时性要求不高的服务结果缓存起来是大型应用解决方案的一个共识,合理的使用缓存将极大的改善应用体验和性能。
常用的几类缓存:
缓存数据:memcached memcachedb
缓存HTTP请求: squid
用户浏览器缓存
说说大型高并发高负载网站的系统架构
发布:倪海涛
来自:BudiChina.com
更新:2010-03-15 11:53:58
转帖:/blog/71.html
摘要:一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了。随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。
前言
鄙人先后在CERNET做过拨号接入,在Yahoo&3721搞过搜索前端,在猫扑处理过mop.com的架构升级,在6.cn视频网站从事开发工作,还在多年的工作中接触和开发过不少大中型网站的模块,因此在大型网站应对高负载和并发的解决方案上有一些积累和经验,希望和大家一起探讨。
一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。
大型网站,比如门户网站。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。
上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,下面我从低成本、高性能和高扩张性的角度来说说我的一些经验。
1、HTML静态化
其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,我们无法全部手动去挨个实现,于是出现了我们常见的信息发布系统CMS,像我们常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的,信息发布系统可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不可少的。
除了门户和信息发布类型的网站,对于交互性要求很高的社区类型网站来说,尽可能的静态化也是提高性能的必要手段,将社区内的帖子、文章进行实时的静态化,有更新的时候再重
新静态化也是大量使用的策略,像Mop的大杂烩就是使用了这样的策略,网易社区等也是如此。目前很多博客也都实现了静态化,我使用的这个Blog程序WordPress还没有静态化,所以如果面对高负载访问,)就是使用了这样的方法,我通过设定一些html静态化的时间间隔来对动态网站内容进行缓存,达到分担大部分的压力到静态页面上,可以应用于中小型网站的架构上。故人居网站的地址:或者img1.9tmd.com的URL。
另外,在处理静态页面或者图片、js等访问方面,可以考虑使用lighttpd代替Apache,它提供了更轻量级和更高效的处理能力。
3、数据库集群和库表散列
大型网站都有复杂的应用,这些应用必须使用数据库,那么在面对大量访问的时候,数据库的瓶颈很快就能显现出来,这时一台数据库将很快无法满足应用,于是我们需要使用数据库集群或者库表散列。
在数据库集群方面,很多数据库都有自己的解决方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是类似的方案,您使用了什么样的DB,就参考相应的解决方案来实施即可。
上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用DB类型的限制,于是我们需要从应用程序的角度来考虑改善系统架构,库表散列是常用并且最有效的解决方
案。我们在应用程序中安装业务和应用或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列,比如用户表,按照用户ID进行表散列,这样就能够低成本的提升系统的性能并且有很好的扩展性。sohu的论坛就是采用了这样的架构,将论坛的用户、设置、帖子等信息进行数据库分离,然后对帖子、用户按照板块和ID进行散列数据库和表,最终可以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。
4、缓存
缓存一词搞技术的都接触过,很多地方用到缓存。网站架构和网站开发中的缓存也是非常重要。这里先讲述最基本的两种缓存。高级和分布式的缓存在后面讲述。
架构方面的缓存,对Apache比较熟悉的人都能知道Apache提供了自己的mod_proxy缓存模块,也可以使用外加的Squid进行缓存,这两种方式均可以有效的提高Apache的访问响应能力。
网站程序开发方面的缓存,Linux上提供的Memcached是常用的缓存方案,不少web编程语言都提供memcache访问接口,php、perl、c和java都有,可以在web开发中使用,可以实时或者Cron的把数据、对象等内容进行缓存,策略非常灵活。一些大型社区使用了这样的架构。
另外,在使用web语言开发的时候,各种语言基本都有自己的缓存模块和方法,PHP有Pear的Cache模块和eAccelerator加速和Cache模块,还要知名的Apc、XCache(国人开发的,支持!)php缓存模块,Java就更多了,.net不是很熟悉,相信也肯定有。
5、镜像
镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,比如ChinaNet和EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点,数据进行定时更新或者实时更新。在镜像的细节技术方面,这里不阐述太深,有很多专业的现成的解决架构和产品可选。也有廉价的通过软件实现的思路,比如Linux上的rsync等工具。
6、负载均衡
负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。
负载均衡技术发展了多年,有很多专业的服务提供商和产品可以选择,我个人接触过一些解决方法,其中有两个架构可以给大家做参考。另外有关初级的负载均衡DNS轮循和较专业的CDN架构就不多说了。
6.1 硬件四层交换
第四层交换使用第三层和第四层信息包的报头信息,根据应用区间识别业务流,将整个区间段的业务流分配到合适的应用服务器进行处理。 第四层交换功能就象是虚IP,指向物理服务器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上,需要复杂的载量平衡算法。在IP世界,业务类型由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP