Для каждой странички — свой sidebar
-
Здравствуйте, можно ли сделать для каждой странички свой sidebar, если можно, то как?
-
Можно. Убираете из
page.php
вызов<?php get_sidebar() ?>
и вместо него вписываете что-то вроде этого:<?php if (is_page(1)) include "sidebar1.php" elseif (is_page(2)) include "sidebar2.php" elseif (is_page(3)) include "sidebar3.php" else include "sidebar.php" ?>
Если, конечно, мы с вами понимаем под «страницей» одно и то же…
Или (для 2.7) get_sidebar(get_the_ID()). Тогда WP будет искать шаблоны sidebar-1.php, sidebar-2.php и т.д., в соответствии с ID записи. Если не найдет, загрузит sidebar.php.
Первые два способа более правильные, но вот еще третий) Можно в функциях темы создать три сайдбара (отдельно для страниц, записей и главной):
<?php if ( function_exists('register_sidebar') ) register_sidebar(array('name'=>'Home Sidebar', 'before_widget' => '<div class="block">', 'after_widget' => '</div><div class="blockfooter"></div>', 'before_title' => '<h3>', 'after_title' => '</h3>', )); ?> <?php if ( function_exists('register_sidebar') ) register_sidebar(array('name'=>'Post Sidebar', 'before_widget' => '<div class="block">', 'after_widget' => '</div><div class="blockfooter"></div>', 'before_title' => '<h3>', 'after_title' => '</h3>', )); ?> <?php if ( function_exists('register_sidebar') ) register_sidebar(array('name'=>'Page Sidebar', 'before_widget' => '<div class="block">', 'after_widget' => '</div><div class="blockfooter"></div>', 'before_title' => '<h3>', 'after_title' => '</h3>', )); ?>
Далее создать для каждого сайдбара свой PHP фаил
sidebar-page.php
sidebar-single.php
sidebar.php
и выводить в них виджеты. Этот способ использован в теме Revolution Chrome Jason SchullerБлагодарю, пробую…
Кстати разработал еще 1 способ, схожий с последним, но удобнее.
Создал новый сайдбар как php файл, но он не появляется в админке в разделе виджеты справа.
Может его еще надо где-то прописать?
Напишу, как сделал я (для меня наиболее удобно) при этом использовалось два сайдбара.
файл functions.php<?php if ( function_exists('register_sidebar') ) register_sidebar(array('name'=>'Index Sidebar 1')); ?> <?php if ( function_exists('register_sidebar') ) register_sidebar(array('name'=>'Index Sidebar 2')); ?> <?php if ( function_exists('register_sidebar') ) register_sidebar(array('name'=>'Single Sidebar 1')); ?> <?php if ( function_exists('register_sidebar') ) register_sidebar(array('name'=>'Single Sidebar 2')); ?> <?php if ( function_exists('register_sidebar') ) register_sidebar(array('name'=>'Page Sidebar 1')); ?> <?php if ( function_exists('register_sidebar') ) register_sidebar(array('name'=>'Page Sidebar 2')); ?>
файл sidebar1.php
<div class="side1"> <ul> <?php if (!is_single() & !is_page()) : ?> <?php dynamic_sidebar(1) ?> <?php endif; ?> <?php if (is_single()) : ?> <?php dynamic_sidebar(3) ?> <?php endif; ?> <?php if (is_page()) : ?> <?php dynamic_sidebar(5) ?> <?php endif; ?> </ul> </div>
файл sidebar2.php
<div class="side2"> <?php if (!is_single() & !is_page()) : ?> <?php dynamic_sidebar(2) ?> <?php endif; ?> <?php if (is_single()) : ?> <?php dynamic_sidebar(4) ?> <?php endif; ?> <?php if (is_page()) : ?> <?php dynamic_sidebar(6) ?> <?php endif; ?> </ul> </div>
- Тема «Для каждой странички — свой sidebar» закрыта для новых ответов.