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

Настройка стиля отображения виджета "недавно просмотренные товары"

Ashbrook

Новичок
#1
Возможно-ли изменить стиль отображения виджета "недавно просмотренные товары"? У меня он выводится в сайдбаре в вертикальном виде. Название товара выводится справа от фото товара, но из-за ограниченной ширины сайдбара, часть текста перекидывается уже
под изображение. Получается какая-то мешанина...


Хотелось бы в принудительном порядке выводить этот виджет в виде: сначала изображение, а описание к этому товару уже под этим изображением.
Возможно-ли это? Где именно надо искать эти стили для редактирования?
Спасибо.
 

rikitiki

Специалист
Местный
#2
Где именно надо искать эти стили для редактирования?
В первую очередь в Файребаге. Освойте его и не будет вопросов.
Вообще-то по умолчанию в виджете слева картинка, а справа заголовок и ценнник. И миниатюра размером 90px x 90px ограничена iшириной 32px У вас же она большая, оттого и заголовки не влезают.

.woocommerce ul.product_list_widget li img {
box-shadow: none;
float: right;
height: auto;
margin-left: 4px;
width: 32px;
}

В width измените размер и размер картинки изменится. float: right; замените на float: left и картинка будет слева, а текст справа. Уберите float и картинка, а за ним заголовок будут одной строкой. В этом случае, чтобы заголовок был под картинкой и не городить css, проще всего вставить за картинкой тег br, осуществляющий перенос заголовка на новую строку. Или, как в витринах, заменить span заголовка на h3. Но для этого надо лезть в код виджета.
 

dave14

Опытный
Местный
#4
А как вообще можно добавить блок недавно просмотренных товаров? Пробовал этот код, но все время выводит, что просмотренных товаров нет.

PHP:
<?php
/*
Plugin Name: WooCommerce - Recently Viewed Products
Plugin URL: http://remicorson.com/
Description: Adds a "recently viewed products" shortcode
Version: 1.0
Author: Remi Corson
Author URI: http://remicorson.com
Contributors: corsonr
Text Domain: rc_wc_rvp
Domain Path: languages
*/

/**
* Register the [woocommerce_recently_viewed_products per_page="5"] shortcode
*
* This shortcode displays recently viewed products using WooCommerce default cookie
* It only has one parameter "per_page" to choose number of items to show
*
* @access      public
* @since       1.0
* @return      $content
*/
function rc_woocommerce_recently_viewed_products( $atts, $content = null ) {

    // Get shortcode parameters
    extract(shortcode_atts(array(
        "per_page" => '5'
    ), $atts));

    // Get WooCommerce Global
    global $woocommerce;

    // Get recently viewed product cookies data
    $viewed_products = ! empty( $_COOKIE['woocommerce_recently_viewed'] ) ? (array) explode( '|', $_COOKIE['woocommerce_recently_viewed'] ) : array();
    $viewed_products = array_filter( array_map( 'absint', $viewed_products ) );

    // If no data, quit
    if ( empty( $viewed_products ) )
        return __( 'You have not viewed any product yet!', 'rc_wc_rvp' );

    // Create the object
    ob_start();

    // Get products per page
    if( !isset( $per_page ) ? $number = 5 : $number = $per_page )

    // Create query arguments array
    $query_args = array(
                    'posts_per_page' => $number,
                    'no_found_rows'  => 1,
                    'post_status'    => 'publish',
                    'post_type'      => 'product',
                    'post__in'       => $viewed_products,
                    'orderby'        => 'rand'
                    );

    // Add meta_query to query args
    $query_args['meta_query'] = array();

    // Check products stock status
    $query_args['meta_query'][] = $woocommerce->query->stock_status_meta_query();

    // Create a new query
    $r = new WP_Query($query_args);

    // If query return results
    if ( $r->have_posts() ) {

        $content = '<ul class="rc_wc_rvp_product_list_widget">';

        // Start the loop
        while ( $r->have_posts()) {
            $r->the_post();
            global $product;

            $content .= '<li>
                <a href="' . get_permalink() . '">
                    ' . ( has_post_thumbnail() ? get_the_post_thumbnail( $r->post->ID, 'shop_thumbnail' ) : woocommerce_placeholder_img( 'shop_thumbnail' ) ) . ' ' . get_the_title() . '
                </a> ' . $product->get_price_html() . '
            </li>';
        }

        $content .= '</ul>';

    }

    // Get clean object
    $content .= ob_get_clean();
   
    // Return whole content
    return $content;
}

// Register the shortcode
add_shortcode("woocommerce_recently_viewed_products", "rc_woocommerce_recently_viewed_products");
 

dave14

Опытный
Местный
#6
Да, про виджет я знаю, а как просто блок на страницу товара добавить?
 

Roman52

Новичок
#9
Приветствую! Тоже интересует вопрос, как поменять шаблон вывода недавно просмотренных товаров, например убрать из него картинку(css display:none - не предлагать). Интересует именно сам механизм, как мы это делаем с шаблоном, перенося его в папку с нашей темой и делаем с ним что хотим, не боясь обновления плагина. Можно ли сделать что то похожее с виджетами, а с виджетом недавно просмотренные товары в часности?
 

artemkomarov

Специалист
Местный
#10
Приветствую! Тоже интересует вопрос, как поменять шаблон вывода недавно просмотренных товаров, например убрать из него картинку(css display:none - не предлагать). Интересует именно сам механизм, как мы это делаем с шаблоном, перенося его в папку с нашей темой и делаем с ним что хотим, не боясь обновления плагина. Можно ли сделать что то похожее с виджетами, а с виджетом недавно просмотренные товары в часности?
Виджеты выводятся через шаблон yourtheme/woocommerce/content-widget-product.php точно так же как вы описали просто копируете себе в тему и тд.
 

Roman52

Новичок
#11
Виджеты выводятся через шаблон yourtheme/woocommerce/content-widget-product.php точно так же как вы описали просто копируете себе в тему и тд.
Спасибо за ответ!
А я могу как то редактировать файл plugins\woocommerce\includes\widgets\class-wc-widget-recently-viewed.php чтобы он не затирался при обновлении?
Вообще задача такая - есть вывод виджета недавно просмотренных товаров. И на него woocommerce вешает свои стили. Мне эти стили не нужны, я напишу свои. Перебивать их !important неохота (возможно придется). Отключать их в function.php не получится, так как это файл с кучей других стилей которые нужны.
Если была бы возможность править файл plugins\woocommerce\includes\widgets\class-wc-widget-recently-viewed.php я бы просто поменял класс у тега <ul class="product_list_widget"> в котором и выводятся последние просмотренные товары, и на этот класс повесил бы нужные стили.
 
#12
Подскажите где именно найти эту строчку, в которй поменять отображение кратинки в недавно просмотреных товарах. Я делаю правку через консоль, Внешний вид, и никак не могу найти эту строчку
 
Сверху Снизу