WordPress不仅可以做博客,还能做其他类型的网站,例如企业网站、电子商务网站等等。这些网站的首页不能是博客的样子,需要更加定制化一些。Genesis框架给我们提供了利用钩子函数修改模板的方法,那么有没有更直观的方法呢?
现在我们尝试修改首页的样子,后台->设置->阅读中可以设定首页为一个静态页面,只要定制这个静态页的模板就好。但还有另一种方式,也是很多主题再用的方式,在主题目录中创建一个文件叫home.php,根据WordPress的结构优先级,这个文件是优先级最高的首页文件,即使后台设定使用blog作为首页,有了这个文件首页也会被它替代。
我们就采用home.php的方法。
如果你打开Genesis Framework下的index.php或page.php等模板文件,你会发现里面只有一句代码
genesis();
这句代码有什么用?看一看源代码便知,genesis()函数的源代码位于lib/framework.php中,如下
function genesis() { get_header(); do_action( 'genesis_before_content_sidebar_wrap' ); ?> <div id="content-sidebar-wrap"> <?php do_action( 'genesis_before_content' ); ?> <div id="content" class="hfeed"> <?php do_action( 'genesis_before_loop' ); do_action( 'genesis_loop' ); do_action( 'genesis_after_loop' ); ?> </div><!-- end #content --> <?php do_action( 'genesis_after_content' ); ?> </div><!-- end #content-sidebar-wrap --> <?php do_action( 'genesis_after_content_sidebar_wrap' ); get_footer(); }
原来这个函数负责输出本该写在模板文件里的代码,那么思路就有了,把函数的内容拷贝到home.php中,把我们需要修改的地方替换成自己写的代码,我们就用genesis提供的sample child theme作为例子,在child目录下放一个home.php,拷贝下面的代码
<?php //content of home.php get_header(); do_action('genesis_before_content_sidebar_wrap'); ?> <div id="content-sidebar-wrap"><?php do_action('genesis_before_content'); ?> <div class="hfeed" id="content"> <?php //这里本来是输出博客内容的<br /> //我们把它换成自己的代码<br /> echo '这是我自定义的内容'; ?></div> <!-- end #content --> <?php do_action('genesis_after_content'); ?></p> </div> <!-- end #content-sidebar-wrap --> <?php do_action('genesis_after_content_sidebar_wrap'); get_footer();
访问首页,可以看到页面已经变成了下面的样子,虽然我没做任何设置上的更改
删掉的部分就是一篇一篇的显示blog文章的代码,把这部分换成slideshow加一些widget(特色文章,目录文章、产品展示等等),就可以做成企业主题或cms主题。而其他部分不需要更改,就留在那里,非常方便。