前言:
你是否曾经因为心爱的模板具有某些小瑕疵而“纠结”不已呢?我就囧了这么一回。刚刚实现了侧边栏的动态化(跟随屏幕滚动),但是由于侧边栏只有一个,小工具内容又多,屏幕很难整个容下一个狭长的侧边栏。因此,我开始构思,能否增加一个侧边栏,专门存放那些需要跟随滚动的内容呢。
解决方案:
在开始动手之前,我们需要简单了解一下 wordpress 关于 sidebar (侧边栏)的运行原理。
大多数模板的侧边栏文件通常为 sidebar-*.php ,其中“*”为自定义的名字,对于某些单侧边栏的模板,通常只是命名为 sidebar.php 。我们要增加一个新的侧边栏,就需要按照规定的命名规则建立一个新的侧边栏文件。
不同页面对不同 sidebar 的调用都是通过 get_sidebar() 函数进行的, get_sidebar() 的参数为侧边栏文件名中自定义的部分(即为“*”的部分),默认情况下调用 sidebar.php 。例如我需要在模板 index.php 中调用 sidebar-front.php 文件中定义的侧边栏,只需要在 index.php 中的相应位置加上 get_sidebar( ‘front’ ) 即可。
只是新建侧边栏文件和调用还不够,因为此时 wordpress 程序本身还没有意识到有新的侧边栏加入进来,所以还需要我们对其进行注册。侧边栏的注册一般是在 functions.php 中调用 register_sidebars() 函数进行的,函数的参数为整型,表示侧边栏的数量。例如目前的模板有 n 个侧边栏,我需要增加一个侧边栏,那么侧边栏的总数则为 n + 1 ,只需要调用
register_sidebars( n + 1 ) 即可。
做足了功课,就可以动手实践了。下面以 glossy stlyo 1.04 为例进行演示。
新建侧边栏文件:
在 glossy stlyo 的模板根目录下,只有一个 sidebar.php 文件,此模板为单侧边栏模板。我们新建一个侧边栏文件,命名为 sidebar-2.php ,并将 sidebar.php 中的内容原样复制到 sidebar-2.php 中。接着我们要做一些修改,用以让 wordpress 程序区分两个侧边栏。
修改前的部分内容为:
<div id="sidebar" role="complementary"> <div id="sidebarhead"></div> <div id="sidebarinner"> <ul> <?php /* Widgetized sidebar, if you have the plugin installed. */ if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
修改后为:
<div id="sidebar-2"></div> <div id="sidebar" role="complementary"> <div id="sidebarhead"></div> <div id="sidebarinner"> <ul> <?php /* Widgetized sidebar, if you have the plugin installed. */ if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(2) ) : ?>
dynamic_sidebar() 函数的参数为整型,表示加载第 n 个侧边栏。另外在第一行新增的内容是为了给新侧边栏增加一个标示id,用于制作动态侧边栏用,可以无视。
各页面对侧边栏的调用:
这部分比较简单,只需要在原先调用过 get_sidebar() 的文件里再加上你的调用函数即可。例如 glossy stylo 的 index.php 的部分内容如下:
<?php get_sidebar(); ?> <?php get_footer(); ?>
增加对 sidebar-2.php 的调用,修改后为:
<?php get_sidebar(); ?> <?php get_sidebar( '2' ); ?> <?php get_footer(); ?>
侧边栏的注册:
这里需要修改 functions.php 中的内容,例如 glossy stylo 的 functions.php 的部分内容如下:
if ( function_exists('register_sidebar') ) { register_sidebar ( array ( 'before_widget' => '<li id="%1$s" class="widget %2$s">', 'after_widget' => '</li>', 'before_title' => '<h2 class="widgettitle">', 'after_title' => '</h2>', ) ); }
修改为:
if ( function_exists('register_sidebars') ) register_sidebars(2);
如此一来,新建侧边栏的任务便大功告成。享受成就感带来的快感之前还要明白一个道理,重要的不是去为 blog 新增一个功能,而是在不断折腾的过程中锻炼自己。
去帮趣博客站只为推荐更好的项目,本站全部为原创文章
过来涨涨姿势