1. Приветствуем Вас на нашем закрытом форуме для складчиков сайта cmsheaven.org. Если Вы частный вебмастер, фрилансер, владелец малого или среднего бизнеса, представитель студии по разработке сайтов - будем рады видеть Вас в наших рядах экономных людей.
    Регистрация на форуме возможна только после вступления в складчину

Virtuemart 3 зачеркнутая цена

Discussion in 'Вопросы по расширениям Joomla [тех. поддержка]' started by Виталий, Jun 29, 2015.

Thread Status:
Not open for further replies.
  1. Виталий

    Виталий Weblargo Staff Member

    Joined:
    Oct 10, 2014
    Messages:
    964
    Likes Received:
    371

    Версия Joomla!Joomla! 3.4.1 Stable [ Ember ] 21-March-2015 20:30 GMT
    Шаблон - Protostar (стандартный)
    [​IMG]
    Вопрос в том что стандартными методами без багов решить задачу нельзя, нужно лезть в код чтобы вставить условия вывода цены в тех товарах где нет скидки, получается вот такая картина:
    [​IMG]
    как сделать так чтобы во втором случае зачеркнутой цены не было?
    знаю что необходимо править файл шаблона отвечающий за вывод стоимости:
    (templates/protostar/html/com_virtuemart/sublayouts/prices.php)
    вот сам участок кода:
    PHP:
    <?php
        
    if (!empty($product->prices['salesPrice'])) {
            
    //echo '<div class="vm-cart-price">' . vmText::_ ('COM_VIRTUEMART_CART_PRICE') . '</div>';
        
    }

        if (
    $product->prices['salesPrice']<=and VmConfig::get ('askprice'1) and isset($product->images[0]) and !$product->images[0]->file_is_downloadable) {
            
    $askquestion_url JRoute::_('index.php?option=com_virtuemart&view=productdetails&task=askquestion&virtuemart_product_id=' $product->virtuemart_product_id '&virtuemart_category_id=' $product->virtuemart_category_id '&tmpl=component'FALSE);
            
    ?>
            <a class="ask-a-question bold" href="<?php echo $askquestion_url ?>" rel="nofollow" ><?php echo vmText::('COM_VIRTUEMART_PRODUCT_ASKPRICE'?></a>
            <?php
        
    } else {
        
    //if ($showBasePrice) {
            
    echo $currency->createPriceDiv ('basePrice''COM_VIRTUEMART_PRODUCT_BASEPRICE'$product->prices);
            
    //if (round($product->prices['basePrice'],$currency->_priceConfig['basePriceVariant'][1]) != $product->prices['basePriceVariant']) {
                
    echo $currency->createPriceDiv ('basePriceVariant''COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT'$product->prices);
            
    //}

        //}
        
    echo $currency->createPriceDiv ('variantModification''COM_VIRTUEMART_PRODUCT_VARIANT_MOD'$product->prices);
        if (
    round($product->prices['basePriceWithTax'],$currency->_priceConfig['salesPrice'][1]) != $product->prices['salesPrice']) {
            echo 
    '<span class="price-crossed" >' $currency->createPriceDiv ('basePriceWithTax''COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX'$product->prices) . "</span>";
        }
        if (
    round($product->prices['salesPriceWithDiscount'],$currency->_priceConfig['salesPrice'][1]) != $product->prices['salesPrice']) {
            echo 
    $currency->createPriceDiv ('salesPriceWithDiscount''COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT'$product->prices);
        }

        echo 
    $currency->createPriceDiv ('salesPrice''COM_VIRTUEMART_PRODUCT_SALESPRICE'$product->prices);
        if (
    $product->prices['discountedPriceWithoutTax'] != $product->prices['priceWithoutTax']) {
            echo 
    $currency->createPriceDiv ('discountedPriceWithoutTax''COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX'$product->prices);
        } else {
            echo 
    $currency->createPriceDiv ('priceWithoutTax''Фактическая цена без налога'$product->prices);
        }
        echo 
    $currency->createPriceDiv ('discountAmount''COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT'$product->prices);
        echo 
    $currency->createPriceDiv ('taxAmount''COM_VIRTUEMART_PRODUCT_TAX_AMOUNT'$product->prices);
        
    $unitPriceDescription vmText::sprintf ('COM_VIRTUEMART_PRODUCT_UNITPRICE'vmText::_('COM_VIRTUEMART_UNIT_SYMBOL_'.$product->product_unit));
        echo 
    $currency->createPriceDiv ('unitPrice'$unitPriceDescription$product->prices);
        }
        
    ?>
    требуется создать условия чтобы зачеркнутая цена не выводилась там где на товар нет скидки.
    В нете информация в основном для версии VM2 и те решения которые предлагают там на деле не работают.
    вот настройки самого магазина:
    [​IMG]
    Вот настройки стоимости в самой карточке товара:
    [​IMG]
    Last edited: Jun 30, 2015
    #1
  2. Виталий

    Виталий Weblargo Staff Member

    Joined:
    Oct 10, 2014
    Messages:
    964
    Likes Received:
    371
    Буквально сегодня наткнулся на решение http://virtuemart3.ru/forum-virtuem...irovaniya-tseny-v-virtuemart-3-0-6-4?start=18
    код правим в файле Шаблон\html\com_virtuemart\sublayouts\prices.php
    PHP:
    if  (round($product->prices['basePrice'],$currency->_priceConfig['basePrice'][1]) != $product->prices['salesPrice'])
                    {
                           echo 
    '<div class="price-old" >';

                     echo 
    '<span>'.$currency->createPriceDiv ('basePrice'''$product->prices).'</span>';
                          echo 
    '</div>';            }
              
        
    //цена для продажи
       
        
    echo '<div class="price-base" ><span itemprop="price">';
        echo 
    $currency->createPriceDiv ('salesPrice'''$product->prices);
       
        echo 
    '</span></div>';

    // Скидки и прочее
       
         
    if  ($product->prices['discountAmount'] || $product->prices['taxAmount']){ //Если что-то из скидок есть, то вывести ...
         
    echo '<div class="price-discount" > ';
           echo 
    vmText::_('COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT'); //отвечает за вывод надписи СКИДКА
              
    echo $currency->createPriceDiv ('discountAmount'''$product->prices); //Скидка переписать окончательно
        
    echo $currency->createPriceDiv ('taxAmount'''$product->prices); // скидка из налогов
      
    echo '</div>';    
    После чего добавляем в стили (файл vm-ltr-site.css)
    HTML:
    .price-old
    {color: #8A8A8A;   padding: 5px;  font-size: 1.384em; font-weight: bold;  overflow: hidden;  background: none repeat scroll 0 0 #eaeaea;  -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; -khtml-border-radius: 7px; -ms-border-radius: 7px; behavior: url(border-radius.htc);
    margin-bottom: 10px; }
    
    .price-old span:before {  background: none repeat scroll 0 0 #8A8A8A; content: ""; display: block; height: 2px; left: 0; position: absolute; right: 0;
    top: 50%; transform: scale(1) rotate(10deg) translate(0px, 0px) skew(0deg, 0deg); } /* ПЕРЕЧЕРКИВАНИЕ*/
    .price-old span {  /*display: block; float: left;*/ position: relative;     text-align: center; }
    .price-base { font-size: 1.384em;  font-weight: bold; color: #fff; text-shadow: 1px 1px 0 #000; text-align: center;  background: none repeat scroll 0 0 #018811;
    -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; -khtml-border-radius: 7px; -ms-border-radius: 7px; behavior: url(border- radius.htc);  margin-bottom: 10px;  border: 2px outset #5e93c9 ;    padding: 5px; }
    .price-discount {     color: #fff;      font-size: 1.384em;     font-weight: bold;     overflow: hidden;     background: none repeat scroll 0 0 #76060b;
    -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; -khtml-border-radius: 7px; -ms-border-radius: 7px;
    behavior: url(border-radius.htc);  text-align: center; 
    }
    Но к сожалению автор не пояснил куда именно вставлять данный код
    #2
  3. Modi34

    Modi34 Свой человек

    Joined:
    Oct 31, 2014
    Messages:
    2,033
    Likes Received:
    720
    это нестандартный функционал - вам следует обратиться за решением к фрилансеру

    если не хотите возиться с php и разбираться в vm то рекомендую просто прятать цену с помощью jQuery
    PHP:
    jQuery('.PricebasePrice').text()==jQuery('.PricesalesPrice').text()&&jQuery('.PricebasePrice').hide();
    Last edited: Jul 1, 2015
    #3
    Виталий likes this.
  4. Виталий

    Виталий Weblargo Staff Member

    Joined:
    Oct 10, 2014
    Messages:
    964
    Likes Received:
    371
    этот код нужно вставить в Шаблон\html\com_virtuemart\sublayouts\prices.php ? Подскажи куда именно вставить чтобы он сработал :oops:
    #4
  5. Modi34

    Modi34 Свой человек

    Joined:
    Oct 31, 2014
    Messages:
    2,033
    Likes Received:
    720
    неее это же js
    в /components/com_virtuemart/views/productdetails/tmpl/default.php или в тот же файл в оверрайде
    нужно добавить в самый конец
    [​IMG]
    в теге скрипт

    вот пруф что все работает
    [​IMG]
    правда я не уверен какой класс у перечеркнутой цены у вас - если что просто поменяйте)
    #5
  6. Modi34

    Modi34 Свой человек

    Joined:
    Oct 31, 2014
    Messages:
    2,033
    Likes Received:
    720
    а вот если условие не соблюдено
    [​IMG]
    #6
    Виталий likes this.
  7. Виталий

    Виталий Weblargo Staff Member

    Joined:
    Oct 10, 2014
    Messages:
    964
    Likes Received:
    371
    Modi34 Спасибо большое за помощь, за подсказки, правда реализовать должным образом так и не получилось ((( стоимость все равно отображается и там и там, пока на сайте действует тотальная скидка на все товары ))) продажи растут. И можно вопросик с помощью какого инструменты ты создаешь такие gif для форума?
    #7
  8. Modi34

    Modi34 Свой человек

    Joined:
    Oct 31, 2014
    Messages:
    2,033
    Likes Received:
    720
Thread Status:
Not open for further replies.