Перейти к содержимому


Фото
- - - - -

Ошибка в карточке товара


  • Чтобы отвечать, сперва войдите на форум
13 ответов в теме

#1 masha

masha
  • Пользователь
  • 9 сообщений
  • Пользователь

Опубликовано 01.10.2019 - 11:19

Может кто-нибудь подскажет решение проблемы.

После реализации в карточке товара вкладок (описание и рекомендуемые товары), обнаружилась ошибка. В описании выводится последний рекомендуемый товар, а не сама основная карточка. Сразу хочу сказать, что в HTML только с базовыми знаниями, не кидайтесь тапками) 

Пример страницы:

https://shop-vatra.b...a-sv-08g2s-d-08

 

ниже кусок кода product.tpl

 

<div class="clear"></div>
         
     <div class="tabs">
  <ul class="tabs__caption">
    <li class="active">С этим товаром покупают</li>
    <li>Описание</li>
  </ul>
  <div class="tabs__content active">
   {if $related_products}
    <div id="page_title"><h2>С {$product->name|escape} также смотрят</h2></div>
    <ul class="tiny_products main">
    {foreach $related_products as $product}
    <li class="product">{include file='tpl_products_blocks.tpl'}</li>
    {/foreach}
    </ul>
{/if}
   
   {foreach $product->variants as $v}
    {foreach $add_currencies as $c}
        {if $c->id != $currency->id}
            {if $v->price > 0}
                {$var_array[{$v->id}][{$c->id}]['price'] = {$v->price|convert:$c->id}}
            {/if}
            {if $v->compare_price > 0}
                {$var_array[{$v->id}][{$c->id}]['c_price'] = {$v->compare_price|convert:$c->id}}
            {/if}
        {/if}
    {/foreach}
{/foreach}
    <script>
        var variants_array = '{$var_array|json_encode}';
    </script> 
 </div>
  <div class="tabs__content">
   {if $product->body}<div id="page_title"><h2>{$product->name|escape} - Описание товара</h2></div><div id="category_description">{$product->body}</div>{/if}
</div>
   
   
 </div>
</div><!-- .tabs -->
 
     
<div id="back_forward">
{if $prev_product}<a class="prev_page_link hover_mouse link_2" href="products/{$prev_product->url}">{$prev_product->name|escape}</a>{/if}
{if $next_product}<a class="next_page_link hover_mouse link_2" href="products/{$next_product->url}">{$next_product->name|escape}</a>{/if}
</div>
 
{literal}
<script>
$(function() {
    $("#features li:even").addClass('even');
 
    $("a.zoom").fancybox({ 'hideOnContentClick' : true });
 
    $('select[name=variant]').change(function() {
        var v_id = $(this).find('option:selected').val();
        var item = $.parseJSON(variants_array);
 
        var list = $(this).find('option:selected').data('curr');
        var arr = list.split(',');
 
 
        $.each( arr, function( key, value ) {
            if(value != '') {
                console.log(item[v_id][value]['price']);
                $('#idc_' + value).find('.fn_pr').html(item[v_id][value]['price']);
                $('#idc_' + value).find('.fn_cpr').html(item[v_id][value]['c_price'])
            }
        });
 
 
 
 
 
        price = $(this).find('option:selected').attr('price');
        compare_price = '';
        if(typeof $(this).find('option:selected').attr('compare_price') == 'string')
            compare_price = $(this).find('option:selected').attr('compare_price');
        $(this).find('option:selected').attr('compare_price');
        $(this).closest('form').find('span').html(price);
        $(this).closest('form').find('strike').html(compare_price);
        return false;
    });
});
</script>
{/literal}

Прикрепленные файлы:



#2 shooroop

shooroop
  • Фрилансер
  • 996 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 01.10.2019 - 12:16

</div><!-- .tabs -->  удалите это



#3 masha

masha
  • Пользователь
  • 9 сообщений
  • Пользователь

Опубликовано 01.10.2019 - 12:23

</div><!-- .tabs -->  удалите это

не помогает, при удалении летит верстка и не меняется в карточке ничего


Изменено: masha, 01.10.2019 - 12:23


#4 shooroop

shooroop
  • Фрилансер
  • 996 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 01.10.2019 - 12:29

если вырезать этот кусок кода

 

  {foreach $related_products as $product}
    <li class="product">{include file='tpl_products_blocks.tpl'}</li>
    {/foreach}

 

то описание будет текущего товара?



#5 masha

masha
  • Пользователь
  • 9 сообщений
  • Пользователь

Опубликовано 01.10.2019 - 12:37

если вырезать этот кусок кода

 

  {foreach $related_products as $product}
    <li class="product">{include file='tpl_products_blocks.tpl'}</li>
    {/foreach}

 

то описание будет текущего товара?

Да, но не показываются рекомендованные товары(((



#6 shooroop

shooroop
  • Фрилансер
  • 996 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 01.10.2019 - 12:43

тогда поменяйте верстку местами

 

  <div class="tabs__content active"> ваш код </div>

  <div class="tabs__content"> ваш код </div>

 

 

замените на

 

 

  <div class="tabs__content"> ваш код </div>

<div class="tabs__content active"> ваш код </div>



#7 phukortsin

phukortsin
  • Фрилансер
  • 984 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 01.10.2019 - 12:53

Эта часть
{foreach $related_products as $product}
<li class="product">{include file='tpl_products_blocks.tpl'}</li>
{/foreach}

портит основную переменную шаблона $product, которая содержит данные текущего товара.

Есть по крайней мере два основных пути решения:
1. использовать другую переменную
{foreach $related_products as $product2} + изменять соответственно в шаблоне tpl_products_blocks.tpl
2. Восстановить основную переменную после работы цикла
{$product_ini=$product}
{foreach $related_products as $product}
<li class="product">{include file='tpl_products_blocks.tpl'}</li>
{/foreach}
{$product=$product_ini}

#8 masha

masha
  • Пользователь
  • 9 сообщений
  • Пользователь

Опубликовано 01.10.2019 - 12:56

Эта часть
{foreach $related_products as $product}
<li class="product">{include file='tpl_products_blocks.tpl'}</li>
{/foreach}

портит основную переменную шаблона $product, которая содержит данные текущего товара.

Есть по крайней мере два основных пути решения:
1. использовать другую переменную
{foreach $related_products as $product2} + изменять соответственно в шаблоне tpl_products_blocks.tpl
2. Восстановить основную переменную после работы цикла
{$product_ini=$product}
{foreach $related_products as $product}
<li class="product">{include file='tpl_products_blocks.tpl'}</li>
{/foreach}
{$product=$product_ini}

впринципе я согласна)))))) но как это исправить я не понимаю. базовые знания знаете ли мешают... но я стараюсь))) сейчас погуглю


Изменено: masha, 01.10.2019 - 12:56


#9 masha

masha
  • Пользователь
  • 9 сообщений
  • Пользователь

Опубликовано 01.10.2019 - 13:15

впринципе я согласна)))))) но как это исправить я не понимаю. базовые знания знаете ли мешают... но я стараюсь))) сейчас погуглю

а может кто исправить? не бесплатно, конечно же. я перепробовала все, не помогает



#10 DmitryCH

DmitryCH
  • Пользователь
  • 42 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 01.10.2019 - 13:22

впринципе я согласна)))))) но как это исправить я не понимаю. базовые знания знаете ли мешают... но я стараюсь))) сейчас погуглю

Просто поменяйте это:

{foreach $related_products as $product}

 

На это:

{foreach $related_products as $product1}

(вместо product1 можно любое имя использовать)

 

И скажите, что будет.

 

Если работать не будет, то в файле tpl_products_blocks.tpl тоже замените $product на $product1 или любое другое имя



#11 masha

masha
  • Пользователь
  • 9 сообщений
  • Пользователь

Опубликовано 01.10.2019 - 13:28

Просто поменяйте это:

{foreach $related_products as $product}

 

На это:

{foreach $related_products as $product1}

(вместо product1 можно любое имя использовать)

 

И скажите, что будет.

 

Если работать не будет, то в файле tpl_products_blocks.tpl тоже замените $product на $product1 или любое другое имя

Спасибо! Огромное!



#12 masha

masha
  • Пользователь
  • 9 сообщений
  • Пользователь

Опубликовано 01.10.2019 - 13:37

Просто поменяйте это:

{foreach $related_products as $product}

 

На это:

{foreach $related_products as $product1}

(вместо product1 можно любое имя использовать)

 

И скажите, что будет.

 

Если работать не будет, то в файле tpl_products_blocks.tpl тоже замените $product на $product1 или любое другое имя

Оно то работает, но рекомендуемые товары не те показывает. А где менять $product на $product1 в tpl_products_blocks.tpl ?

<div class="image">

<a href="products/{$product->url}" title='Просмотреть предложение {$product->name|escape}'><img src="{if $product->image}{$product->image->filename|resize:140:150}{else}design/{$settings->theme}/images/bg/nofoto.png{/if}" alt="{$product->name|escape}"/></a>
</div>
 
{if $product->featured}<div class="label label_featured" title='Рекомендуемый товар (Лидер продаж)'></div>
{elseif $product->variant->compare_price > 0}    <div class="label label_sale" title='Предложение со скидкой'></div>
{/if}
 
<div class="product_info">
 
    <h3><a data-product="{$product->id}" href="products/{$product->url}">{$product->name|escape}</a></h3>
    {if $product->annotation}<div class="annotation">{$product->annotation}</div>{/if}
    {if $product->variants|count > 0}
        <form class="cart" action="/cart">
 
            {if !in_array($product->id, $city_products)}
                <div class="city_product_info">Наличие товара уточняйте!</div>
            {else}
                <div class="price">
                <strike class='compare_price right'>{if $product->variant->compare_price > 0}{$product->variant->compare_price|convert}{else}{/if}</strike>
                {if $product->variant->price >0}<span>{$product->variant->price|convert}</span><i>{$currency->sign|escape}</i>{else}<small class='right' title='Не назначена цена'><br />Под заказ</small>{/if}
                        {*additional_currency*}
                        {foreach $add_currencies as $c}
                            {if $c->id != $currency->id}
                                <div>
                                    {if $product->variant->compare_price > 0}<span class="compare_price" style="float: right">{$product->variant->compare_price|convert:$c->id} <span class="currency">{$c->sign|escape}</span></span>{/if}
                                    {if $product->variant->price > 0}
                                    <span class="price">{$product->variant->price|convert:$c->id} <span class="currency">{$c->sign|escape}</span></span>
                                    {/if}
                                </div>
                            {/if}
                        {/foreach}
                        {*/additional_currency*}
                </div>
            {/if}
 
 
            <a class='but_add more hover_mouse' href="products/{$product->url}"></a>
            {if $product->variant->price >0}<input type="submit" class="but_add to_cart" value="" title='Купить {$product->name|escape}' data-result-text=""/>{/if}
 
            <select name="variant" {if $product->variants|count==1  && !$product->variant->name}style='display:none;'{/if}>
            {foreach $product->variants as $v}
            {if $v->price > 0}<option value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}">{$v->name}</option>{/if}
            {/foreach}
            </select>
        </form>
    {else}
        <div class="price"><small class='right' title='Нет на складе (Остаток ноль)'><br />Нет на складе</small></div>
        <a class='but_add more hover_mouse' href="products/{$product->url}"></a>
    {/if}
</div>

Изменено: masha, 01.10.2019 - 13:39


#13 shooroop

shooroop
  • Фрилансер
  • 996 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 01.10.2019 - 15:16

Эта часть
{foreach $related_products as $product}
<li class="product">{include file='tpl_products_blocks.tpl'}</li>
{/foreach}

портит основную переменную шаблона $product, которая содержит данные текущего товара.

Есть по крайней мере два основных пути решения:
1. использовать другую переменную
{foreach $related_products as $product2} + изменять соответственно в шаблоне tpl_products_blocks.tpl
2. Восстановить основную переменную после работы цикла
{$product_ini=$product}
{foreach $related_products as $product}
<li class="product">{include file='tpl_products_blocks.tpl'}</li>
{/foreach}
{$product=$product_ini}

 

 

ну п1 в карточке товара работать будет а если  эта конструкция используется в другом месте то работать перестанет. Имхо

проще изменить верстку поменяв местами div в табах



#14 masha

masha
  • Пользователь
  • 9 сообщений
  • Пользователь

Опубликовано 01.10.2019 - 15:52

ну п1 в карточке товара работать будет а если  эта конструкция используется в другом месте то работать перестанет. Имхо

проще изменить верстку поменяв местами div в табах

Решено! Помогло исправление порядка блоков. Спасибо за ответ. 






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых