Введите часть искомого слова, названия или фразы...
↑ ↓
  1. Новые темы озаглавленные с маленькой буквы - удаляются без предупреждения!
  2. Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Отображение описания свойств атрибутов

Тема в разделе "Вопросы, советы и доработки.", создана пользователем Dokole, 3 ноя 2015.

  1. Dokole

    Dokole

    Сообщения:
    1
    Симпатии:
    1
    Баллы:
    1
    В стандартных темах не отображаются описание атрибутов
    Перекопал десяток тем как минимум
    Если есть у кого то на примете, подскажите, пожалуйста

    Описаниеwp показывает следующее
    "Описание по умолчанию не отображается, однако некоторые темы могут его показывать."
     
    • Нравится Нравится x 1
  2. Tanhuxa

    Tanhuxa

    Сообщения:
    86
    Симпатии:
    6
    Баллы:
    8
    У меня тот же вопрос. Кто может помочь отобразить описание атрибутов? :unsure:
     
  3. Tanhuxa

    Tanhuxa

    Сообщения:
    86
    Симпатии:
    6
    Баллы:
    8
    Похоже, нашла ответ.
    Только, признаюсь, не знаю, куда его нужно вписать. Кто может помочь разобраться с кодом?
     
  4. Tanhuxa

    Tanhuxa

    Сообщения:
    86
    Симпатии:
    6
    Баллы:
    8
    Ну подскажите, хоть как называется это описание в коде и где его искать!!! :cry: :cry: :cry:
     
  5. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    552
    Баллы:
    113
    Речь про описание атрибута или описание вариации?
     
  6. Tanhuxa

    Tanhuxa

    Сообщения:
    86
    Симпатии:
    6
    Баллы:
    8
    Речь о value of attributes, значения атрибутов

    screenshot-impressaoglobal.jpg
     
  7. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    552
    Баллы:
    113
    Если речь про вывод описания атрибутов в карточке товара, то решение примерно такое.
    Для вывода атрибутов используется шаблон \wp-content\plugins\woocommerce\templates\single-product\product-attributes.php. Копируем его в свою тему и делаем небольшие правки.
    Следующий код
    PHP:
    $values wc_get_product_terms$product->id$attribute['name'], array( 'fields' => 'names' ) );
                        echo 
    apply_filters'woocommerce_attribute'wpautopwptexturizeimplode', '$values ) ) ), $attribute$values );
    заменяем на
    PHP:
    $values wc_get_product_terms$product->id$attribute['name'], array( 'fields' => 'all' ) );
                        foreach (
    $values as $key => $value) {
                            echo  
    $value->name;
                            if (!empty(
    $value->description))
                            echo  
    '<br>'.$value->description.'<br>';
                        }
    На примере темы StoreFront :
    - было http://take.ms/S9gLu
    - стало http://take.ms/6Sp34
     
    • Нравится Нравится x 1
  8. Tanhuxa

    Tanhuxa

    Сообщения:
    86
    Симпатии:
    6
    Баллы:
    8
    Что-то ничего не получается :(
    Вот код, который получился:
    <?php
    /**
    * Product attributes
    *
    * Used by list_attributes() in the products class
    *
    * @author WooThemes
    * @package WooCommerce/Templates
    * @version 2.1.3
    */

    if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
    }

    $has_row = false;
    $alt = 1;
    $attributes = $product->get_attributes();

    ob_start();

    ?>
    <table class="shop_attributes">

    <?php if ( $product->enable_dimensions_display() ) : ?>

    <?php if ( $product->has_weight() ) : $has_row = true; ?>
    <tr class="<?php if ( ( $alt = $alt * -1 ) == 1 ) echo 'alt'; ?>">
    <th><?php _e( 'Weight', 'woocommerce' ) ?></th>
    <td class="product_weight"><?php echo $product->get_weight() . ' ' . esc_attr( get_option( 'woocommerce_weight_unit' ) ); ?></td>
    </tr>
    <?php endif; ?>

    <?php if ( $product->has_dimensions() ) : $has_row = true; ?>
    <tr class="<?php if ( ( $alt = $alt * -1 ) == 1 ) echo 'alt'; ?>">
    <th><?php _e( 'Dimensions', 'woocommerce' ) ?></th>
    <td class="product_dimensions"><?php echo $product->get_dimensions(); ?></td>
    </tr>
    <?php endif; ?>

    <?php endif; ?>

    <?php foreach ( $attributes as $attribute ) :
    if ( empty( $attribute['is_visible'] ) || ( $attribute['is_taxonomy'] && ! taxonomy_exists( $attribute['name'] ) ) ) {
    continue;
    } else {
    $has_row = true;
    }
    ?>
    <tr class="<?php if ( ( $alt = $alt * -1 ) == 1 ) echo 'alt'; ?>">
    <th><?php echo wc_attribute_label( $attribute['name'] ); ?></th>
    <td><?php
    if ( $attribute['is_taxonomy'] ) {

    $values = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'all' ) );
    foreach ($values as $key => $value) {
    echo $value->name;
    if (!empty($value->description))
    echo '<br>'.$value->description.'<br>';
    }

    } else {

    // Convert pipes to commas and display values
    $values = array_map( 'trim', explode( WC_DELIMITER, $attribute['value'] ) );
    echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );

    }
    ?></td>
    </tr>
    <?php endforeach; ?>

    </table>
    <?php
    if ( $has_row ) {
    echo ob_get_clean();
    } else {
    ob_end_clean();
    }
    Что-то еще надо изменить?
     
  9. mulch

    mulch

    Сообщения:
    16
    Симпатии:
    1
    Баллы:
    3
    Коллеги, спустя год возник похожий вопрос. А как вывести (внимание) Описание ПОДабрибута на странице, отображающей все товары, относящиеся к данному ПОДатрибуту?
    Например: на странице "Жемжуг культивированный" сначало должно быть описание этого жемчуга, а потом все, что с ним сделано. Пока описание никак вотнкуть не получается. Даже не понимаю откуда копать?
    Само описание у ПОДатрибута "Жемчуг культивированный" атрибута "Материал" вбито.
    Заранее благодарен за подсказку.
     
  10. mulch

    mulch

    Сообщения:
    16
    Симпатии:
    1
    Баллы:
    3
    Пол дня "в библиотеке", и вопрос почти решен. :)
    Для решения этой моей задачи надо было:
    1. сдублировать файл archive-product.php из WooCommerce по правилам в свою дочернюю тему.
    2. далее в нем перед строкой "do_action( 'woocommerce_before_shop_loop' );" вставить строку "$str=term_description(); if(!empty($str)){echo apply_filters("the_content", $str);} (инфо отсюда, респект и уважуха коллеге).

    Вот еще 1 час пытался с этому стрингу привязать '<p class="myblog">', но ни фига не получается.
    команда типа "?><script> $("p").addClass("myblog"); </script> <?php" результата также не дает вообще никакого.
    Как слепить стринг php и html?
     
  11. mulch

    mulch

    Сообщения:
    16
    Симпатии:
    1
    Баллы:
    3
    Кому интересно - усовершенствовал вывод описаний любой таксономии (категории, метки и любые свои вида "pa_***".
    Для этого можно файл archive-product.php из WooCommerce не трогать.
    Достаточно в functions.php дочерней темы добавить следующее
    1. функцию
    function my_all_description() {
    if ( is_tax( array( 'product_cat', 'product_tag', 'pa_material' ) ) && 0 === absint( get_query_var( 'paged' ) ) ) {
    $description = wc_format_content( term_description() );
    if ( $description ) {
    echo "<p class=\"myblog\"$description";
    } } }

    Далее в style.css дочерней темы раскрашиваем класс myblog или любой здесь вами используемый

    2. перехучить ряд функций так
    add_action( 'init', 'custom_remove', 10 ); //важно - перехучить в конце построения списка функций - на функции init
    function custom_remove () {
    remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10); //убираем стандартный вывод описаний категорий и меток
    //add_action( 'woocommerce_after_shop_loop', 'my_all_description', 100); //описания категорий и т.п. ПОД товарами - для роботов только - если надо
    add_action( 'woocommerce_archive_description', 'my_all_description', 10); //свои описания таксономий ПЕРЕД товарами
    }

    И начинающим веб-мастерам - рекомендация - Внимательней с синтаксисом. ОЧЕНЬ много проблем и неработающих функций из-за лишних пробелов, отсутствия точек конкатенации, " или ', неправильно расставленных скобок и т.п.
     
    Последнее редактирование: 5 дек 2016 в 13:55