網生@誌 | zEUS.'Blog

首页 » 与我有关 » 2006-12-26 »

模板修改手札之分离Sidebar

Tag:

引言:
众所周知,“JavaScript”是页面展开速度的大敌。所以为了保证速度,我尽量少在页面上添加JS。但由于wp-poll这个插件我一直没弄好,所以不得以选择了PollDaddy.com作为我的投票系统。什么是PollDaddy.com ?你可以参见 JC的这篇日志 。引用“PollDaddy”投票的同时就意味着在页面上添加了一段JS。据我观察每当页面刷到有JS的地方总会停顿下来,若JS没有被加载完成,那么JS后面的内容均不能显示。由于页面的展开顺序是由程序决定的,因而我尽可能把JS放在后面执行,这样就不会对页面的载入有太大影响。

插件也影响到了页面的展开速度,有的插件执行效率高,那么对整个页面的影响微乎其微。若是一个效率低下的插件的话,就比较惨了…不过和JS相比,插件的影响要稍小一些~~

正题:
每开一个页面(page.php)或者一篇日志(single.php),PollDaddy.com 都会加载一次,页面展开速度和页面总体外观都会受到一定影响,那么有什么办法可以尽可能减少 PollDaddy.com 对页面加载速度的影响呢?我想到的一个方法就是在打开page页面和single日志的时候不加载 PollDaddy.com 。

由于PollDaddy.com 位于 sidebar上,那么我可以另外做一个没有JS的sidebar来代替page页面和single日志上的sidebar。于是我做了一个新sidebar:“postsidebar.php”,上传到主题的根目录下,然后进入wp后台→外观→主题编辑器→编辑“single.php”,找到

<?php get_sidebar(); ?>

替换为:

<?php get_postsidebar(); ?>

我本以为 get 语句可以直接调用“.php”文件,可事实却并非如此。修改完毕之后我刷新single日志页面,发现一句错误提示,大意是没有找到“get_postsidebar”这个函数。然后我就想方设法的定义“postsidebar”,可最终都失败了。
但我实在不想就这么放弃,于是请教了hvl小O,他们给了我一些很好的建议和理论上的帮助,然后我又在Internet上搜到这么一篇文章:Sidebar一分為二。然后如此如此这般这般…于是乎大工告成!?

代替原来sidebar上的内容并非是更换sidebar文件,而是直接修改sidebar文件。在sidebar显示它上面的内容之前我们可以给它一个条件来决定是否显示该内容。例如我的sidebar被分成了3个部分,就拿第一部分“subcontainer”来说,先找到:

<?php if ( !function_exists(‘dynamic_sidebar’)
|| !dynamic_sidebar(1) ) : ?>

然后在它的前面加上一段:

<?php if (is_home()||is_page()) { ?>

最后在这段PHP if 语句的末尾加上:

<?php } ?>

那么我们就决定了sidebar上的“subcontainer”只在 home 页和 page 页显示,它就不会在 single 页上显示了。然后我在“subcontainer”这个类后面再加上一个新的“subcontainer”类,并赋给里面的内容另外的显示条件:

<?php if (is_single()) { ?>

和相应的:

<?php } ?>

那么,新的“subcontainer”类中的内容就只会在 single 页上显示了。相应的我把sidebar里的另外2个部分的显示内容也做修改。这样在 single 页上,我不仅去掉 PollDaddy.com 提升了页面展开的速度,而且在sidebar上放上了和日志相关的内容,给读者提供了一定的信息量。(不要BS我去掉PollDaddy.com的JS却放上了Adsense的JS啊 -_- 其实Adsense这个JS的载入速度是相当快的…)

花了大半天的时间终于达成了自己想要的效果,总体来说还是很满意的。不过我还是发现了一个问题,我定义了这些sidebar的内容可以分别显示在 home 页、page 页、single 页上,但它们无法显示在 分类汇总 和 标签汇总 页面上……貌似可以使用“ if—else”的条件语句来达成效果,可惜我不知道它们在PHP里具体的格式 T_T 还望PHP达人助我一臂之力啊!

zEUS.

« »

已经有84人发表了评论

  1. 哈哈,你也换成k2了啊

  2. 这年头怎么都是wordpress啊~

    谁用用其他的~?

  3. 好久没有看到更新了,我也好几天没有看了,这几天每天回来就是捣鼓我那破论坛,到现在也没有起色,用别人的论坛程序,用别人的代码插件。faint~~~

    不过看到了wp有了这么多拥趸, 我可以上了。。。不过需要准备一些工作。哈。。。

  4. 一看就知道,这小子用的是Freehostia的空间

  5. zeus,你的主机是国外的免费虚拟主机?介绍一下,我正愁没一个放心php测试环境

  6. 我这头晕
    不过你的代码现在也不错了,也只有300多行,跟我差不多了。

  7. To hvl:其实我一直在找花哨和速度的平衡点…
    另外,我的主机也不在国内…国内是不可能有这么稳定并且免费的虚拟主机提供商的。
    至于PHP,俺可真是一点都不懂啊 -_-|||

  8. PS. require();认为可以给你调用php文件。不过wordpress的语法都这样了。。。

  9. 我真搞不懂WP的PHP语法。可以这样用!?被他们defined了。

    另外我认为你们WP的网站都太花俏了,你们一般都有1000多行代码,我最多就100行,所以我的主机虽然在美国但访问还是那么快。

文章反相链接 Pingback/Trackback

  1. Aurore Gabouer
  2. ghost hunts
  3. internet marketing forum
  4. Phil Cannella
  5. Dallas Family Portrait Photographer
  6. Dallas Advertising
  7. servinion
  8. craftsman parts lookup power equipment
  9. 博客版本升级 1.03 at I Should Do…| zEUS.’Blog
  10. wordpress模板 FH Freedom blue 0.2

发表您的看法