当主题选项无法满足你的需求时,就要使用代码继续定制化。下面几段代码是通过修改子模板中的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已经变了很多,文档也需要付费账号才能查看,所以这篇文章的参考价值不大了。