当主题选项无法满足你的需求时,就要使用代码继续定制化。下面几段代码是通过修改子模板中的functions.php来进一步定制化Genesis Sample Child Theme主题。如果你还没有安装Genesis模板,请先看Genesis Framework 子模板安装与配置实例。本文将基于上一篇文章配置的结果进一步修改。
修改主题需要一些基本的wordpress函数知识,主要有
add_action( $tag, $function_to_add, $priority, $accepted_args );
add_filter( $tag, $function_to_add, $priority, $accepted_args );
remove_action( $tag, $function_to_remove, $priority, $accepted_args );
remove_filter( $tag, $function_to_remove, $priority, $accepted_args );
需要了解一些Genesis Framework的Hooks和Filters,Genesis Framework就是靠这些家伙干活的。
下面开始修改模板,打开child文件夹下的functions.php,在文件末尾开始添加代码,不需要关心已经有的代码。
例一:强制首页为全宽度,post为两栏式widget栏在右侧,page为两栏式widget栏在左侧
add_filter('genesis_pre_get_option_site_layout', 'my_layout_settings');
function my_layout_settings($opt) {
if (is_front_page())
$opt = 'full-width-content';
else if (is_page()) {
$opt = 'content-sidebar';
} else if (is_single()) {
$opt = 'sidebar-content';
}
return $opt;
}例二:修改footer的版权信息
add_filter('genesis_footer_creds_text', 'custom_footer_creds_text');
function custom_footer_creds_text($creds) {
$creds = 'Copyright © · <a href="http://mydomain.com">My Custom Link</a> · Built on the <a href="http://www.studiopress.com/themes/genesis" title="Genesis Framework">Genesis Framework</a>';
return $creds;
}例三:修改整个footer的信息
需要移除默认的footer action,加上我们自己定义的action
<?php
remove_action('genesis_footer', 'genesis_do_footer');
add_action('genesis_footer', 'child_do_footer');
function child_do_footer() {
?>
© Copyright 2011 <a href="http://mydomain.com/">My Domain</a>
· All Rights Reserved · Powered by <a href="http://wordpress.org/">WordPress</a>
· <a href="http://mydomain.com/wp-admin">Admin</a>
<?php
}
?>例四:将主导航菜单(Primary Navigation)移动到header前面,也就是页面顶部,默认是在header和Secondary Navigation之间
Remove_action('genesis_after_header','genesis_do_nav');
Add_action('genesis_before_header','genesis_do_nav');只用两句代码就改变了整个导航的位置,方便性和代码重用性可见一斑
例五:修改面包屑导航的位置
remove_action( 'genesis_before_loop', 'genesis_do_breadcrumbs' ); add_action( 'genesis_after_header', 'genesis_do_breadcrumbs' );
例六:修改面包屑导航默认的文字,例如可以将Home改为博客名称,分隔符改为“/”,还可以简单修改html结构
add_filter( 'genesis_breadcrumb_args', 'child_breadcrumb_args' );
/**
* Amend breadcrumb arguments.
*
* @author Gary Jones
*
* @param array $args Default breadcrumb arguments
* @return array Amended breadcrumb arguments
*/
function child_breadcrumb_args( $args ) {
$args['home'] = '博客名称';
$args['sep'] = ' / ';
$args['list_sep'] = ', '; // Genesis 1.5 and later
$args['prefix'] = '
<div class="breadcrumb">';
$args['suffix'] = '</div>
';
$args['heirarchial_attachments'] = true; // Genesis 1.5 and later
$args['heirarchial_categories'] = true; // Genesis 1.5 and later
$args['display'] = true;
$args['labels']['prefix'] = 'You are here: ';
$args['labels']['author'] = 'Archives for ';
$args['labels']['category'] = 'Archives for '; // Genesis 1.6 and later
$args['labels']['tag'] = 'Archives for ';
$args['labels']['date'] = 'Archives for ';
$args['labels']['search'] = 'Search for ';
$args['labels']['tax'] = 'Archives for ';
$args['labels']['post_type'] = 'Archives for ';
$args['labels']['404'] = 'Not found: '; // Genesis 1.5 and later
return $args;
}修改前后对比
位置调换后还需要调整CSS修复错位的地方,这里不再介绍,编辑child/style.css修改样式。
通过代码修改Genesis子模板的实例还很多,这些是比较基本的,后续还将介绍更多修改实例。


这个贴的图片链接都不显示了嘢
链接里用的静态域名已经不用了, 所以不显示,但也懒得更新。Genesis已经变了很多,文档也需要付费账号才能查看,所以这篇文章的参考价值不大了。