Hi folks, I’m having a lot of trouble with my Wordpress theme’s JS currently. It’s a mixture of PHP and JS but I think it’s the JS that’s the problem. My theme, F2 (http://srinig.com/wordpress/) has the ability to turn off each of its two sidebars, left or right.
It’s the right one I’d like to turn off but only for certain pages if possible. I know full well that there’s an option to toggle this within this code here but I need to adapt it so that I can select future pages to have right sidebar on or off at will.
Here’s the code, I’ve tried to work out a solution looking at template conditionals etc but to no avail. I’ve e-mailed the author as well. Sorry if this turns out to be a PHP problem, the two are mixed in my functions.php which I’m posting up. I’m pretty sure it’s the JQuery bit that needs adjusting.
Thanks for your help.
<?php
add_action( 'after_setup_theme', 'f2_setup' );
function f2_setup()
{
// This theme uses wp_nav_menu() in one location.
register_nav_menus( array(
'primary' => __( 'Primary Navigation', 'f2' ),
) );
}
function f2_nav_menu()
{ ?>
<ul>
<li><a href="<?php echo get_option('home'); ?>"><?php _e('Home', 'f2') ?></a></li>
<?php wp_list_pages('title_li=&depth=2&sort_column=menu_order&exclude='.f2_option('hmenu_exclude')) ?>
<li class="hmenu_rss"><a href="<?php bloginfo('rss2_url'); ?>"><?php _e('Feed', 'f2') ?></a></li>
</ul>
<?php
}
add_theme_support( 'automatic-feed-links' );
if ( function_exists('register_sidebar') ) {
register_sidebar(array(
'name' => 'Left Sidebar'
));
register_sidebar(array(
'name' => 'Right Sidebar'
));
}
$themename = "F2";
$shortname = "f2";
$version = "1.1.1";
load_theme_textdomain ('f2', get_template_directory().'/languages');
$options = array (
'header' => array (
'name' => __('Header', 'f2'),
'type' => 'section'
),
'header_img' => array (
'name' => __('Header background image?', 'f2'),
'desc' => '',
'type' => 'checkbox',
'default' => 'off',
'category' => 'header'
),
'header_img_url' => array(
'name' => __('Header background image URL', 'f2'),
'desc' => __('Tip: <a target="_blank" href="media-new.php">Upload your image here</a> and grab the url.', 'f2'),
'type' => 'text',
'default' => '',
'category' => 'header',
'th_class' => 'header_img_dependent',
'class' => 'url'
),
'header_img_repeat' => array(
'name' => __('Repeat header background image?', 'f2'),
'desc' => '',
'type' => 'checkbox',
'default' => 'on',
'category' => 'header',
'th_class' => 'header_img_dependent'
),
'header_textlogo' => array(
'name' => __('Show blog title & tagline in header?', 'f2'),
'desc' => __('You may uncheck this option if you use a background image as logo.', 'f2'),
'type' => 'checkbox',
'default' => 'on',
'category' => 'header',
'th_class' => 'header_img_dependent'
),
'header_height' => array(
'name' => __('Header height', 'f2'),
'type' => 'text',
'desc' => '',
'default' => '90',
'category' => 'header',
'class' => 'pixels'
),
'header_bg_color' => array(
'name' => __('Header background color', 'f2'),
'desc' => '',
'type' => 'text',
'default' => '#6d97b7',
'category' => 'header',
'class' => 'colorinput'
),
'header_title_color' => array(
'name' => __('Blog title font color', 'f2'),
'type' => 'text',
'desc' => '',
'default' => '#d0e0f0',
'category' => 'header',
'class' => 'colorinput',
),
'header_desc_color' => array(
'name' => __('Blog tagline font color', 'f2'),
'type' => 'text',
'desc' => '',
'default' => '#ffffff',
'category' => 'header',
'class' => 'colorinput',
),
'hmenu' => array(
'name' => __('Show horizontal menu?', 'f2'),
'desc' => '',
'type' => 'checkbox',
'default' => 'on',
'category' => 'header',
'class' => ''
),
'hmenu_exclude' => array(
'name' => __('Pages to be excluded in horizontal menu', 'f2'),
'desc' => __('Comma separated page IDs', 'f2'),
'type' => 'text',
'default' => '',
'category' => 'header',
'class' => '',
'th_class' => 'hmenu_dependent'
),
'hmenu_rss' => array(
'name' => __('Show RSS feed link in horizontal menu?', 'f2'),
'desc' => '',
'type' => 'checkbox',
'default' => 'on',
'category' => 'header',
'class' => '',
'th_class' => 'hmenu_dependent'
),
array (
'type' => 'section_close'
),
'sidebar' => array (
'name' => __('Sidebar', 'f2'),
'type' => 'section'
),
'sidebar_l' => array(
'name' => __('Show left sidebar?', 'f2'),
'desc' => '',
'type' => 'checkbox',
'default' => 'on',
'category' => 'sidebar'
),
'sidebar_l_width' => array(
'name' => __('Left sidebar width?', 'f2'),
'desc' => '',
'type' => 'text',
'default' => '200',
'category' => 'sidebar',
'class' => 'pixels',
'th_class' => 'sidebar_l_dependent'
),
'sidebar_l_fontsize' => array(
'name' => __('Left sidebar fontsize', 'f2'),
'desc' => '',
'type' => 'select',
'options' => array(
array('0.85em', __('small', 'f2')),
array('1em', __('medium', 'f2')),
array('1.15em', __('large', 'f2'))
),
'default' => '1em',
'category' => 'sidebar',
'class' => 'fontselect',
'th_class' => 'sidebar_l_dependent'
),
'sidebar_r' => array(
'name' => __('Show right sidebar?', 'f2'),
'desc' => '',
'type' => 'checkbox',
'default' => 'on',
'category' => 'sidebar'
),
'sidebar_r_width' => array(
'name' => __('Right sidebar width?', 'f2'),
'desc' => '',
'type' => 'text',
'default' => '200',
'category' => 'sidebar',
'class' => 'pixels',
'th_class' => 'sidebar_r_dependent'
),
'sidebar_r_fontsize' => array(
'name' => __('Right sidebar fontsize', 'f2'),
'desc' => '',
'type' => 'select',
'options' => array(
array('0.85em', __('small', 'f2')),
array('1em', __('medium', 'f2')),
array('1.15em', __('large', 'f2'))
),
'default' => '1em',
'category' => 'sidebar',
'class' => 'fontselect',
'th_class' => 'sidebar_r_dependent'
),
array (
'type' => 'section_close'
),
'posts' => array (
'name' => __('Blog posts', 'f2'),
'type' => 'section'
),
'content_fontsize' => array(
'name' => __('Blog post text size', 'f2'),
'desc' => '',
'type' => 'select',
'options' => array(
array('0.85em', __('small', 'f2')),
array('1em', __('medium', 'f2')),
array('1.15em', __('large', 'f2'))
),
'default' => '1em',
'category' => 'posts'
),
'show_author' => array(
'name' => __('Show post author?', 'f2'),
'desc' => '',
'type' => 'checkbox',
'default' => 'off',
'category' => 'posts'
),
'show_cat' => array(
'name' => __('Show post category?', 'f2'),
'desc' => '',
'type' => 'checkbox',
'default' => 'on',
'category' => 'posts'
),
'archive_posts' => array (
'name' => __('Full post or excerpt in archive pages?', 'f2'),
'desc' => __('Displaying only excerpt in archive pages is a better SEO practice.', 'f2'),
'type' => 'select',
'options' => array (
array('full', __('Full post', 'f2')),
array('excerpt', __('Only excerpt', 'f2'))
),
'default' => 'excerpt',
'category' => 'posts'
),
array (
'type' => 'section_close'
),
'footer' => array (
'name' => __('Footer', 'f2'),
'type' => 'section'
),
'footer_text' => array(
'name' => __('Footer text', 'f2'),
'desc' => '',
'type' => 'textarea',
'default' => '© '.date('Y').' '.get_bloginfo('name'),
'category' => 'footer'
),
array (
'type' => 'section_close'
),
'general' => array (
'name' => __('General options', 'f2'),
'type' => 'section'
),
'rounded_corners' => array (
'name' => __('Rounded corners?', 'f2'),
'desc' => __('Rounded corners add to the fluid nature of the theme. Note that this will add non-standard CSS code.', 'f2'),
'type' => 'checkbox',
'default' => 'off',
),
array (
'type' => 'section_close'
),
);
function f2_add_admin()
{
global $themename, $shortname, $options;
if( $_GET['page'] == basename(__FILE__) && isset($_REQUEST['action']) ) {
if(__('Save changes', 'f2') == $_REQUEST['action']) {
foreach($options as $key => $option) {
$id = $shortname.'_'.$key;
if($option['type'] == 'checkbox')
$value = $_REQUEST[$id]?'on':'off';
else
$value = isset($_REQUEST[$id])?stripslashes($_REQUEST[$id]):$option['default'];
update_option($id, $value);
}
header("Location: themes.php?page=functions.php&saved=true");
die;
}
else if(__('Reset to defaults', 'f2') == $_REQUEST['action']) {
foreach($options as $key => $value)
delete_option($shortname.'_'.$key);
header("Location: themes.php?page=functions.php&reset=true");
die;
}
}
add_theme_page($themename.' '.__('Settings', 'f2'), $themename.' '.__('Settings', 'f2'), 'edit_themes', basename(__FILE__), 'f2_admin');
}
function f2_admin() {
global $themename, $shortname, $version, $options;
$options = $options;
if ( isset($_REQUEST['saved']) ) echo '<div id="message" class="updated fade"><p><strong>'.__('Settings saved', 'f2').'</strong></p></div>';
if ( isset($_REQUEST['reset']) ) echo '<div id="message" class="updated fade"><p><strong>'.__('Settings reset', 'f2').'</strong></p></div>';
?>
<div class="wrap">
<h2><?php echo $themename.' '; _e('Settings', 'f2'); ?></h2>
<div id="poststuff" class="metabox-holder">
<div class="stuffbox">
<div class="inside">
<table><tr>
<td style="width:60%;vertical-align:top;">
<p><strong><?php echo $themename; ?> WordPress theme</strong> <?php _e('version', 'f2'); ?> <strong><?php echo $version; ?></strong>. <?php printf(__('Visit <a href="%s">theme page</a>', 'f2'), 'http://srinig.com/wordpress/themes/f2/'); ?>. <?php printf(__('View <a href="%s">readme</a>', 'f2'), get_bloginfo('template_url').'/readme.html'); ?>.</p>
<p>
<a href="#f2_header"><?php _e('Header Settings', 'f2'); ?></a> |
<a href="#f2_sidebar"><?php _e('Sidebar Settings', 'f2'); ?></a> |
<a href="#f2_posts"><?php _e('Posts Settings', 'f2'); ?></a> |
<a href="#f2_footer"><?php _e('Footer Settings', 'f2'); ?></a> |
<a href="#f2_general"><?php _e('General Settings', 'f2'); ?></a>
</p>
</td>
<td style="width:30%;vertical-align:top;">
<div style="max-width:240px;float:right;">
<p><?php _e('If you enjoy the theme, you can make a donation and support development. Thank you!', 'f2'); ?></p>
<div style="text-align:center;"><form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="7622318">
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form></div>
</div>
</td>
</tr></table>
</div>
</div>
<form method="post">
<?php
foreach($options as $key => $option) {
$id = $shortname.'_'.$key;
if($option['type'] != 'section' && $option['type'] != 'section_close')
$value = get_option($id, $option['default']);
switch ($option['type'] ) {
case "section": { ?>
<div class="stuffbox">
<h3 id="<?php echo $shortname.'_'.$key; ?>"><?php echo $option['name']; ?></h3>
<div class="inside">
<table class="form-table">
<?php break; }
case "section_close": { ?>
</table>
</div>
</div>
<?php break; }
case 'text': { ?>
<tr<?php if($option['th_class']) echo ' class="'.$option['th_class'].'"'; ?>>
<th scope="row"><label for="<?php echo $id; ?>"><?php echo $option['name']; ?></label></th>
<td>
<input type="text" class="<?php echo $option['class']; ?>"" name="<?php echo $id; ?>" id="<?php echo $id; ?>" value="<?php echo $value; ?>"<?php if($option['class'] == 'colorinput') echo ' size="7"'; elseif($option['class'] == 'pixels') echo ' size="3"'; elseif($option['class'] == 'url') echo ' size="60"'; ?> />
<?php if($option['class'] == 'pixels') echo "<span style='font-size:12px;'>px</span>"; ?>
<?php if($option['class'] == 'colorinput') { ?>
<a class="colorclose" style="cursor:pointer;"><?php _e('Close colorpicker', 'f2'); ?></a>
<div id="colorpicker-<?php echo $key; ?>" class="colorpicker"></div>
<?php } if($option['desc']) {
if ($option['class'] == 'url')
echo "<br />";
echo "<span class='description' style='font-size:10px'>".$option['desc']."</span>";
} ?>
</td>
</tr>
<?php break; }
case 'checkbox': { ?>
<tr<?php if($option['th_class']) echo ' class="'.$option['th_class'].'"'; ?>>
<th scope="row"><label for="<?php echo $id; ?>"><?php echo $option['name']; ?></label></th>
<td>
<input type="checkbox" class="<?php echo $option['class']; ?>" name="<?php echo $id; ?>" id="<?php echo $id; ?>"<?php if($value == 'on') echo ' checked="checked"'; ?> />
<?php if($option['desc']) echo "<span class='description' style='font-size:10px'>".$option['desc']."</span>"; ?>
</td>
</tr>
<?php break; }
case 'select': { ?>
<tr<?php if($option['th_class']) echo ' class="'.$option['th_class'].'"'; ?>>
<th scope="row"><label for="<?php echo $id; ?>"><?php echo $option['name']; ?></label></th>
<td>
<select class="<?php echo $option['class']; ?>" name="<?php echo $id; ?>" id="<?php echo $id; ?>">
<?php foreach ($option['options'] as $sel_opts) {
echo '<option value="'.$sel_opts[0].'"';
if($value == $sel_opts[0])
echo ' selected="selected"';
echo '>'.$sel_opts[1].'</option>';
} ?>
</select>
<?php if($option['desc']) echo "<span class='description' style='font-size:10px'>".$option['desc']."</span>"; ?>
</td>
</tr>
<?php break; }
case 'textarea': { ?>
<tr<?php if($option['th_class']) echo ' class="'.$option['th_class'].'"'; ?>>
<th scope="row"><label for="<?php echo $id; ?>"><?php echo $option['name']; ?></label></th>
<td>
<textarea class="<?php echo $option['class']; ?>" name="<?php echo $id; ?>" id="<?php echo $id; ?>" style="width:100%; height:6em;"><?php echo $value; ?></textarea>
<?php if($option['desc']) echo "<br /><span class='description' style='font-size:10px'>".$option['desc']."</span>"; ?>
</td>
</tr>
<?php break; }
}
}
?>
<input name="action" value="<?php _e('Save changes', 'f2'); ?>" class="button-primary" type="submit">
<input name="action" value="<?php _e('Reset to defaults', 'f2'); ?>" class="button" type="submit">
</form>
</div>
</div>
<?php
}
add_action('admin_menu', 'f2_add_admin');
function f2_head()
{
global $shortname, $options;
foreach($options as $key => $option) {
if($option['type'] != 'section' && $option['type'] != 'section_close')
$$key = get_option($shortname.'_'.$key, $option['default']);
}
if($header_img == 'on') {
$style['#header']['background-image'] = "url('{$header_img_url}')";
if($header_img_repeat == 'off')
$style['#header']['background-repeat'] = "no-repeat";
}
if($header_bg_color && $header_bg_color != '#')
$style['#header']['background-color'] = $header_bg_color;
if($header_textlogo == 'off')
$style['#headerlogo']['visibility'] = 'hidden';
if($header_height && $header_height != 90)
$style['#header']['height'] = $header_height.'px';
if($hmenu == 'off')
$style['#hmenu']['display'] = 'none';
if($hmenu_rss == 'off')
$style['#hmenu li.hmenu_rss']['display'] = 'none';
if($header_title_color && $header_title_color != '#')
$style['#headerlogo h1 a']['color'] = $header_title_color;
if($header_desc_color && $header_desc_color != '#')
$style['#headerlogo div.description']['color'] = $header_desc_color;
if($sidebar_r == 'off') {
$style['#container']['padding-right'] = 0;
$style['#wrapper']['border-right'] = 0;
$style['#wrapper']['margin-right'] = 0;
}
else if($sidebar_r_width) {
$style['#container']['padding-right'] = ($sidebar_r_width + 40).'px';
$style['#wrapper']['border-right-width'] = ($sidebar_r_width + 40).'px';
$style['#wrapper']['margin-right'] = '-'.($sidebar_r_width + 40).'px';
$style['#sidebar_right'] = array (
'width' => $sidebar_r_width.'px',
'margin-right' => '-'.($sidebar_r_width + 40).'px',
);
}
if($sidebar_l == 'off') {
$style['#container']['padding-left'] = 0;
$style['#wrapper']['border-left'] = 0;
$style['#wrapper']['margin-left'] = 0;
}
else if($sidebar_l_width) {
$style['#container']['padding-left'] = ($sidebar_l_width + 40).'px';
$style['#wrapper']['border-left-width'] = ($sidebar_l_width + 40).'px';
$style['#wrapper']['margin-left'] = '-'.($sidebar_l_width + 40).'px';
$style['#sidebar_left'] = array (
'width' => $sidebar_l_width.'px',
'margin-left' => '-'.($sidebar_l_width + 40).'px',
);
}
if($sidebar_r_fontsize)
$style['#sidebar_right']['font-size'] = $sidebar_r_fontsize;
if($sidebar_l_fontsize)
$style['#sidebar_left']['font-size'] = $sidebar_l_fontsize;
if($content_fontsize) {
$style['.postentry p']['font-size'] = $content_fontsize;
$style['.postentry ul']['font-size'] = $content_fontsize;
$style['.postentry ol']['font-size'] = $content_fontsize;
}
if($style) {
echo "\
<!-- Fluid Blue customized styles generated by functions.php -->\
";
echo "<style type=\\"text/css\\">\
";
foreach($style as $selector => $properties) {
echo $selector." {\
";
foreach ($properties as $property => $value)
echo "\ {$property}: {$value};\
";
echo "}\
";
}
echo "</style>\
";
}
if($rounded_corners == 'on')
echo '<link rel="stylesheet" href="'. get_bloginfo('template_url') . '/rounded-corners.css" type="text/css" media="screen" />'."\
";
if(is_file(get_template_directory().'/custom.css'))
echo '<link rel="stylesheet" href="'. get_bloginfo('template_url') . '/custom.css" type="text/css" media="screen" />'."\
";
}
add_action('wp_head', 'f2_head');
function f2_admin_head()
{
if( isset($_GET['page']) && $_GET['page'] == basename(__FILE__) ) {
$template_url = get_bloginfo('template_url');
?>
<script type="text/javascript" src="<?php echo get_bloginfo('template_url'); ?>/farbtastic/farbtastic.js"></script>
<link rel="stylesheet" href="<?php echo get_bloginfo('template_url'); ?>/farbtastic/farbtastic.css" type="text/css" />
<style type="text/css">
.colorpicker { display:none; }
.colorclose { display:none; }
</style>
<?php
}
}
add_action('admin_head', 'f2_admin_head');
function f2_admin_footer()
{
if( $_GET['page'] == basename(__FILE__) ) {
?>
<script type="text/javascript">
jQuery(document).ready(function() {
if(!jQuery('#f2_sidebar_l').is(':checked'))
jQuery('.sidebar_l_dependent').hide();
jQuery('#f2_sidebar_l').change(function() {
if(jQuery('#f2_sidebar_l').is(':checked'))
jQuery('.sidebar_l_dependent').show();
else
jQuery('.sidebar_l_dependent').hide();
});
if(!jQuery('#f2_sidebar_r').is(':checked'))
jQuery('.sidebar_r_dependent').hide();
jQuery('#f2_sidebar_r').change(function() {
if(jQuery('#f2_sidebar_r').is(':checked'))
jQuery('.sidebar_r_dependent').show();
else
jQuery('.sidebar_r_dependent').hide();
});
if(!jQuery('#f2_header_img').is(':checked'))
jQuery('.header_img_dependent').hide();
jQuery('#f2_header_img').change(function() {
if(jQuery('#f2_header_img').is(':checked'))
jQuery('.header_img_dependent').show();
else
jQuery('.header_img_dependent').hide();
});
if(!jQuery('#f2_hmenu').is(':checked'))
jQuery('.hmenu_dependent').hide();
jQuery('#f2_hmenu').change(function() {
if(jQuery('#f2_hmenu').is(':checked'))
jQuery('.hmenu_dependent').show();
else
jQuery('.hmenu_dependent').hide();
});
jQuery('#colorpicker-header_bg_color').farbtastic('#f2_header_bg_color');
jQuery('#colorpicker-header_title_color').farbtastic('#f2_header_title_color');
jQuery('#colorpicker-header_desc_color').farbtastic('#f2_header_desc_color');
jQuery('.colorinput').focus(function() {
if(jQuery(this).val() == '') jQuery(this).val('#');
jQuery(this).next('.colorclose').show();
jQuery(this).next('.colorclose').next('div.colorpicker').slideDown();
});
jQuery('.colorclose').click(function() {
jQuery(this).next('.colorpicker').slideUp();
jQuery(this).hide();
});
});
</script>
<?php
}
}
add_action('admin_footer', 'f2_admin_footer');
function f2_option($option)
{
global $shortname, $options;
return get_option($shortname.'_'.$option, $options[$option]['default']);
}
?>