Неправильный сайдбар отображается на странице магазина WooCommerce

20 нояб. 2012 г., 11:40:24
Просмотры: 22.6K
Голосов: -1

Я разрабатываю обновление своего сайта на новом VPS-хостинге, и одним из главных изменений является переход с wp e-commerce на WooCommerce.

URL-адрес страницы магазина WooCommerce: http://95.142.166.209/shop/ [Я получаю доступ к сайту через IP-адрес VPS, так как мой домен используется для живого сайта - StackExchange не разрешает URL-адреса с IP, поэтому вам нужно будет скопировать IP в адресную строку (извините)]

Я все еще в процессе стилизации и работы с шаблонами, но не могу разобраться с сайдбаром. В functions.php моей темы WordPress определены 2 сайдбара: blog sidebar и shop sidebar. По какой-то причине единственный сайдбар, который отображается на странице магазина - это сайдбар блога, который должен отображаться (как ни странно) только в блоге.

Я пытался создать шаблон для магазина и вставил функцию get_sidebar(), указывая ID сайдбара магазина, но безуспешно.

Я считаю, что WooCommerce должен регистрировать свой собственный сайдбар при установке, но в панели управления WordPress в разделе внешний вид->виджеты его нет.

Я просмотрел файлы темы WooCommerce, но единственное, что я могу найти связанное с сайдбаром - это php файл, содержащий get_sidebar('shop'), который очевидно включается другими файлами темы. Нигде нет признаков регистрации сайдбара с ID 'shop'.

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

Я вижу, что мой вопрос несколько раз получил отрицательные оценки - извините, если он неясен, но это действительно настоящий вопрос. Если что-то требует уточнения, было бы полезно, если бы вы оставили комментарий, а не просто ставили отрицательную оценку.

1
Комментарии

Как насчет использования маршрутов Woo Support?

kaiser kaiser
20 нояб. 2012 г. 14:52:53
Все ответы на вопрос 5
1

WooCommerce имеет плагин для сайдбаров: http://www.woothemes.com/woosidebars/

Он предоставляет действительно полный контроль — вы можете создавать новые области сайдбаров для любых страниц.

20 нояб. 2012 г. 11:50:32
Комментарии

Это может быть вариантом, но я бы предпочел избегать установки дополнительных плагинов, когда могу достичь результата в своей теме. Я просто хочу разобраться, почему у меня не получается отобразить второй боковой сайдбар для магазина. WooCommerce всегда использует шаблон index.php или страницы WC подчиняются предоставленным им шаблонам?

harryg harryg
20 нояб. 2012 г. 12:09:48
1

По умолчанию WooCommerce ищет в директории вашей темы шаблон страницы с именем woocommerce.php, и если он существует, использует этот шаблон при отображении страницы. Таким образом, вы можете переопределить стандартную страницу WooCommerce безопасным для обновлений способом.

Самый простой способ реализовать это — скопировать ваш файл page.php или single.php в woocommerce.php (в ту же директорию), а затем отредактировать файл, заменив область контента вызовом WooCommerce.

<?php woocommerce_content(); ?>

Это дает вам и теме практически полный контроль над макетом и боковыми панелями.

Ознакомьтесь с этой статьей о темизации WooCommerce, надеюсь, она будет вам полезна.

Структура шаблонов WooCommerce

20 нояб. 2012 г. 16:25:30
Комментарии

Отредактировано, чтобы объяснить использование пользовательского файла woocommerce.php внутри темы, который позволяет полностью контролировать боковые панели.

Steve Steve
21 нояб. 2012 г. 18:10:57
0

НАКОНЕЦ-ТО!! Я нашёл решение похожей проблемы, с которой столкнулся при работе с темой Customizr. Смотрите ответ здесь.

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

Примечание: Когда будете следовать примеру по ссылке, не забудьте добавить <?php в начало кода файла sidebar-shop.php.

Надеюсь, это поможет вам так же, как помогло мне.

26 авг. 2013 г. 17:46:56
0

Первый шаг

Скопируйте файлы шаблонов WooCommerce из вашего плагина в папку вашей темы (подробнее о переопределении стандартной темы http://docs.woothemes.com/document/template-structure/)

Второй шаг

Создайте файл sidebar-shop.php в папке вашей темы

Третий шаг

Добавьте какой-либо текст или выводимую строку внутри вашего sidebar-shop.php.

Четвертый шаг

Обновите сайт, и вы увидите, что вместо стандартного содержимого блога начал отображаться ваш текст

Вы можете дополнительно настроить боковую панель по своему усмотрению (подробнее http://codex.wordpress.org/Function_Reference/register_sidebar)

В области виджетов добавьте productcategory в определенную боковую панель. Теперь в вашей боковой панели будут отображаться категории товаров вместо стандартного содержимого блога.

26 нояб. 2013 г. 15:17:03
0

Я использую тему inove, и последствия таковы: «woocommerce размещает сайдбар в подвале или ниже», и вы не можете отключить сайдбар в админ-консоли для раздела Магазин или Товары, в то время как для других страниц эта опция доступна в разделе Страницы — просто выберите шаблон без сайдбара.

То, что мне пришлось сделать для решения этой проблемы, отняло невероятно много времени, потенциально могло разрушить весь сайт, и ничего не помогало в течение 3 дней.

Я редактировал файлы single-product.php и archive-product.php в разделе Плагины>Woocommerce>Templates. Это повлияло на сайдбар, но результат всё равно был не идеальным.

Вот типичный пример изменений, которые я вносил в файлы — закомментировал код, связанный с хуком сайдбара, например:

/**
* Хук woocommerce_sidebar
* do_action( 'woocommerce_sidebar' );
* @hooked woocommerce_get_sidebar - 10
*/

Также пробовал вносить изменения в woocommerce.php, редактировал style.css и многие другие файлы через админ-консоль (Внешний вид>Редактор), но в итоге удалил все эти правки, так как они не сработали.

В разделе Страницы я выбрал Корзину, Аккаунт, Магазин и в атрибутах страницы (в боковой панели) установил для всех страниц родительский раздел «Магазин» и шаблон по умолчанию.

Окончательное решение проблемы было найдено после редактирования файла wc-template-hooks.php, который находится в папке Плагины>Woocommerce>Includes. Не уверен, что правка только этого файла решит проблему для всех.

/**
 * Сайдбар
 *
 * @see woocommerce_get_sidebar()
 * add_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );
 */

Теперь сайдбар находится там, где должен, и проблема решена. Спасибо всем участникам, чьи решения могли работать в более ранних версиях. У меня всё обновлено по состоянию на июнь 2014 года.

Теперь можно посмотреть футбол и выпить пару пива. Ура!

21 июн. 2014 г. 09:22:00