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

Как вывести название атрибута вместо ярлыка или изменить кодировку

Тема в разделе "Вопросы новичков", создана пользователем Solomon Fox, 2 сен 2015.

  1. Solomon Fox

    Solomon Fox

    Сообщения:
    90
    Симпатии:
    4
    Баллы:
    8
    Добрый день. Есть плагин, который выводит товары списком так вот он выводит с товарами и ярлыки - ссылки. А они не воспринимаюсь русский язык и отображаются кракозябрами. Вопрос, как вместо ярлыков вывести название атрибутов или изменить кодировку что бы русский язык отображался правильно.
    Пробовал вывести заголовок через.
    echo wc_attribute_label( $attribute['name'] );
    не работает.
    Вот код:
    <?php
    add_action( 'add_theme_support', 'woocommerce_variable_add_to_cart' );
    add_action( 'add_theme_support', 'find_valid_variations' );
    function woocommerce_variable_add_to_cart(){
    global $product, $post;
    $variations = find_valid_variations();
    // Check if the special 'price_grid' meta is set, if it is, load the default template:
    if ( get_post_meta($post->ID, 'price_grid', true) ) {
    // Enqueue variation scripts
    wp_enqueue_script( 'wc-add-to-cart-variation' );
    // Load the template
    wc_get_template( 'single-product/add-to-cart/variable.php', array(
    'available_variations' => $product->get_available_variations(),
    'attributes' => $product->get_variation_attributes(),
    'selected_attributes' => $product->get_variation_default_attributes(),
    'available_name' => $product->get_available_name(),
    ) );
    return;
    }
    // Cool, lets do our own template!
    $attributes = $product->get_attributes();
    ?>
    <table class="variations variations-grid" cellspacing="0">
    <tbody>
    <?php
    foreach ($variations as $key => $value) {
    if( !$value['variation_is_visible'] ) continue;
    ?>
    <tr>
    <td>
    <?php foreach($value['attributes'] as $key => $val ) {
    $val = str_replace(array('-','_'), ' ', $val);
    printf( '<span class="attr attr-%s">%s</span>', $key, ucwords($val) );
    } ?>

    </td>
    <?php
    if ($value['price_html']) {
    echo"<td>";
    echo $value['price_html'];
    echo"</td>";
    }
    ?>
    </td>
    <?php
    echo"<td>";
    echo $value['price_html'];
    echo"</td>";
    ?>
    <td>

    <?php if( $value['is_in_stock'] ) { ?>
    <form class="cart" action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" method="post" enctype='multipart/form-data'>
    <?php woocommerce_quantity_input(); ?>
    <?php
    if(!empty($value['attributes'])){
    foreach ($value['attributes'] as $attr_key => $attr_value) {
    ?>
    <input type="hidden" name="<?php echo $attr_key?>" value="<?php echo $attr_value?>">
    <?php
    }
    }
    ?>
    <button type="submit" class="single_add_to_cart_button btn btn-primary"><span class="glyphicon glyphicon-tag"></span>Добавить в корзину</button>
    <input type="hidden" name="variation_id" value="<?php echo $value['variation_id']?>" />
    <input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
    <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $post->ID ); ?>" />
    </form>
    <?php } else { ?>
    <p class="stock out-of-stock"><?php _e( 'This product is currently out of stock and unavailable.', 'woocommerce' ); ?></p>
    <?php } ?>
    </td>
    </tr>
    <?php } ?>
    </tbody>
    </table>
    <?php
    }
    function find_valid_variations() {
    global $product;
    $variations = $product->get_available_variations();
    $attributes = $product->get_attributes();
    $new_variants = array();
    foreach( $variations as $variation ) {
    $valid = true;
    foreach( $attributes as $slug => $args ) {
    if( array_key_exists("attribute_$slug", $variation['attributes']) && !empty($variation['attributes']["attribute_$slug"]) ) {
    } else {
    $valid = false;
    foreach( explode( '|', $attributes[$slug]['value']) as $attribute ) {
    $attribute = trim( $attribute );
    $new_variant = $variation;
    $new_variant['attributes']["attribute_$slug"] = $attribute;
    $new_variants[] = $new_variant;
    }
    }
    }
    if( $valid )
    $new_variants[] = $variation;
    }
    return $new_variants;
    }
    ?>
     
  2. Solomon Fox

    Solomon Fox

    Сообщения:
    90
    Симпатии:
    4
    Баллы:
    8
    <?php
    if ($value['price_html']) {
    echo"<td>";
    echo $value['price_html'];
    echo"</td>";
    }
    ?>
    Вот куда нужно вывести название атрибута
     
  3. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Какой плагин используется? Ссылку на него дайте.
     
  4. Solomon Fox

    Solomon Fox

    Сообщения:
    90
    Симпатии:
    4
    Баллы:
    8
  5. Solomon Fox

    Solomon Fox

    Сообщения:
    90
    Симпатии:
    4
    Баллы:
    8
    Работает только с английскими буквами, как можно решить?
     

    Вложения:

  6. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    А при чем здесь этот плагин и код который выше?
    Этот плагин нужен, чтобы добавлять с помощью Ajax вариативные товара в карточке товара.
     
  7. Solomon Fox

    Solomon Fox

    Сообщения:
    90
    Симпатии:
    4
    Баллы:
    8
    Такая ошибка наблюдается только при использовании этого плагина, а код который выше это фаил плагина который отвечает за вывод атрибутов. И если удастся либо убрать кракозябры, либо добавить новое поле то поле нужно буде добавлять туда, а вот с невосприимчивостью к кириллице не знаю, что делать.
     
  8. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Так я и прошу дать ссылку на плагин, код которого приведен выше, т.е. который отвечает за вывод атрибутов.
     
  9. Solomon Fox

    Solomon Fox

    Сообщения:
    90
    Симпатии:
    4
    Баллы:
    8
  10. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Указанный плагин не выводит атрибуты и в нем нет кода, указанного в первом сообщении.
    Н-р, я не нашел в нем функции find_valid_variations() и других.
    Если не хотите давать ссылку на плагин вывода атрибутов или Вы этот код писали сами, то так и скажите.

    Больше в этом теме писать не буду, чтобы не разводить спам.
    Надеюсь Вам кто-нибудь другой поможет.
     
  11. Solomon Fox

    Solomon Fox

    Сообщения:
    90
    Симпатии:
    4
    Баллы:
    8
    Этот плагин меняет отображение атрибутов, которые уже заданы. Он делает их списком и добавляет к ним кнопку купить. Если его не ставить, то дополнительные атрибуты отображаются по умолчанию в виде выпадающего меню. Код о котором я говорю находится внутри плагина в файле grid.php
    Я не в коем разе ни хотел вас обидеть или чем-то оскорбить, возможно мы просто друг-друга не поняли. На скрине я приложил полный путь до файлов, о которых говорю. Надеюсь так станет яснее. В любом случае спасибо вам за уделенное время.
     

    Вложения:

  12. Solomon Fox

    Solomon Fox

    Сообщения:
    90
    Симпатии:
    4
    Баллы:
    8
    Остальные плагины, которые могли бы выводить атрибуты - выключены. С атрибутами работает только он.
     
  13. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Не пойму, почему и в первый раз и повторно Вы даете ссылку на один плагин, но в действительности речь идет совершенно о другом https://wordpress.org/plugins/woocommerce-variable-product-ajax/.
     
  14. Solomon Fox

    Solomon Fox

    Сообщения:
    90
    Симпатии:
    4
    Баллы:
    8
    Святые угодники я почему-то решил что они одинаковые. Несколько раз проверял ведь. А ведь точно разные.
     
  15. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Плагин крайне не рекомендуется к использованию, т.к. имеет неисправленные баги (тестировал на WC 2.4.x ) , которые автор исправлять не собирается.
     
  16. Solomon Fox

    Solomon Fox

    Сообщения:
    90
    Симпатии:
    4
    Баллы:
    8
    хорошо, купил платный плагин)). Там без глюков все отображается. Только теперь другой вопрос у этот плагина товары можно было выводить во всплывающем окне. Т.е. щелкаешь на опции товара, а там всплывающее окно с его выбранными характеристиками. Возможно ли как-то повторить этот функционал?
     
  17. Solomon Fox

    Solomon Fox

    Сообщения:
    90
    Симпатии:
    4
    Баллы:
    8