Разные сайдбары для разных шаблонов страниц

LD
На сайте с 20.05.2015
Offline
155
911

Добрый день! Имеется сайт на WP. Для разных разделов сайта использую различные шаблоны. Теперь встала необходимость для разных разделов прикрутить разные сайдбары? Подскажите пож-та как это реализовать?

Код вызова боковых сайдбаров сейчас выглядит следующим образом:

switch ( frontier_option('column_layout', 'col-cs') ) {

case 'col-sc' :
get_sidebar('left');
break;

case 'col-cs' :
get_sidebar('right');
break;

case 'col-ssc' :
case 'col-scs' :
case 'col-css' :
get_sidebar('left');
get_sidebar('right');
break;
}
?>
LD
На сайте с 20.05.2015
Offline
155
#1

Вот что сделал:

1. Залил на хостинг новый сайдбар - "сайдбарвитрина.php"

2. Зарегистрировал его в functions.php:

register_sidebar( array(

'name' => __('Sidebar – Left', 'frontier'),
'id' => 'widgets_sidebar_left',
'description' => __('For layouts and templates with a left sidebar.', 'frontier'),
'before_widget' => '<div id="%1$s" class="widget-sidebar frontier-widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h4 class="widget-title">',
'after_title' => '</h4>') );

register_sidebar( array(
'name' => __('Sidebar &ndash; Right', 'frontier'),
'id' => 'widgets_sidebar_right',
'description' => __('For layouts and templates with a right sidebar.', 'frontier'),
'before_widget' => '<div id="%1$s" class="widget-sidebar frontier-widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h4 class="widget-title">',
'after_title' => '</h4>') );

register_sidebar( array(
'name' => __('сайдбарвитрина', 'frontier'),
'id' => 'сайдбарвитрина',
'description' => __('Для рубрики витрина.', 'frontier'),
'before_widget' => '<div id="%1$s" class="widget-sidebar frontier-widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h4 class="widget-title">',
'after_title' => '</h4>') );

Теперь у меня отображается 3 сайдбара в админ. панеле. Идем дальше...

3. Захожу в шаблон страницы, в которой хочу видеть новый сайдбар и внизу вижу следующее:

<?php

switch ( frontier_option('column_layout', 'col-cs') ) {
case 'col-sc' :
get_sidebar('left');
break;

case 'col-cs' :
get_sidebar('right');
break;

case 'col-ssc' :
case 'col-scs' :
case 'col-css' :
get_sidebar('left');
get_sidebar('right');
break;
}
?>

Как бы его не правил вместо сайдбара вылазит просто список всех статей сайта..... Где ошибься?

В functions.php нашел еще следующее:

/*-------------------------------------

Get Layout Values - Theme Setup
--------------------------------------*/
function frontier_get_layout_values() {
global $content_width, $frontier_container, $frontier_header, $frontier_content, $frontier_side_left, $frontier_side_right, $footer_widget_css,
$frontier_2col_content, $frontier_2col_sidebar, $frontier_3col_content, $frontier_3col_sidebar1, $frontier_3col_sidebar2;

$frontier_container = frontier_option('width_container', 960);

$frontier_header = frontier_option('header_height', 140);

$frontier_2col_content = frontier_option('width_two_column', 65);
$frontier_2col_sidebar = 100 - frontier_option('width_two_column', 65);

$frontier_3col_value = explode( '-', frontier_option('width_three_column', '25-75') );
$frontier_3col_content = $frontier_3col_value[1] - $frontier_3col_value[0];
$frontier_3col_sidebar1 = $frontier_3col_value[0];
$frontier_3col_sidebar2 = 100 - $frontier_3col_value[1];

switch ( frontier_option('column_layout', 'col-cs') ) {
case 'col-c' :
$frontier_content = 100;
$content_width = $frontier_container - 42;
break;

case 'col-sc' :
case 'col-cs' :
$frontier_content = $frontier_2col_content;
$frontier_side_left = $frontier_2col_sidebar;
$frontier_side_right = $frontier_2col_sidebar;
$content_width = intval( $frontier_container * ( $frontier_content / 100 ) ) - 38;
break;

case 'col-ssc' :
case 'col-css' :
case 'col-scs' :
$frontier_content = $frontier_3col_content;
$frontier_side_left = $frontier_3col_sidebar1;
$frontier_side_right = $frontier_3col_sidebar2;
$content_width = intval( $frontier_container * ( $frontier_content / 100 ) ) - 38;
break;
}
}

/*-------------------------------------
Layout CSS - Theme Setup
--------------------------------------*/
function frontier_print_layout() {
global $frontier_version, $frontier_container,
$frontier_content, $frontier_side_left, $frontier_side_right;

$header_min = ( frontier_option('header_logo') ) ? 0 : frontier_option('header_height', 140);
echo '
<meta property="Frontier Theme" content="' . $frontier_version . '" />
<style type="text/css" media="screen">
#container {width: ' . $frontier_container . 'px;}
#header {min-height: ' . $header_min . 'px;}
#content {width: ' . $frontier_content . '%;}
#sidebar-left {width: ' . $frontier_side_left . '%;}
#sidebar-right {width: ' . $frontier_side_right . '%;}
</style>' . "\n";
}

/*-------------------------------------
Layout CSS for Pages - Theme Setup
--------------------------------------*/
function frontier_print_layout_page() {
global $frontier_2col_content, $frontier_2col_sidebar,
$frontier_3col_content, $frontier_3col_sidebar1, $frontier_3col_sidebar2;
echo '
<style type="text/css" media="screen">
.page-template-page-cs-php #content, .page-template-page-sc-php #content {width: ' . $frontier_2col_content . '%;}
.page-template-page-cs-php #sidebar-left, .page-template-page-sc-php #sidebar-left,
.page-template-page-cs-php #sidebar-right, .page-template-page-sc-php #sidebar-right {width: ' . $frontier_2col_sidebar . '%;}
.page-template-page-scs-php #content {width: ' . $frontier_3col_content . '%;}
.page-template-page-scs-php #sidebar-left {width: ' . $frontier_3col_sidebar1 . '%;}
.page-template-page-scs-php #sidebar-right {width: ' . $frontier_3col_sidebar2 . '%;}
</style>' . "\n\n";
}

Может здесь что нужно дописать?

A
На сайте с 23.01.2016
Offline
0
#2

Вот это

switch ( frontier_option('column_layout', 'col-cs') ) { 

case 'col-sc' :
get_sidebar('left');
break;

case 'col-cs' :
get_sidebar('right');
break;

case 'col-ssc' :
case 'col-scs' :
case 'col-css' :
get_sidebar('left');
get_sidebar('right');
break;
}

Это подключение соответствующих файлов сайдбара. ТО есть у вас при определенном выборе опции будет подключаться тот или иной файл или оба

А для того чтобы в разных разделах выводить вам надо прописывать условия в этих файлах для зарегистрированных уже областей виджетов. Например, вам надо показывать виджет только в статьях. Ищите файл sidebar-left.php и в нем пишете

<?php if ( is_single() ) : ?>


<div id="true-side" class="sidebar">

<?php dynamic_sidebar( 'widgets_sidebar_left ); ?>

</div>

<?php endif; ?>

И данный виджет будет показан только в записях

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий