当主题选项无法满足你的需求时,就要使用代码继续定制化。下面几段代码是通过修改子模板中的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就是靠这些家伙干活的。

Genesis Hooks
Genesis Filters

Genesis 模板钩子位置的直观展示

下面开始修改模板,打开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 &copy; &middot; <a href="http://mydomain.com">My Custom Link</a> &middot; 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() {
    ?>

    &copy; Copyright 2011 <a href="http://mydomain.com/">My Domain</a> 
    &middot; All Rights Reserved &middot; Powered by <a href="http://wordpress.org/">WordPress</a> 
    &middot; <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;
}

修改前后对比


修改前页面顶部的样子


修改后主菜单和面包屑位置都变了


修改前footer的样子


修改后footer的样子

位置调换后还需要调整CSS修复错位的地方,这里不再介绍,编辑child/style.css修改样式。

通过代码修改Genesis子模板的实例还很多,这些是比较基本的,后续还将介绍更多修改实例。

2条留言

  1. 这个贴的图片链接都不显示了嘢

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

评论功能已关闭