Tag Archive for cms


WordPress打造CMS教程(四):页面技巧

Posted in WordPress, 学海无牙 2007-02-14 Comments15 CommentsComments,,

教程的前三讲已经详细讲述了如何去设计和制做一个Home页面给自己的WordPress系统,同时也提及了导航菜单,这样便已经把自己的Blog变成了一个具有CMS风格的系统了。但是其中还有很多页面展示细节值得我们去注意:

1. 页面标题title: 用过网页收藏的人都应该会发现在通过浏览器插件自动提交当面网页时,插件会自动把页面的title提交进去,也就是在你浏览器的左上角显示的title。这个其实在wp的header.php文件中定义的。在我们做过前三讲的修改之后,你会发现,在显示自己的blog的home页面时,title为home+blog标题等东西,而在显示blog页面时则直接为blog标题,这样是不是很难看。再看下我的Blog,你便发现很合情理。如下是Michael在研究过好久之后才调整好的代码(我自己用了一堆&& ||的嵌套,麻烦的很),修改header.php文件中的title部分:

  1. <title>
  2. <?php if (is_home()) : ?>Blog at <?php bloginfo('name'); ?>
  3. <?php elseif ((is_page() OR is_archive() OR is_category() OR is_single()) && !(is_page(960)) ) : ?> <?php wp_title(''); ?> at <?php bloginfo('name'); ?>
  4. <?php elseif(is_tag()): echo 'Tag Page for '; if(function_exists(UTW_ShowCurrentTagSet) UTW_ShowCurrentTagSet("tagsettextonly");
  5. echo ' at ';bloginfo('name'); ?>
  6. <?php elseif(is_404()): echo '找不到页面 at ';bloginfo('name'); ?>
  7. <?php else : ?><?php bloginfo('name'); ?>
  8. <?php endif; ?>
  9. </title>

同时此代码已经支持了UTW的Tag页面展示,标题为“Tag Page for Tag名称 at blog标题”的格式,如果你没有使用UTW插件,请把包含UTW_ShowCurrentTagSet()这行删除就行了。

2. Home页面显示评论数目:如果你和我一样在Home页面加入了日志标题或者内容展示,同时还调用了显示评论comments数量的函数,可能你会发现竟然不显示出Comments的数量来。这个时候需要修改WP的原文件进行Hack了,方法如下:
修改wp安装目录中的wp-includes/comment-template.php文件,从下向上大概在320行处找到

  1. if ( is_single() || is_page() )
  2. return;
  3. $number = get_comments_number($id);

把其中的is_single () || is_page()替换成is_single(),如此便可以在page也就是Home页面的时候显示出评论的数目和链接了。

3. 首面摘要字数:如果你是在首页Home中显示了最新几篇日志的标题和摘要时,可能发现WP自身带的摘要语句只是把HTML格式和图片等内容去掉变成了纯文本而已,而并不是真正减少了内容的摘要,所以这个时候你的做法可能是在写每篇日志的时候去自定义一下摘要,但这样做想法麻烦。这个时候桑林志中文 WordPress 工具箱插件便能很好的解决这个问题了。只需要修改插件文件mullberrykit.php中最后那个函数而已:

  1. function mul_excerpt ($excerpt) {
  2.      $myexcerpt = substr($excerpt,0,250);
  3.      return utf8_trim($myexcerpt) . '... ';
  4. }

其中的250便是自己定义的摘要字数了,可以修改成你需要的数值。

4. 搜索框:如果你是使用WP自带的搜索功能,可能模板文件把这个函数加在了sidebar.php中,这样当你在不显示侧栏sidebar的页面时,便失去了搜索功能,我的做法是加到header.php中去,然后自己定义位置,如此便在任何blog页面都可以显示出来Search搜索框了。这个仅是提示而已,代码就不必重述了。

5. 推荐日志:这个推荐日志的功能其实是利用了一个叫做Articles的插件,在编写日志时,只需要加入相应的关键字即可,加入函数做成页面后便会按分类展示出推荐日志的列表来。详细用法请参考插件说明文件。当然如果你愿意自己写HTML代码来做文章推荐也是可以的~~

6. 热门日志:这个功能使用了WP-PostViews的页面访问次数统计插件,我在调用时修改了原函数,即不让它显示出阅读次数来,如果你在自己修改时遇到问题,请在回复中提出,但如果你前面教程全做到了却连这个都搞不定,那也太夸张了,所以不再细述。

如此WordPress打造CMS全部四个教程已经详细阐述完毕,如果你也想自己修改WP成为为CMS系统的话,相信这些内容应该可以帮助你完成,同时其中如制做Menu导航菜单或者修改页面标题title等方法都是值得参考的。

如果在修改过程中遇到问题,可以在回复或者通过Contact和我联系,我会及时答复。同时如果发现教程中有错误或者遗漏的地方,麻烦请指出,不胜感激。

update: Michael在回复中给出了判断语句来使用UTW,正文已经更新。
update2: puNk!d在回复中指出WP2.1已经完善了the_excerpt函数,所以无需再使用插件来做截断。

WordPress打造CMS教程(三):导航菜单

Posted in WordPress, 学海无牙 2007-02-03 CommentsCommentsComments,,

教程(二)中讲述了主页模板的制做,如此便能够添加一个页面风格一致却内容别具一格的home给自己的Blog了。然后你肯定会需要一个和CMS系统类似的菜单来方便读者进行导航。

其实大多数的WordPress模板都会设计好菜单的功能,用户在使用时便可以直接发布新的Page来自动生成链接到顶部的菜单中,像比较流行的K2模板等等。但是如果自己的模板并不支持自动添加菜单,比如WP默认的模板等,那么就需要自己手动来添加这个功能了。其实有写模板的或者是些wp高手都会自己来添加这个功能,那么我们这些低手只有来仿照了,我便是依照的K2方法:

其实只需要在header.php中的<body>之后加入CSS控制格式的调用WP Page List的语句就行了,如下所示:

  1. <ul id="menu">
  2. <?php wp_list_pages('sort_column=menu_order&depth=1&title_li='); ?>
  3. </ul>

当你在wp中建立一个新的page后,在Page Slug中填写的字段便会自动转成链接的结尾地址,标题便成了菜单的名称了。当然,如果你并不想每个page都出来一个按钮的话,那么在建立时选择一下父页面就好了。如果你根本不想用page来自动生成菜单,那么可以使用如下代码来自己定义菜单的链接:

  1. <ul id="menu">
  2. <li><a href=”http://www.yourlink.com/” >link</a></li>
  3. <li><a href=”http://www.yourlink.com/” >link2</a></li>
  4. <li><a href=”http://www.yourlink.com/” >link3</a></li>
  5. </ul>

然后在style.css中则需要为menu加入格式代码了,像位置,字体,背景颜色,鼠标指上去时的背景颜色等等,代码如下(注意:此处均为我自己的CSS定义,效果可以参考我的顶部菜单,使用时请根据自己的模板进行更改):

  1. #menu {<br />
  2. font: bold 9px/9px Verdana, Lucida Grande, Arial, Helvetica, Sans-Serif;<br />
  3. position: absolute;<br />
  4. width: 780px;<br />
  5. font-size: 12px;<br />
  6. margin: 0 0 0 30px;<br />
  7. padding: 6px 16px 5px 16px;<br />
  8. _padding: 7px 16px 7px 16px;<br />
  9. text-align: left;<br />
  10. display: block;<br />
  11. }<br />
  12. #menu li {<br />
  13. text-transform: lowercase;<br />
  14. display: inline;<br />
  15. }<br />
  16. #menu a {<br />
  17. color: #FFFFFF;<br />
  18. background: #0082C3;<br />
  19. font-weight: normal;<br />
  20. height: 19px;<br />
  21. padding: 6px 16px 5px 16px;<br />
  22. _padding: 7px 16px 7px 16px;<br />
  23. }<br />
  24. #menu a:hover {<br />
  25. color: #FFFFFF;<br />
  26. background: #95c300;<br />
  27. }

这里应该有人会有疑问,我应该怎么样让处在当前页面下时,菜单中页面的按钮和其它按钮不一样呢?这个时候就要做一个巧妙的处理了,也就是在

  1. <ul id="menu">

后面加入如下代码,来定义一个class给当面页面:

  1. <li class="<?php if (((is_home()) && !(is_paged())) or (is_archive()) or (is_single()) or (is_paged()) or (is_search())) { ?>current_page_item<?php } else { ?>page_item<?php } ?>"></li>

然后在相应的sytle.css中加入如下代码,来区别一下颜色就可以了。

  1. #menu .current_page_item a {<br />
  2. color: #FFFFFF;<br />
  3. background: #95c300;<br />
  4. }

如此方法,我们便为自己的Blog加入了一个标准的页面菜单来进行导航了。

现在你应该对自己的成果相当满意了吧,那么你发现自己的blog和我的一些不同了么?是的,浏览器中显示的标题,home时应该只显示你blog的名称,现在却多了个可恶的page名称。还有,是否发现你自己加入的日志摘要并不是像我的一样,或者是home中的日志也不显示comment的评论数量,那么这些技巧都需要在教程(四)页面技巧中进行讲述了,敬请期待。

WordPress打造CMS教程(二):首页模板

Posted in WordPress, 学海无牙 2007-01-30 Comments48 CommentsComments,,

教程(一)中讲述了首页和Blog页面的区别和重要性,那么对于大多数的Blog需要自己设计一个包含指定内容的首页,下面来讲述这个首页的制做方法。

WordPress2.1中可以选择一个指定的Page页面来做为wp的首页,这时便需要使用者来自定义一个页面模板。当然如果你选择使用在页面中运行php代码的插件runphp来直接写到Page也可以,不过无故多添一个插件没有什么必要。

首先建立一个php文件,比如起名叫HomeTemp.php,意为首页模板。然后在文件的顶部写上如下代码,其中的Homepage为Page模板的名称,你也可以换成其它名字。

  1. <?php /*
  2.     Template Name: Homepage
  3. */ ?>

之后添加的内容便和你的wp模板中的index.php内容差不多了,格式如下:

  1. <?php get_header(); ?>
  2. 页面内容
  3. <?php get_sidebar(); ?>
  4. <?php get_footer(); ?>

调用了wp模板的HeaderFooter,来保持样式一致,同时如果是自己定义了和Blog页面不同的边栏则更换sidebar的名称和内容。我的做法是没有调用sidebar,而是直接把内容代码用CSS定义到了边栏。

其中的页面内容则需要按自己的设计来添加了。我的选择是显示最新一片日志和最近5篇日志的摘要,也就是需要两个Loop循环体来调用日志。参考WordPress的支持文档中主循环The Loo的说明,在最下方的Multiple Loops in Action便是如何使用多重循环了。不过在使用这些代码的时候出现了问题,能顺利调用最新的日志,但在最近5篇日志中只显示了第一篇标题,里面也没有内容。看来应该是WordPress2.1的缘故。

无奈下我只能按自己的方法让它显示最新一篇日志,并且在最近的5篇中还重复了那一篇,很不爽,因为同一日志显示了两次。在和Michael探讨后,一致认为很邪门儿,我放弃去做Logo了,他却在坚持不懈,最后告诉我搞定了,在这里万分感谢。(同时我的Logo设计方案也让Since1984给否了,然后我按其意见做了修改,但还是不甚满意,最后还是84亲手给我定制了Log,也万分感谢!!)代码如下:

  1. <?php $my_query = new WP_Query('showposts=1');
  2.   while ($my_query->have_posts()) : $my_query->the_post();
  3.   $do_not_duplicate = $post->ID;?>
  4. 第一篇日志调用(标题,时间,内容等)
  5. <?php endwhile; ?>
  6. <?php query_posts('showposts=6'); ?>
  7. <?php while (have_posts()) : the_post(); if( $post->ID == $do_not_duplicate )  continue;  ?>
  8. 其中的6目的为显示6-1=5,即最近的5篇日志调用(标题,时间,摘要等)
  9. <?php endwhile; ?>

现在已经显示了最新一篇日志和5篇日志的摘要了,关于如何显示全文和摘要请参考此文,那么你需要规划你的CSS来配合显示方式,样式,位置,字体等等。在我的首页中还加入了热门日志,这个是在使用WP-PostViews插件后调用的显示次数最多的日志列表。

边栏的About等内容我就是直接把加入了CSS定义的代码写在这个模板文件中,其中的Tag云输出请参考此文:Ultimate Tag Warrior-Tag输出展示简介

如此已经成功做好了自己的首页home页面模板。然后进入WordPress的后台,建立新的Page,在右面的模板选项Page Template里选择刚建立好的“Homepage”,Page Slug填写home好了,然后不用输入任何内容,发布即可。

之后再建立一个新的Page,模板不用换使用默认Template即可,内容为空,Page Slug填写blog,发布。

再来到Options的Reading下,在Front Page的选项里,选择A static Page,在Front page中选择Home,在Posts page中选择blog即可。

现在再回来你的Blog主页,是不是已经显示了你自己定义的home首页了呢?在你的域名后面加上/blog(这里的blog即为上面自己定义的Page Slug),回车后便是你原来的Blog页面了。如此便已经大功告成了!

当然现在你可以需要顶部的导航菜单,或者是想像我一样在首页中同样显示出每篇日志的comment回复数量等等,这些便是wp的技巧了。请继续关注教程(三)导航菜单

WordPress打造CMS教程(一):方案设计(续)

Posted in WordPress, 学海无牙 2007-01-29 Comments11 CommentsComments,,

教程(一)中说明了为WordPress构造一个CMS式首页的意义,可能还是有人不太理解这样的作用是什么,所以在这里举两个例子:

1. 博客联盟,这是一个主要以WordPress相关技巧和博客相关的Blog,作者采用的首页没有显示日志内容,而是一串最新日志列表和一些自己整理的相关资汇集,还有就是分类,存档和版权信息等等。可以说是作者修改了index.php,这样做的好处是生成了一个首页,给读者良好的导航,但是却没有一个Blog页面。也就是读者只能一篇一篇文章地进行阅读,而不能像普通的Blog页面一次可以浏览多个日志。

解决方案:我的建议是通过wp2.1的功能来选择一个Page作为首页,同时保留Blog的index.php来进行日志展示。

2. Yskin’s Blog,这是一个WordPress高手的Blog,作者做过WP的中文包以及很多插件等等。很凑巧今天在打开首页时,竟然没有显示任何日志,而提示我在边栏找所需要的东西,应该是作者在改版吧。他采用的是K2的模板,所以主页应该是普通的Blog页面,显示的几篇最新的日志。而他把自己想要推荐的东西列在了侧边栏,如About,一串Page,存档,分类,最新日志和评论,统计信息等等。导航菜单中有个Projects,便是作者做过的一些插件和程序,进入页面后边栏还有一串子Page,

解决方案:我个人认为作为一个插件作者,很有必要在首页展示一下自己的作品,来给读者推荐和指引。所以我的建议是建立一个home页面,也就是首页,里面包含自己作品的介绍和Blog自我介绍等东西,也就是像Alex King一样的主页。

有人可能还会疑问,在Blog页面之外,再自己做一个index.html好了,里面随便写自己想加入的东西。当然你可以这样,我以前也曾经尝试过,但存在的问题我都无法完善解决,即无法保持页面模板一致,无法调用wp的数据等等,我甚至曾在根目录和/blog目录安装两个使用同一数据库的wp来试验,不过搞到最后还是放弃。

现在大家应该已经能理解为什么对于某些Blogger需要制做这样一个首页和Blog页面了吧!

ps: 文中提到的两个Blog,之前并没有进行联系,不知道我这样举例是否恰当,如果有不便之处请指明。

update: 从博客联盟的回复中了解到,其采用的不是修改index.php,而是使用runphp来调用wp内容,并且使用插件来选择page当作首页。其实文中提到的Alex King便是采用的此做法。但我觉得应该至少保留index.php来展示blog,也就是提供一个显示多条日志的Blog页面方便读者阅读。

WordPress打造CMS教程(一):方案设计

Posted in WordPress, 学海无牙 2007-01-29 Comments33 CommentsComments,,

新改版的E-space很有些CMS的味道, 同样Michael也有建立首页的想法,同时他提到的Alex King,便是一个很不错的利用WordPress来打造CMS的高手。

可作为一个Blog为什么需要这样做呢?

先说一下自己的想法,我认为一个Blog应该是一个信息记录和自我展示平台,不但记录了日常的点滴,关心的话题,发布的消息等等,同时还在充分展示自我,而目前的blog系统正是缺乏这样一个展示功能。

和CMS内容管理系统不同,Blog系统多是一篇一篇地按新旧来排列日志。但如果你写过插件,做过模板,做过其它自己的项目,或者是想展示任意自己想让读者知道的内容,这个时候blog系统就很力不从心了。因为虽然你能置顶些内容,在侧边栏里固定些内容,但这都还是不够的。

最关键的,你不仅需要一个Blog页面来显示日志,至少还需要一个主页,而这个主页和你Blog的模板设计样式丝毫不冲突。在这个主页中需要显示些自己最近发表的内容,并且还显示了其它你需要展示的内容,比如自己的模板或者插件简介,自己做过的项目工程简介,About介绍,在线留言本,相册展示等等。

有些人可能有疑惑,我说的这些全能在Blog里展现啊,在侧边栏弄一串Page页面就好了嘛。的确,你可以这样做,但我想说的是,这些内容和你的Blog无关!你的Blog只是一篇一篇的日志和评论外再没其它东西,其它的东西都不属于你的Blog。而如果你非要把这些东西放在一起,那请Alt + F4,不耽误您时间了。

现在便是设计自己的首页了,我的方案是这样的:

显示最新的一篇日志,最近发表的5篇日志摘要,About,Tag云,基本的站点统信息,但是我没有写过插件模板,或者什么项目工程,所以我弄了个热门日志列表,但以后我做把自己需要展示的东西放到首页里。导航菜单的设计为,home为首页,blog为Blog页面,然后加了存档,推荐阅读(还没弄完),链接,Contact。

那么接下来你便需要设计自己的首页了!请继续关注教程(二)首页模板

参考资料:
What is “Using WordPress as CMS”?
Feature: 5 Reasons to Use WordPress as CMS
WordPress CMS

E-spacy正式发布

Posted in 网事如风 2007-01-28 CommentsCommentsComments,

E-spacy正式发布了,欣慰一下,感谢一下。

两天的调整,按照wordpress2.1的自定义主页功能,做了主页Home,里面只显示一片最新日志的正文和5篇最近发表的摘要。加入了热门日志的列表,Blog介绍,Tag云,统计信息。而Blog页面和以前的内容完全相同。这样做的好处便是加快了页面展示速度,方便来访。同时设计了新的Logo,调整了部分页面。

在这里感谢Since1984Michael两位朋友的鼎力支持和热心协助!

ps: 加过友情链接朋友们,麻烦请更换以前的voivo.de为新的E-spacy地址,谢谢了!

现在的模板设计采用了wp主页更换功能,E-spacy在中文WP用户中应该算是第一个吧,此方式精简后的主页很适合阅读,有点CMS的感觉了。具体整改方法将来后续日志中发表,敬请关注。