masha Опубликовано 1 октября, 2019 Жалоба Поделиться Опубликовано 1 октября, 2019 Может кто-нибудь подскажет решение проблемы.После реализации в карточке товара вкладок (описание и рекомендуемые товары), обнаружилась ошибка. В описании выводится последний рекомендуемый товар, а не сама основная карточка. Сразу хочу сказать, что в HTML только с базовыми знаниями, не кидайтесь тапками) Пример страницы:https://shop-vatra.by/products/svarochnaya-provoloka-omednennaya-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} Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 1 октября, 2019 Жалоба Поделиться Опубликовано 1 октября, 2019 </div><!-- .tabs --> удалите это Цитата Ссылка на сообщение Поделиться на другие сайты
masha Опубликовано 1 октября, 2019 Автор Жалоба Поделиться Опубликовано 1 октября, 2019 (изменено) </div><!-- .tabs --> удалите этоне помогает, при удалении летит верстка и не меняется в карточке ничего Изменено 1 октября, 2019 пользователем masha Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 1 октября, 2019 Жалоба Поделиться Опубликовано 1 октября, 2019 если вырезать этот кусок кода {foreach $related_products as $product} <li class="product">{include file='tpl_products_blocks.tpl'}</li> {/foreach} то описание будет текущего товара? Цитата Ссылка на сообщение Поделиться на другие сайты
masha Опубликовано 1 октября, 2019 Автор Жалоба Поделиться Опубликовано 1 октября, 2019 если вырезать этот кусок кода {foreach $related_products as $product} <li class="product">{include file='tpl_products_blocks.tpl'}</li> {/foreach} то описание будет текущего товара?Да, но не показываются рекомендованные товары((( Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 1 октября, 2019 Жалоба Поделиться Опубликовано 1 октября, 2019 тогда поменяйте верстку местами <div class="tabs__content active"> ваш код </div> <div class="tabs__content"> ваш код </div> замените на <div class="tabs__content"> ваш код </div><div class="tabs__content active"> ваш код </div> Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 1 октября, 2019 Жалоба Поделиться Опубликовано 1 октября, 2019 Эта часть {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 Опубликовано 1 октября, 2019 Автор Жалоба Поделиться Опубликовано 1 октября, 2019 (изменено) Эта часть{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.tpl2. Восстановить основную переменную после работы цикла{$product_ini=$product}{foreach $related_products as $product}<li class="product">{include file='tpl_products_blocks.tpl'}</li>{/foreach}{$product=$product_ini}впринципе я согласна)))))) но как это исправить я не понимаю. базовые знания знаете ли мешают... но я стараюсь))) сейчас погуглю Изменено 1 октября, 2019 пользователем masha Цитата Ссылка на сообщение Поделиться на другие сайты
masha Опубликовано 1 октября, 2019 Автор Жалоба Поделиться Опубликовано 1 октября, 2019 впринципе я согласна)))))) но как это исправить я не понимаю. базовые знания знаете ли мешают... но я стараюсь))) сейчас погуглюа может кто исправить? не бесплатно, конечно же. я перепробовала все, не помогает Цитата Ссылка на сообщение Поделиться на другие сайты
DmitryCH Опубликовано 1 октября, 2019 Жалоба Поделиться Опубликовано 1 октября, 2019 впринципе я согласна)))))) но как это исправить я не понимаю. базовые знания знаете ли мешают... но я стараюсь))) сейчас погуглюПросто поменяйте это:{foreach $related_products as $product} На это:{foreach $related_products as $product1}(вместо product1 можно любое имя использовать) И скажите, что будет. Если работать не будет, то в файле tpl_products_blocks.tpl тоже замените $product на $product1 или любое другое имя Цитата Ссылка на сообщение Поделиться на другие сайты
masha Опубликовано 1 октября, 2019 Автор Жалоба Поделиться Опубликовано 1 октября, 2019 Просто поменяйте это:{foreach $related_products as $product} На это:{foreach $related_products as $product1}(вместо product1 можно любое имя использовать) И скажите, что будет. Если работать не будет, то в файле tpl_products_blocks.tpl тоже замените $product на $product1 или любое другое имяСпасибо! Огромное! Цитата Ссылка на сообщение Поделиться на другие сайты
masha Опубликовано 1 октября, 2019 Автор Жалоба Поделиться Опубликовано 1 октября, 2019 (изменено) Просто поменяйте это:{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> Изменено 1 октября, 2019 пользователем masha Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 1 октября, 2019 Жалоба Поделиться Опубликовано 1 октября, 2019 Эта часть{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.tpl2. Восстановить основную переменную после работы цикла{$product_ini=$product}{foreach $related_products as $product}<li class="product">{include file='tpl_products_blocks.tpl'}</li>{/foreach}{$product=$product_ini} ну п1 в карточке товара работать будет а если эта конструкция используется в другом месте то работать перестанет. Имхопроще изменить верстку поменяв местами div в табах Цитата Ссылка на сообщение Поделиться на другие сайты
masha Опубликовано 1 октября, 2019 Автор Жалоба Поделиться Опубликовано 1 октября, 2019 ну п1 в карточке товара работать будет а если эта конструкция используется в другом месте то работать перестанет. Имхопроще изменить верстку поменяв местами div в табахРешено! Помогло исправление порядка блоков. Спасибо за ответ. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.