виджеты .. непонятно …

никак не могу понят в чем дело .. есть бесплатная тема, в ней автор вроде прописал все для ввода допольнительных виджетов, только когда перетаскиваю какой нить виджет, основные пункты сайдбара исчезают и появляется только новый виджет.

в файл functions.php есть вроде нужный код

if ( function_exists('register_sidebar') )
	register_sidebar(array(
		'name' => __('Sidebar','TechBlog'),
		'before_widget' => '<div id="%1$s" class="widget_style">',  
		'after_widget' => '</div>', 
		'before_title' => '<h2>',
		'after_title' => '</h2>',
	));

в siderbar.php тоже вроде все норм

[quote]<!–side_bar –>

<div id="side_bar" class="column">
<div class="indent">
<div class="widget_style" id="statusbar">

<?php /* If this is a 404 page */ if (is_404()) { ?>

<?php } ?>
</div>
<?php if ( function_exists(‘dynamic_sidebar’) && dynamic_sidebar(__(‘Sidebar’,’theme406′)) ) : else : ?>
<div id="categories" class="widget_style">
<h2><?php _e(‘Страницы’,’theme406′); ?></h2>

<ul >
<?php wp_list_pages(‘show_count=0&title_li=0’); ?>
</ul>
</div>

<div id="categories" class="widget_style">
<h2><?php _e(‘Рубрики’,’theme406′); ?></h2>
<ul >
<?php wp_list_categories(‘show_count=0&title_li=0’); ?>
</ul>
</div>

<div class="widget_style" id="archives">
<h2><?php _e(‘Архивы’,’theme406′); ?></h2>
<ul >
<?php get_archives(‘monthly’,’10’,’custom’,'<li>’,'</li>’); ?>
</ul>
</div>

<div class="widget_style" id="archives">
<h2><?php _e(‘Статистика’,’theme406′); ?></h2>
<ul ></ul>
</div>

<?php endif; ?>

</div>
</div>
<!–side_bar end–>[/quote]
почему не работает ? что я делаю не правильно ?

Делаете правильно, понимаете неправильно. В админке не дополнительные виджеты, а единственно возможные. В siderbar.php – вообще не виджеты. То, что Вы выделили в коде, как раз и означает, что при включении виджетов код в сайдбаре не обрабатывается.

так выходит нужно просто убрать этот код или как ? помогите пожалуйста уже понять до конца

Еще раз: код в sidebar.php (это не виджеты!), расположенный между
<?php if ( function_exists(‘dynamic_sidebar’) && dynamic_sidebar(__(‘Sidebar’,’theme406′)) ) : else : ?>
и
<?php endif; ?>
не выполняется, если активирован хотя бы один виджет.

По-другому: при таком написании работает либо код в сайдабре, либо виджеты.

А дальше уже Вам решать: или чистый код (выбор редакции :)), или виджеты, или переделать вызов виджетов так, чтобы работал и код, и вызывались виджеты.

Да, это я уже понял …
а как именно и что нужно переделать для того, чтобы работал и код и виджеты показались одновременно ? есть какое-нибудь решение для всех тем или нужно по отдельности менять под каждую тему ?

заранее спасибо за помощь

решение есть… но, для начала давай почитаем MAX’a
http://maxsite.org/ras31

а потом будем смотреть с тобою 🙂
(да, знаю, нервы на пределе… но, через это все проходят) 🙂

…слушай, а дай ка твою темку поюзать?!

… пойду искать у MAX’a
однажды, я где-то уже видел подобную темку…
Там была хитрость в том, что можно было обхитрить ВП
дописав исполняемый код то ли до, то ли после основного кода обработки виджета…
это было месяца три-четы назад…
Хоть убей, – не помню, где я это уже видел!
(у меня была моя любимая темка вообще без виджетов-поддержки и я искал всё это)

не знаю вот только успею ли за Гуру 🙂

… вдогонку…

а когда исчезают основные пункты сайдбара, они случайно не появляются в админке, в том месте, откуда их перетаскивают в виде виджетов?

* не в тему… но!
забиваю в гугле поиск и вижу свои же слова вышеоставленные… в гугле (3 минуты назад)
Вот это скорость индексации!!! (я тоже так хочу)

всё!
у меня началась тихая африканская истерика…

Гуру, – научите такой индексации! м?

а как именно и что нужно переделать для того, чтобы работал и код и виджеты показались одновременно ? есть какое-нибудь решение для всех тем или нужно по отдельности менять под каждую тему ?

Отдельно под каждую Тему, т.к. алгоритм находится в файле sidebar.php (или аналогичном) Темы.

Метод 1.
Находим строку
<?php if ( function_exists(‘dynamic_sidebar’) && dynamic_sidebar(__(‘Sidebar’,’theme406′)) ) : else : ?>
или, что чаще встречается,
if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar() ) : ?>
и переделываем на
if ( function_exists(‘dynamic_sidebar’) ) dynamic_sidebar(); ?>
Убираем <?php endif; ?> соответсвующий этому IFу
В том месте, где стоит вышеозначенная строка будут выведены все виджеты, активированные в админке.

Метод 2.
Убираем совсем if …. и endif, вызываем виджеты как функции в нужных местах. Этот метод позволяет организовать условный показ виджетов. Подробно описан Максом http://maxsite.org/otobrazhenie-vidzhetov-v-saydbarah-pri-raznyih-usloviyah

спасибо большое за помощь, сделал первым методом и все сработало, уже на двух разных тем!

Еще раз: код в sidebar.php (это не виджеты!), расположенный между 
<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar(__('Sidebar','theme406')) ) : else : ?> 
и
<?php endif; ?>
не выполняется, если активирован хотя бы один виджет.

По-другому: при таком написании работает либо код в сайдабре, либо виджеты.

А дальше уже Вам решать: или чистый код (выбор редакции :)), или виджеты, или переделать вызов виджетов так, чтобы работал и код, и вызывались виджеты.

Кстати, у меня отображались и виджеты, и то, что прописано в sidebar, пока не удалил все, что между вышеуказанными операми – отображалось и то и другое

Anonymous
Отправить
Ответ на: