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

Всплывающая подсказка латинскими буквами

Image CMS

RonnyBonny

Опытный
Местный
#1
Установил плагин с помощью которого выбора свойств вариантного товара можно сделать картинкой. Но появилась другая проблема:


В title это ссылки указан именно ярлык цвета:
Код:
<a title="temnyj-orex" class="" style="display: inline-block; width:60px; height:60px; ">
Надо сделать так что бы в title был не ярлык, а название по русски.

В коде плагина нашел вот такую строчку:
Код:
<a title="<?php echo $option; ?>" class="<?php if ($displaytype == "round") { echo 'wcvaround'; } ?>" style="display: inline-block; width:<?php echo $imagewidth;?>px; height:<?php echo $imageheight;?>px; " ><img src="<?php if (isset($url)) { echo $url; } ?>" class="<?php if ($displaytype == "round") { echo 'wcvaround'; } ?>" style="width:<?php echo $imagewidth;?>px; height:<?php echo $imageheight;?>px; "></a>
Могу предположить что за вывод этого title отвечает именно $option. Подскажите пожалуйста какую переменную вставить вместо этого $option что бы в title попало название цвета по русски.
 
Последнее редактирование:

RonnyBonny

Опытный
Местный
#2
Скорее даже не так. Вот это title="<?php echo $option; ?>" можно просто удалить. А в <img дописать title="<?php echo $какая-то переменная которая выведет title картинки; ?>"

Подскажите пожалуйста эту переменную.
 

Stork.71

Гуру
Местный
#3
помнится, где-то на форуме уже всплывала ПОХОЖАЯ проблема с некорректным отображением свойств (ярлык свойства вместо его названия). Попытайтесь отыскать эту тему, помнится мне, вопрос решился.
 

RonnyBonny

Опытный
Местный
#4
Видимо вот это решение http://wpcommerce.ru/threads/otobra...varov-a-ne-ix-jarlykov-resheno.728/#post-4247

В общем-то спасибо, теперь в корзине у меня отображается цвет по русски. Но всплывающая подсказка все еще на латинице. Потому что это сторонний плагин. Мне надо просто вывести title картинки, но с php я на вы и не могу разобраться как это сделать в wordpress
 

RonnyBonny

Опытный
Местный
#5
Неужели ни у кого нет идей?
Я нашел что-то такое:
Код:
<?php get_image_tag( $title  ); ?>
Вроде как это должно взять значение поля title. Потом надо написать что-то типо:
Код:
title="<?php echo $title ?>"
Но совсем не понятно как код поймет от какой картинки ему взять этот title.

В общем поделитесь пожалуйста знаниями. Мне надо каким-то образом вывести значение поля title для картинок из медиабиблиотеки wordpress.
 

Stork.71

Гуру
Местный
#6
а Вы уверены, что это именно title картинки? А не название свойства, под которое подвязана картинка?
 

RonnyBonny

Опытный
Местный
#7
Дело в том что если подвязывать картинку к свойствам, таким образом:


То ничего не происходит. Наверное таким образом работает офф. плагин от woothem, но он стоит 100$. А я купил плагин по дешевле, долларов 15 по моему стоил. И там настройки отдельно для каждого товара:

Выглядит это дело вот так:


Я думаю что плагин берет именно slug от свойства и работает уже с этим значением. И ему без разницы как свойство называется. Но! отображает он конкретную картинку и медиабиблиотеки, у которой есть свои alt,title,description. То есть картинка свойства на первом скриншоте и картинки для свойств (цветов) на втором скриншоте, могут быть разными.

Далее у меня есть:
Код:
<a title="тут slug который на сриншоте №2, это я просто удалю" href="#"><img src="тут ссылка на картинку" title="Это я хочу дописать - Тут title картинки на которую ссылаемся" ></a>
Понимаете о чем я? :)
 

Stork.71

Гуру
Местный
#8
ну ход мыслей ясен, но не факт, что правилен :) По-хорошему, должно работать ПРАВИЛЬНО, а работает НЕПРАВИЛЬНО. Поэтому надо прежде всего не пытаться его обмануть, а попытаться заставить работать правильно.
Если это платный плагин, у него должна быть поддержка. Туда писать не пробовали?

а если поредактировать мета-теги картинки через медиабиблиотеку?

и еще мысль: у вас УРЛы на русском или на английском языке? Попробуйте все slug'и для свойств попрописывать на английском, а тайтлы на русском
 
Последнее редактирование:

RonnyBonny

Опытный
Местный
#9
Написал в поддержку плагина. Но там видимо отвечают выборочно. Потому как в комментах нашел еще два таких же вопроса.

Через медиа библиотеку и указываю title, alt картинки.

УРЛЫ у меня такого плана /торговая-категория/product-cat/product-name

Для свойств (Цветов), имя написано по русски, все slug на английском.

Тут наверное какой-то замут с кирилицей...хз..Вот у ребят такая же проблема была: http://prettyladies.ru/shop/dekorat...onalnaja-osnova-dlja-normalnoj-i-suhoj-kozhi/ как-то ее решили. Но как с ними связаться, не понятно :)
 

RonnyBonny

Опытный
Местный
#10
Написал этим ребятам: http://site.cosmosound.ru/ это они делали сайт http://prettyladies.ru/ Огромное им спасибо за ответ :)

Написали вот что:

Здравствуйте, Сергей. Разработчик плагина так и не ответил мне. Я копался в его коде. проблема в том, что если slug на кириллице, происходит его кодировка в абракадабру. В итоге мне удалось декодировать название в кириллицу при наведении мышки, редактировал я файл variable.php
Сейчас и не вспомню как именно, потому что у меня нет исходного кода этого файла, а есть только отредактированный.
И то, что бы название выглядело - Бежевый 5 (Влажный/Сияющий) в поле slug надо написать так:бежевый-5-i-влажный-s-сияющий-f

Где '-' пробел
i - открывающая скобка
s- слэш
f - закрывающая скобка.
Каждое слово автоматом начинается с большой буквы.


Вот код этого файла
Код:
<?php
/**
* variable template
* Originally Modified from Woocommerce Core
* @author        WooThemes
* @package    WooCommerce/templates/single-product/add-to-cart/variable.php
* @version     2.1.6
*/



global $woocommerce, $product, $post;
$woo_version =  wcva_get_woo_version_number();
$_coloredvariables = get_post_meta( $post->ID, '_coloredvariables', true );
$_wcva_display_type= get_post_meta( $post->ID, '_wcva_display_type', true );
?>

<?php

/**
* проверяем, что функция mb_ucfirst не объявлена
* и включено расширение mbstring (Multibyte String Functions)
*/
if (!function_exists('mb_ucfirst') && extension_loaded('mbstring'))
{
    /**
     * mb_ucfirst - преобразует первый символ в верхний регистр
     * @param string $str - строка
     * @param string $encoding - кодировка, по-умолчанию UTF-8
     * @return string
     */
    function mb_ucfirst($str, $encoding='UTF-8')
    {
        $str = mb_ereg_replace('^[\ ]+', '', $str);
        $str = mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding).
               mb_substr($str, 1, mb_strlen($str), $encoding);
        return $str;
    }
}



// обрабатываем объявленной функцией mb_ucfirst()
//echo mb_ucfirst($str) . '<br>';

// преобразовываем функцией mb_convert_case
//echo mb_convert_case($str, MB_CASE_TITLE, 'UTF-8');

?>

<?php do_action( 'woocommerce_before_add_to_cart_form' ); ?>

<script type="text/javascript">
    var product_variations_<?php echo $post->ID; ?> = <?php echo json_encode( $available_variations ) ?>;
</script>

  
<form class="variations_form cart" method="post" enctype='multipart/form-data' data-product_id="<?php echo $post->ID; ?>" data-product_variations="<?php echo esc_attr( json_encode( $available_variations ) ) ?>">
    <?php if ( ! empty( $available_variations ) ) : ?>
  
        <table class="variations" cellspacing="0">
            <tbody>
                <?php $loop = 0; foreach ( $attributes as $name => $options ) : $loop++;
                     $taxonomies = array($name);
                      $args = array(
                         'hide_empty' => 0
                       );
                      $newvalues = get_terms( $taxonomies, $args);
                      if (isset($_coloredvariables[$name]['label'])) {
                      $labeltext=$_coloredvariables[$name]['label'];
                      } else {

  
                          if ($woo_version <2.1) {
                                    $labeltext=$woocommerce->attribute_label( $name ); 
                           } else {
                             $labeltext=wc_attribute_label( $name );
                       }

                    
                       }                    
                ?>
                    <tr>
                        <td class="label"><label for="<?php echo sanitize_title($name); ?>"><?php if (isset($labeltext) && ($labeltext != '')) { echo $labeltext; } else { echo wc_attribute_label( $name ); } ?></label></td>
                        <td class="value"> <?php
                        if (isset($_wcva_display_type) && ($_wcva_display_type  == "colororimage"))    {
                             wcva_load_colored_select($name,$options,$_coloredvariables,$newvalues);
                         if ( sizeof($attributes) == $loop )
                                echo '<br /><a class="reset_variations" href="#reset">' . __( 'Отменить выбор', 'wcva' ) . '</a>';
                        } elseif (isset($_wcva_display_type) && ($_wcva_display_type  == "radio"))  {
                          wcva_load_radio_select($name,$options);
                        if ( sizeof($attributes) == $loop )
                                echo '<br /><a class="reset_variations" href="#reset">' . __( 'Отменить выбор', 'wcva' ) . '</a>';
                          }              
                        ?></td>
                    </tr>
              
               <?php endforeach;?>
            </tbody>
        </table>

        <?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>

        <div class="single_variation_wrap" style="display:none;">
            <?php do_action( 'woocommerce_before_single_variation' ); ?>

            <div class="single_variation"></div>

            <div class="variations_button">
                <?php woocommerce_quantity_input(); ?>
                <button type="submit" class="single_add_to_cart_button button alt">
                <?php
              
                 if ($woo_version <2.1) {
                                    echo apply_filters('single_add_to_cart_text', __( 'Add to cart', 'woocommerce' ), $product->product_type);
                           } else {
                             echo $product->single_add_to_cart_text();
                       }
              
                ?>
                </button>
            </div>

            <input type="hidden" name="add-to-cart" value="<?php echo $product->id; ?>" />
            <input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
            <input type="hidden" name="variation_id" value="" />

            <?php do_action( 'woocommerce_after_single_variation' ); ?>
        </div>

        <?php do_action( 'woocommerce_after_add_to_cart_button' ); ?>

    <?php else : ?>

        <p class="stock out-of-stock"><?php _e( 'This product is currently out of stock and unavailable.', 'wcva' ); ?></p>

    <?php endif; ?>

</form>

<?php do_action( 'woocommerce_after_add_to_cart_form' ); ?>


<?php
    
     /*
     * Load radio select
     * since 1.0.2
     */
     function wcva_load_radio_select($name,$options) { ?>
     <fieldset>
                  
                        <?php
                            if ( is_array( $options ) ) {

                                if ( empty( $_POST ) )
                                    $selected_value = ( isset( $selected_attributes[ sanitize_title( $name ) ] ) ) ? $selected_attributes[ sanitize_title( $name ) ] : '';
                                else
                                    $selected_value = isset( $_POST[ 'attribute_' . sanitize_title( $name ) ] ) ? $_POST[ 'attribute_' . sanitize_title( $name ) ] : '';
                              
                                if ( taxonomy_exists( sanitize_title( $name ) ) ) {

                                    $terms = get_terms( sanitize_title($name), array('menu_order' => 'ASC') );
                                  
                                    foreach ( $terms as $term ) {
                                        if ( ! in_array( $term->slug, $options ) ) continue;
                                        echo '<input type="radio" class="wcva_attribute_radio" value="' . strtolower($term->slug) . '" ' . checked( strtolower ($selected_value), strtolower ($term->slug), false ) . '  id="attribute_'.sanitize_title($name).'_'.sanitize_title($term->slug).'" name="attribute_'. sanitize_title($name).'">' . apply_filters( 'woocommerce_variation_option_name', $term->name ).'<br />';
                                    }
                                } else {
                                    foreach ( $options as $option )
                                        echo '<input type="radio" class="wcva_attribute_radio" value="' .esc_attr( sanitize_title( $option ) ) . '" ' . checked( sanitize_title( $selected_value ), sanitize_title( $option ), false ) . ' id="attribute_'.sanitize_title($name).'_'.sanitize_title($option).'" name="attribute_'. sanitize_title($name).'">' . apply_filters( 'woocommerce_variation_option_name', $option ) . '<br />';
                                }
                            }
                        ?>
    </fieldset>
    <?php


    }
     /*
     * Load colored select
     * since 1.0.0
     */
     function wcva_load_colored_select($name,$options,$_coloredvariables,$newvalues) { 
     ?>
    <fieldset>
                    
                        <?php
                            if ( is_array( $options ) ) {

                                if ( empty( $_POST ) )
                                    $selected_value = ( isset( $selected_attributes[ sanitize_title( $name ) ] ) ) ? $selected_attributes[ sanitize_title( $name ) ] : '';
                                else
                                    $selected_value = isset( $_POST[ 'attribute_' . sanitize_title( $name ) ] ) ? $_POST[ 'attribute_' . sanitize_title( $name ) ] : '';
                              
                                if ( taxonomy_exists( sanitize_title( $name ) ) ) {

                                    $terms = get_terms( sanitize_title($name), array('menu_order' => 'ASC') );
                                  
                                    foreach ( $terms as $term ) {
                                        if ( ! in_array( $term->slug, $options ) ) continue; {
                                        wcva_display_image_select_block($selected_value,$name,$term->slug,$_coloredvariables,$newvalues);
                                     }
                                    }
                                } else {
                                    foreach ( $options as $option ) {
                                    wcva_display_image_select_block($selected_value,$name,$option,$_coloredvariables,$newvalues);
                                 }
                              }
                            }
                        ?>
    </fieldset>
     <?php

    }
  
     /*
     * Get Image display
     * since 1.0.2
     */
    function wcva_display_image_select_block($selected_value,$name,$option,$_coloredvariables,$newvalues){
    
        $globalthumbnail_id = '';
       $globaldisplay_type = 'Color';
       $globalcolor        =  'grey';   


             foreach ($newvalues as $newvalue):
                  if (isset($newvalue->name) && ($newvalue->name == $option)) :
          
                          $globalthumbnail_id    = absint( get_woocommerce_term_meta( $newvalue->term_id, 'thumbnail_id', true ) );
                          $globaldisplay_type    = get_woocommerce_term_meta($newvalue->term_id, 'display_type', true );
                          $globalcolor       = get_woocommerce_term_meta($newvalue->term_id, 'color', true );
                   endif;
                  endforeach;
  
            if ((isset($_coloredvariables[$name]['values'])) && (isset($_coloredvariables[$name]['values'][$option]['image']))) {
             $thumb_id = $_coloredvariables[$name]['values'][$option]['image']; $url = wp_get_attachment_thumb_url( $thumb_id );
            } elseif (isset($globalthumbnail_id)) {
              $thumb_id=$globalthumbnail_id; $url = wp_get_attachment_thumb_url( $globalthumbnail_id );
            }
        
            if ((isset($_coloredvariables[$name]['values'])) && (isset($_coloredvariables[$name]['values'][$option]['type']))) {
             $attrdisplaytype = $_coloredvariables[$name]['values'][$option]['type'];
            } elseif (isset($globaldisplay_type)) {
             $attrdisplaytype = $globaldisplay_type;
            }
        
            if ((isset($_coloredvariables[$name]['values'])) && (isset($_coloredvariables[$name]['values'][$option]['color']))) {
             $attrcolor = $_coloredvariables[$name]['values'][$option]['color'];
            } elseif (isset($globalcolor)) {
             $attrcolor = $globalcolor;
            }
  
  
    ?>
               <label class="wcvaswatches" style="display:inline;" for="attribute_<?php echo  sanitize_title($name); ?>_<?php echo  sanitize_title($option); ?>">
                    <input type="radio" class="wcva_attribute_radio" value="<?php echo esc_attr( sanitize_title( $option ) ); ?>" <?php echo checked( sanitize_title( $selected_value ), sanitize_title( $option ), false ); ?> id="attribute_<?php echo  sanitize_title($name); ?>_<?php echo  sanitize_title($option); ?>" name="attribute_<?php echo  sanitize_title($name); ?>">
                       <?php
                           if (isset($_coloredvariables[$name]['size'])) {
                             $thumbsize   = $_coloredvariables[$name]['size'];
                             $displaytype = $_coloredvariables[$name]['displaytype'];
                            } else {
                             $thumbsize   = 'small';
                             $displaytype = 'square';
                            }
                             $imageheight = wcva_get_image_height($thumbsize); $imagewidth = wcva_get_image_width($thumbsize); 
                            
                            
                            
              
                             switch($attrdisplaytype) {
                               case "Color":
                                   $uc=htmlspecialchars(urldecode(($option)));
                                    $option=mb_convert_case($uc, MB_CASE_TITLE, 'UTF-8');
                                    $option=ereg_replace ("-", " ", $option);
                                    $option=ereg_replace ("I ", "(", $option);
                                    $option=ereg_replace (" F", ")", $option);
                                    $option=ereg_replace (" S ", "/", $option);
                                 ?>
                                 <a  title="<?php echo $option; ?>" style="display: inline-block; background-color:<?php if (isset($attrcolor)) { echo $attrcolor; } else { echo '#ffffff'; } ?>; width:<?php echo $imagewidth;?>px; height:<?php echo $imageheight;?>px; <?php if ($displaytype == "round") { echo 'border-radius: 20px; -moz-border-radius: 99em; -webkit-border-radius: 99em;'; } ?>"></a>
                                 <?php
                               break;
                               case "Image":
                                  
                                    $uc=htmlspecialchars(urldecode(($option)));
                                    $option=mb_convert_case($uc, MB_CASE_TITLE, 'UTF-8');
                                    $option=ereg_replace ("-", " ", $option);
                                    $option=ereg_replace ("I ", "(", $option);
                                    $option=ereg_replace (" F", ")", $option);
                                    $option=ereg_replace (" S ", "/", $option);
                                 ?>
                                 <a title="<?php echo $option; ?>" style="display: inline-block; width:<?php echo $imagewidth;?>px; height:<?php echo $imageheight;?>px; <?php if ($displaytype == "round") { echo 'border-radius: 20px; -moz-border-radius: 99em; -webkit-border-radius: 99em;'; } ?>" ><img src="<?php if (isset($url)) { echo $url; } ?>" style="width:<?php echo $imagewidth;?>px; height:<?php echo $imageheight;?>px; <?php if ($displaytype == "round") { echo 'border-radius: 20px; -moz-border-radius: 99em; -webkit-border-radius: 99em;'; } ?>"></a>
                                 <?php
                               break;
                           }
                        
                        
                       ?>
                </label>
    <?php }
  
     /*htmlspecialchars(urldecode(ucfirst($option)))
     * Get Image Height
     * since 1.0.0
     */
     function wcva_get_image_height($thumbsize) {
     $height=32;
     switch($thumbsize) {
    
     case "small":
     $height=32;
     break;
    
    
     case "extrasmall":
     $height=22;
     break;
    
     case "medium":
     $height=40;
     break;
    
     case "big":
     $height=60;
     break;
    
     case "extrabig":
     $height=90;
     break;
    
     default :
     $height=32;
     break;
    
     }
     return $height;
     }
    
     /*
     * Get Image Width
     * since 1.0.0
     */
     function wcva_get_image_width($thumbsize) {
     $width=32;
    
     switch($thumbsize) {
    
     case "small":
     $width=32;
     break;
    
     case "extrasmall":
     $width=22;
     break;
    
     case "medium":
     $width=40;
     break;
    
     case "big":
     $width=60;
     break;
    
     case "extrabig":
     $width=90;
     break;
    
     default :
     $width=32;
     break;
     }
    
     return $width;
     }
Буду разбираться, пока это единственное решение которое работает.

Но все же, ведь гораздо проше вывести title картинки из медиабиблиотеки, остается вопрос как.
 

Stork.71

Гуру
Местный
#11
Какие отзывчивые ребята, плюсиквкарму! :)
А просто заменить файлик вот этим, который прислали?
(всякие скобки не нужны Вам вроде, вместо пробела использовать "-" )
 

RonnyBonny

Опытный
Местный
#12
Если просто заменить файл, то картинки вообще не отображаются. Еще беда в том что у меня почему-то не хочет сохранятся slug по русски. И декодируется в вариант на латинице. Это наверное плагин rus to lat срабатывает.

Я вот что подумал. У меня есть url картинки, это:
Код:
<img src="<?php if (isset($url)) { echo $url; } ?>"
Наверняка же есть какая-нибудь php функция, с помощью которой зная url можно получить значения и остальных полей у этой картинки. Неужели никто не знает как это сделать?
 

RonnyBonny

Опытный
Местный
#15
ну а как без таких знаний делать сайты, а тем более интрент-магазины? :)
wordpress+woocommerce+мозг - вполне достаточно :) Хотя немного лукавлю, какие-то базовые вещи в php,js,html,css я все же знаю.

Но вот такие мелкие проблемы как сейчас, когда надо реально понимать, конечно очень не приятно. Больше всего расстраивает что стараешься тут на форуме максимально подробно делится какими-то знаниями, наработками, а в ответ никто не помогает :)
 

Zaknafain

Опытный
Местный
#16
wordpress+woocommerce+мозг - вполне достаточно :) Хотя немного лукавлю, какие-то базовые вещи в php,js,html,css я все же знаю.

Но вот такие мелкие проблемы как сейчас, когда надо реально понимать, конечно очень не приятно. Больше всего расстраивает что стараешься тут на форуме максимально подробно делится какими-то знаниями, наработками, а в ответ никто не помогает :)
ну на форуме все помогают в меру своих знаний, к примеру Stork.71 очень сильно мне помогал, и если бы не он то у меня вряд ли были ли бы те знания что есть и мой магазин :)
и все же wordpress+woocommerce+мозг не достаточно, как минимум базовые знания HTML нужны обязательно, имхо :)
 
Сверху Снизу