Refactor sidebar configuration
Instead of editing an if statement (which could get ugly quickly), just edit configuration arrays of conditional tags and page template checks.
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
### HEAD
|
### HEAD
|
||||||
|
* Change roots_sidebar into a more explicit configuration array
|
||||||
* Re-organize configuration/setup files
|
* Re-organize configuration/setup files
|
||||||
* Update to jQuery 1.8.2
|
* Update to jQuery 1.8.2
|
||||||
* Refactor/simplify Roots vCard Widget
|
* Refactor/simplify Roots vCard Widget
|
||||||
|
|||||||
2
base.php
2
base.php
@@ -17,7 +17,7 @@
|
|||||||
<div id="main" class="<?php roots_main_class(); ?>" role="main">
|
<div id="main" class="<?php roots_main_class(); ?>" role="main">
|
||||||
<?php include roots_template_path(); ?>
|
<?php include roots_template_path(); ?>
|
||||||
</div>
|
</div>
|
||||||
<?php if (roots_sidebar()) : ?>
|
<?php if (roots_display_sidebar()) : ?>
|
||||||
<aside id="sidebar" class="<?php roots_sidebar_class(); ?>" role="complementary">
|
<aside id="sidebar" class="<?php roots_sidebar_class(); ?>" role="complementary">
|
||||||
<?php get_template_part('templates/sidebar'); ?>
|
<?php get_template_part('templates/sidebar'); ?>
|
||||||
</aside>
|
</aside>
|
||||||
|
|||||||
@@ -67,6 +67,10 @@ This file is a placeholder for you to put in [custom post types](http://codex.wo
|
|||||||
|
|
||||||
This file handles all of the CSS and JavaScript.
|
This file handles all of the CSS and JavaScript.
|
||||||
|
|
||||||
|
### sidebar.php
|
||||||
|
|
||||||
|
Class which provides a simple configuration interface to define what pages you want to show the sidebar on.
|
||||||
|
|
||||||
#### Stylesheets
|
#### Stylesheets
|
||||||
|
|
||||||
Stylesheets are enqueued in the following order:
|
Stylesheets are enqueued in the following order:
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
require_once locate_template('/lib/utils.php'); // Utility functions
|
require_once locate_template('/lib/utils.php'); // Utility functions
|
||||||
require_once locate_template('/lib/init.php'); // Initial theme setup and constants
|
require_once locate_template('/lib/init.php'); // Initial theme setup and constants
|
||||||
|
require_once locate_template('/lib/sidebar.php'); // Sidebar class
|
||||||
require_once locate_template('/lib/config.php'); // Configuration
|
require_once locate_template('/lib/config.php'); // Configuration
|
||||||
require_once locate_template('/lib/activation.php'); // Theme activation
|
require_once locate_template('/lib/activation.php'); // Theme activation
|
||||||
require_once locate_template('/lib/cleanup.php'); // Cleanup
|
require_once locate_template('/lib/cleanup.php'); // Cleanup
|
||||||
|
|||||||
@@ -9,18 +9,37 @@ add_theme_support('rewrite-urls'); // Enable URL rewrites
|
|||||||
add_theme_support('h5bp-htaccess'); // Enable HTML5 Boilerplate's .htaccess
|
add_theme_support('h5bp-htaccess'); // Enable HTML5 Boilerplate's .htaccess
|
||||||
add_theme_support('bootstrap-top-navbar'); // Enable Bootstrap's fixed navbar
|
add_theme_support('bootstrap-top-navbar'); // Enable Bootstrap's fixed navbar
|
||||||
|
|
||||||
// Define which pages shouldn't have the sidebar
|
|
||||||
function roots_sidebar() {
|
/**
|
||||||
if (is_404() || is_page_template('page-custom.php')) {
|
* Define which pages shouldn't have the sidebar
|
||||||
return false;
|
*
|
||||||
} else {
|
* See lib/sidebar.php for more details
|
||||||
return true;
|
*/
|
||||||
}
|
function roots_display_sidebar() {
|
||||||
|
$exclude = new Roots_Sidebar(
|
||||||
|
/**
|
||||||
|
* Conditionals tag checks (http://codex.wordpress.org/Conditional_Tags)
|
||||||
|
* Any of these conditional tags that return true won't show the sidebar
|
||||||
|
*/
|
||||||
|
array(
|
||||||
|
'404',
|
||||||
|
'front_page'
|
||||||
|
),
|
||||||
|
/**
|
||||||
|
* Page template checks (via is_page_template())
|
||||||
|
* Any of these page templates that return true won't show the sidebar
|
||||||
|
*/
|
||||||
|
array(
|
||||||
|
'page-custom'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
return $exclude->display;
|
||||||
}
|
}
|
||||||
|
|
||||||
// #main CSS classes
|
// #main CSS classes
|
||||||
function roots_main_class() {
|
function roots_main_class() {
|
||||||
if (roots_sidebar()) {
|
if (roots_display_sidebar()) {
|
||||||
echo 'span8';
|
echo 'span8';
|
||||||
} else {
|
} else {
|
||||||
echo 'span12';
|
echo 'span12';
|
||||||
|
|||||||
47
lib/sidebar.php
Normal file
47
lib/sidebar.php
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines whether or not to display the sidebar based on an array of conditional tags or page templates.
|
||||||
|
*
|
||||||
|
* If any of the is_* conditional tags or is_page_template(template_file) checks return true, the sidebar will NOT be displayed.
|
||||||
|
*
|
||||||
|
* @param array list of conditional tags (http://codex.wordpress.org/Conditional_Tags) without the 'is_' prefix
|
||||||
|
* @param array list of templates without the '.php' extension. These will be checked via is_page_template()
|
||||||
|
*
|
||||||
|
* @return boolean True will display the sidebar, False will not
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class Roots_Sidebar {
|
||||||
|
const EXTENSION = '.php';
|
||||||
|
private $conditionals;
|
||||||
|
private $templates;
|
||||||
|
public $display = true;
|
||||||
|
|
||||||
|
function __construct($conditionals = array(), $templates = array()) {
|
||||||
|
$this->conditionals = $conditionals;
|
||||||
|
$this->templates = $templates;
|
||||||
|
|
||||||
|
foreach($this->conditionals as $conditional_tag) {
|
||||||
|
if ($this->check_conditional_tag($conditional_tag)) {
|
||||||
|
$this->display = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($this->templates as $page_template) {
|
||||||
|
if ($this->check_page_template($page_template)) {
|
||||||
|
$this->display = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function check_conditional_tag($conditional_tag) {
|
||||||
|
$function = "is_$conditional_tag";
|
||||||
|
return $function();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function check_page_template($page_template) {
|
||||||
|
return is_page_template($page_template . self::EXTENSION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
Reference in New Issue
Block a user