• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Хлебные крошки - Категория + Бренд (аттрибут)

Image CMS

taimerlan

Новичок
#1
Может быть сталкивался с реализацией такого функционала крошек:

Обычная структура для товаров:
Главная> Каталог> Категория> Название продукта
Нужно сделать такую:
Главная> Каталог> Категория> Категория Бренд > Название продукта
Ссылка ведет на фильтрацию категории по бренда
https://site.com/catalog/category/?pa_brand=Sony
Пример:
https://www.onlinetrade.ru/catalogu...d_samsung_ue32m5550au_serebristyy-903256.html
Каталог | ТВ и видео | Телевизоры | Телевизоры SAMSUNG | Светодиодный телевизор Samsung UE32M5550AU, серебристый

Думаю многим пригодится, если мы сможем решить эту проблему.
 

Useer72

Опытный
Местный
#2
А чем плоха стандартная функция подкатегорий? По-моему все уже решено давно, или я чего то не догоняю?
Что мешает создать "категорию Бренд" и назначить ей родительскую категорию?
 
Последнее редактирование:

taimerlan

Новичок
#3
По-моему все уже решено давно, или я чего то не догоняю?
Да, такой вариант есть, но по многим факторам не походит. Во первых получится дофига категорий в категориях. И можно задолбался перетаскивать несколько тысяч товаров по категориям. Хотя можно через имп/эксп. Но это создание дополнительной нагрузки. Да и в категориях на ряду с основными подкатегориями, будут показываться подкатегории с брендом. Какое-то колхозничество.
Бренд идёт как таксономия, а именно атрибут товара.
Можно вывести в крошки категорию и отдельно атрибут. А вот как вывести категорию с фильтрацией по атрибуту, я не нашел инфы.
 
Последнее редактирование:

artemkomarov

Специалист
Местный
#4
То что вы хотите можно легко сделать изменением breadcrumbs. Просто перед тем как получить конечную ветку в крошках получаем объект продукта находим его бренд берем ссылку таксономии и выводим прям перед наименованием товара.
 
#5
@artemkomarov, я пытался разобраться с breadcrumb navxt и yoast breadcrumb, но все тщетно. Не нашел даже места куда это можно присобачить. Нужно к ссылке категории добавить ?pa_brand=(название).
 

artemkomarov

Специалист
Местный
#7
Вот код целиком чтобы не путаться

Код:
<?php
/**
 * Shop breadcrumb
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/global/breadcrumb.php.
 *
 * HOWEVER, on occasion WooCommerce will need to update template files and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @see         https://docs.woocommerce.com/document/template-structure/
 * @author         WooThemes
 * @package     WooCommerce/Templates
 * @version     2.3.0
 * @see         woocommerce_breadcrumb()
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

global $post;

if ( ! empty( $breadcrumb ) ) {

    echo $wrap_before;

    foreach ( $breadcrumb as $key => $crumb ) {

        echo $before;

        if ( ! empty( $crumb[1] ) && sizeof( $breadcrumb ) !== $key + 1 ) {
            echo '<a href="' . esc_url( $crumb[1] ) . '">' . esc_html( $crumb[0] ) . '</a>';
        } else {

            // проверяем что мы на странице товара
            if ( is_singular('product') ) {
                // получаем атрибут
                $post_brand = wc_get_product_terms( $post->ID, 'pa_brand', array( 'fields' => 'all' ) );
                if ($post_brand) {
                    // получаем объект атрибута
                    $post_brand = $post_brand[0];
                    // получим предыдущею ссылку в крошках
                    $bread_prev = array_slice($breadcrumb, -2, 1);
                    // добавим имя и ссылку на бренд
                    echo '<a href="' . esc_url( $bread_prev[0][1] ) . '/?pa_brand=' . $post_brand->slug .'">' . esc_html( $bread_prev[0][0] ) . ' ' . $post_brand->name . '</a>';
                    echo $delimiter;
                }
            }

            echo esc_html( $crumb[0] );
        }

        echo $after;

        if ( sizeof( $breadcrumb ) !== $key + 1 ) {
            echo $delimiter;
        }
    }

    echo $wrap_after;

}
 
#8
Артем, огромное вам спасибо!
Напишите кошелек WMR. Хочу вас отблагодарить пивом/соком:)
 
Последнее редактирование:
Сверху Снизу