AFI Posted July 26, 2016 Report Share Posted July 26, 2016 Добрый день! Если в корзину добавлено несколько товаров, то на странице корзины одображается только имя последнего добавленого товара. Но, картинка и цена других товаров есть. http://prnt.sc/bvpfc4В чем может быть проблема? Quote Link to post Share on other sites
strukov Posted July 26, 2016 Report Share Posted July 26, 2016 (edited) Покажите содержимое файла cart.tplА также view/CartView.php и view/OrderView.php Edited July 26, 2016 by strukov Quote Link to post Share on other sites
AFI Posted July 26, 2016 Author Report Share Posted July 26, 2016 Покажите содержимое файла cart.tplА также view/CartView.php {$meta_title = "Корзина" scope=parent} <h3>{if $cart->purchases}В корзине {$cart->total_products} {$cart->total_products|plural:'товар':'товаров':'товара'}{else}Корзина пуста{/if}</h3> <div class="gap gap-mini"></div> {if $cart->purchases} <form method="post" name="cart" class="form"> {if $coupon_error} <div class="row"> <div class="col-md-12"> <div class="alert alert-danger"><button type="button" class="close" data-dismiss="alert">×</button> {if $coupon_error == 'invalid'}Купон недействителен{/if} </div> </div> </div> {/if} <div class="row"> <div class="col-md-12"> <table class="table cart-table"> <tbody> {foreach $cart->purchases as $purchase name=purchase} <tr> <!-- Картинка --> <td class="cart-item-image" {if $smarty.foreach.purchase.first}style="border-top: 0;"{/if}> {$image = $purchase->product->images|first} <a href="products/{$purchase->product->url}"><img src="{if $image}{$image->filename|resize:50:50}{else}design/{$settings->theme|escape}/img/70x70.png{/if}" alt="{$purchase->product->name|escape}" title="{$purchase->product->name|escape}" /></a> </td> <!-- Название --> <td {if $smarty.foreach.purchase.first}style="border-top: 0;"{/if}><a href="products/{$purchase->product->url}">{$purchase->product->name|escape}</a></td> {* <!-- Цена за единицу --> <td>{($purchase->variant->price)|convert}<noindex><!--googleoff: all--> {$currency->sign|escape}{if $purchase->variant->unit}/{$purchase->variant->unit}{/if}<!--googleon: all--></noindex></td> *} <!-- Количество --> <td class="cart-item-quantity" {if $smarty.foreach.purchase.first}style="border-top: 0;"{/if}> <i class="fa fa-minus cart-item-minus"></i> <input type="text" name="amounts[{$purchase->variant->id}]" class="cart-quantity" value="{$purchase->amount}" /> <i class="fa fa-plus cart-item-plus"></i> </td> <!-- Цена за единицу --> <td {if $smarty.foreach.purchase.first}style="border-top: 0;"{/if}>{($purchase->variant->price*$purchase->amount)|convert}<noindex><!--googleoff: all--> {$currency->sign|escape}{if $purchase->variant->unit}/{$purchase->variant->unit}{/if}<!--googleon: all--></noindex></td> <td class="cart-item-remove" {if $smarty.foreach.purchase.first}style="border-top: 0;"{/if}><a class="fa fa-times" href="cart/remove/{$purchase->variant->id}"></a></td> </tr> {/foreach} {if $coupon_request} <tr> <td colspan="6" style="text-align: left;"> <div class="form-group col-md-12"> <label>Код купона или подарочного ваучера</label> {if $cart->coupon->min_order_price > 0} <small>(купон "{$cart->coupon->code|escape}" действует для заказов от {$cart->coupon->min_order_price|convert} {$currency->sign})</small> {/if} <input type="text" name="coupon_code" value="{$cart->coupon->code|escape}" class="form-control"> </div> </td> </tr> {/if} </tbody> </table> </div> </div> <div class="row"> <div class="col-md-offset-3 col-md-6"> <ul class="cart-total-list"> {if $user->discount} <li><span>Ваша скидка</span><span>{$user->discount} %</span></li> {/if} {if $cart->coupon_discount > 0} <li><span>Купон</span><span>−{$cart->coupon_discount|convert} {$currency->sign}</span></li> {/if} <li><span>ИТОГО</span><span>{$cart->total_price|convert}<noindex><!--googleoff: all--> {$currency->sign|escape}<!--googleon: all--></noindex></span></li> </ul> </div> <div class="col-md-3"><a href="javascript:void(0);" onclick="document.cart.submit();" class="btn btn-primary">Обновить корзину</a></div> </div> <div class="gap gap-mini"></div> {* Доставка *} {if $deliveries} <h4>Выберите способ доставки</h4> <div class="row"> <div class="col-md-12"> {foreach $deliveries as $delivery} <div class="form-group"> <div class="radio"> <label> <input type="radio" name="delivery_id" value="{$delivery->id}" {if $delivery_id==$delivery->id}checked{elseif $delivery@first}checked{/if}> {$delivery->name} {if $cart->total_price < $delivery->free_from && $delivery->price>0} (Стоимость доставки — {$delivery->price|convert} {$currency->sign}) {elseif $cart->total_price >= $delivery->free_from} {*(Бесплатно)*} {/if} </label> </div> <div class="delivery-description">{$delivery->description}</div> </div> {/foreach} </div> </div> <div class="gap gap-mini"></div> {/if} {if $error} <div class="row"> <div class="col-md-12"> <div class="alert alert-danger"><button type="button" class="close" data-dismiss="alert">×</button> {if $error == 'empty_name'}Введите имя{/if}{if $error == 'empty_email'}Введите email{/if}{if $error == 'empty_phone'}Введите телефон{/if}{if $error == 'captcha'}Неверно введена капча{/if} </div> </div> </div> {/if} <h4>Информация о покупателе</h4> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label for="">Имя, фамилия</label> <input type="text" name="name" value="{$name|escape}" placeholder="Ваше имя, фамилия" class="form-control" data-format=".+" data-notice="Введите имя" maxlength="100"> </div> <div class="form-group"> <label for="">E-mail</label> <input type="text" name="email" value="{$email|escape}" placeholder="email@domain.com" class="form-control" data-format="email" data-notice="Введите email" maxlength="100"> </div> <div class="form-group"> <label for="">Телефон <small style="font-weight: normal;">(формат +380 (67) 111-2233)</small></label> <input type="text" name="phone" class="form-control bfh-phone" placeholder="+380 (67) 111-2233" data-format="+380 (dd) ddd-dddd" data-notice="Введите телефон" maxlength="100"> </div> <div class="form-group"> <label for="">Адрес</label> <input type="text" name="address" value="{$address|escape}" placeholder="Ваш адрес" class="form-control" data-format=".+" data-notice="Введите адрес" maxlength="255"> </div> <div class="form-group"> <label>Комментарий к заказу</label> <textarea name="comment" class="form-control" rows="3" placeholder="Ваш комментарий">{$comment|escape}</textarea> </div> <div class="form-group"> <img src="captcha/image.php?{math equation='rand(10,10000)'}" style="width: 91px; height: 43px;" /> </div> <div class="form-group"> <label for="">Картинка</label> <input type="text" name="captcha_code" value="" placeholder="Цифры с картинки" class="form-control" data-format="\d\d\d\d\d" data-notice="Введите капчу"> </div> <input type="submit" name="checkout" class="btn btn-primary btn-lg" value="Оформить заказ"> </div> </div> <div class="gap gap-mini"></div> </form> {/if} <?PHP /** * Simpla CMS * * @copyright 2009 Denis Pikusov * @link http://simp.la * @author Denis Pikusov * * Корзина покупок * Этот класс использует шаблон cart.tpl * */ require_once('View.php'); class CartView extends View { ////////////////////////////////////////// // Изменения товаров в корзине ////////////////////////////////////////// public function __construct() { parent::__construct(); // Если передан id варианта, добавим его в корзину if($variant_id = $this->request->get('variant', 'integer')) { $this->cart->add_item($variant_id, $this->request->get('amount', 'integer')); header('location: '.$this->config->root_url.'/cart/'); } // Удаление товара из корзины if($delete_variant_id = intval($this->request->get('delete_variant'))) { $this->cart->delete_item($delete_variant_id); if(!isset($_POST['submit_order']) || $_POST['submit_order']!=1) header('location: '.$this->config->root_url.'/cart/'); } // Если нажали оформить заказ if(isset($_POST['checkout'])) { $order = new stdClass; $order->delivery_id = $this->request->post('delivery_id', 'integer'); $order->name = $this->request->post('name'); $order->email = $this->request->post('email'); $order->address = $this->request->post('address'); $order->phone = $this->request->post('phone'); $order->comment = $this->request->post('comment'); $order->ip = $_SERVER['REMOTE_ADDR']; $this->design->assign('delivery_id', $order->delivery_id); $this->design->assign('name', $order->name); $this->design->assign('email', $order->email); $this->design->assign('phone', $order->phone); $this->design->assign('address', $order->address); $captcha_code = $this->request->post('captcha_code', 'string'); // Скидка $cart = $this->cart->get_cart(); $order->discount = $cart->discount; if($cart->coupon) { $order->coupon_discount = $cart->coupon_discount; $order->coupon_code = $cart->coupon->code; } // if(!empty($this->user->id)) $order->user_id = $this->user->id; if(empty($order->name)) { $this->design->assign('error', 'empty_name'); } elseif(empty($order->email)) { $this->design->assign('error', 'empty_email'); } elseif($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code)) { $this->design->assign('error', 'captcha'); } else { // Добавляем заказ в базу $order_id = $this->orders->add_order($order); $_SESSION['order_id'] = $order_id; // Если использовали купон, увеличим количество его использований if($cart->coupon) $this->coupons->update_coupon($cart->coupon->id, array('usages'=>$cart->coupon->usages+1)); // Добавляем товары к заказу foreach($this->request->post('amounts') as $variant_id=>$amount) { $this->orders->add_purchase(array('order_id'=>$order_id, 'variant_id'=>intval($variant_id), 'amount'=>intval($amount))); } $order = $this->orders->get_order($order_id); // Стоимость доставки $delivery = $this->delivery->get_delivery($order->delivery_id); if(!empty($delivery) && $delivery->free_from > $order->total_price) { $this->orders->update_order($order->id, array('delivery_price'=>$delivery->price, 'separate_delivery'=>$delivery->separate_payment)); } // Отправляем письмо пользователю $this->notify->email_order_user($order->id); // Отправляем письмо администратору $this->notify->email_order_admin($order->id); // Очищаем корзину (сессию) $this->cart->empty_cart(); // Перенаправляем на страницу заказа header('Location: '.$this->config->root_url.'/order/'.$order->url); } } else { // Если нам запостили amounts, обновляем их if($amounts = $this->request->post('amounts')) { foreach($amounts as $variant_id=>$amount) { $this->cart->update_item($variant_id, $amount); } $coupon_code = trim($this->request->post('coupon_code', 'string')); if(empty($coupon_code)) { $this->cart->apply_coupon(''); header('location: '.$this->config->root_url.'/cart/'); } else { $coupon = $this->coupons->get_coupon((string)$coupon_code); if(empty($coupon) || !$coupon->valid) { $this->cart->apply_coupon($coupon_code); $this->design->assign('coupon_error', 'invalid'); } else { $this->cart->apply_coupon($coupon_code); header('location: '.$this->config->root_url.'/cart/'); } } } } } ////////////////////////////////////////// // Основная функция ////////////////////////////////////////// function fetch() { // Способы доставки $deliveries = $this->delivery->get_deliveries(array('enabled'=>1)); $this->design->assign('deliveries', $deliveries); // Данные пользователя if($this->user) { $last_order = $this->orders->get_orders(array('user_id'=>$this->user->id, 'limit'=>1)); $last_order = reset($last_order); if($last_order) { $this->design->assign('name', $last_order->name); $this->design->assign('email', $last_order->email); $this->design->assign('phone', $last_order->phone); $this->design->assign('address', $last_order->address); } else { $this->design->assign('name', $this->user->name); $this->design->assign('email', $this->user->email); } } // Если существуют валидные купоны, нужно вывести инпут для купона if($this->coupons->count_coupons(array('valid'=>1))>0) $this->design->assign('coupon_request', true); // Выводим корзину return $this->design->fetch('cart.tpl'); } } Quote Link to post Share on other sites
ABSORBER Posted July 26, 2016 Report Share Posted July 26, 2016 Дайте ссылку ваш сайт. Проверил вышеуказанные html и php, все нормально показывается. Quote Link to post Share on other sites
Noxter Posted July 26, 2016 Report Share Posted July 26, 2016 Дайте ссылку ваш сайт. Проверил вышеуказанные html и php, все нормально показывается.http://budcentre.com.ua/ Quote Link to post Share on other sites
AFI Posted July 26, 2016 Author Report Share Posted July 26, 2016 Дайте ссылку ваш сайт. Проверил вышеуказанные html и php, все нормально показывается.На локальном тоже все работает, но жалуются, что пустые поля в списке варианта появляются. Может это связано.http://prnt.sc/bvq0jy http://budcentre.com.ua/ Спасибо за оперативность. Quote Link to post Share on other sites
Noxter Posted July 26, 2016 Report Share Posted July 26, 2016 Попробуйте распечатать переменную $cart, примерно так: <pre>{$cart|print_r}</pre> Посмотрим что распечатает.А вообще судя по всему у вас проблема индивидуальная, нужно бы фтп чтобы посмотреть что не так. Quote Link to post Share on other sites
AFI Posted July 26, 2016 Author Report Share Posted July 26, 2016 (edited) Куда то значения ключа name пропадают. Edited July 26, 2016 by AFI Quote Link to post Share on other sites
AFI Posted July 26, 2016 Author Report Share Posted July 26, 2016 Попробуйте распечатать переменную $cart, примерно так: <pre>{$cart|print_r}</pre> Посмотрим что распечатает.А вообще судя по всему у вас проблема индивидуальная, нужно бы фтп чтобы посмотреть что не так.Куда то значения ключа name пропадают. stdClass Object ( [purchases] => Array ( [0] => stdClass Object ( [product] => stdClass Object ( [images] => Array ( [3849] => stdClass Object ( [id] => 3849 [product_id] => 3021 [name] => [filename] => fakro_-ftp-v-u3-electro-full.jpg [position] => 0 ) ) ) [variant] => stdClass Object ( [id] => 6356 [product_id] => 3021 [price] => 6283.20 [unit] => шт. [compare_price] => 7854.00 [sku] => [stock] => 500 [infinity] => 1 [name] => (01) 55x78 см. [attachment] => [position] => 6345 ) [amount] => 1 ) [1] => stdClass Object ( [product] => stdClass Object ( [images] => Array ( [4572] => stdClass Object ( [id] => 4572 [product_id] => 3090 [name] => [filename] => fdy-v-u3-duet-prosky.jpg [position] => 0 ) [4574] => stdClass Object ( [id] => 4574 [product_id] => 3090 [name] => [filename] => okno-wysokooosiowe-naswietle-druk.jpg [position] => 1 ) ) ) [variant] => stdClass Object ( [id] => 6809 [product_id] => 3090 [price] => 11228.80 [unit] => шт. [compare_price] => 14036.00 [sku] => [stock] => 500 [infinity] => 1 [name] => (CA) 78x186 см. [attachment] => [position] => 6809 ) [amount] => 1 ) [2] => stdClass Object ( [product] => stdClass Object ( [id] => 3293 [url] => gidroizolyatsionnyj-fartuk-bfx-1000 [brand_id] => 45 [name] => Гидроизоляционный фартук BFX 1000 [annotation] => Комплект для гидро- и теплоизоляции для еще более простой и надежной установки мансардного окна. Комплект BDX включает теплоизоляционный контур для утепления между окном и кровлей. Гофрированный гидроизоляционный фартук для герметичного соединения окна с гидроизоляцией кровли. Дренажный желоб отводит от окна воду, которая может проникнуть под кровельный материал. Дренажный желоб и гидроизоляционный фартук можно купить отдельно в комплекте BFX 1000, если установка комплекта BDX невозможна. [body] => Комплект для гидро- и теплоизоляции для еще более простой и надежной установки мансардного окна. Комплект BDX включает теплоизоляционный контур для утепления между окном и кровлей. Гофрированный гидроизоляционный фартук для герметичного соединения окна с гидроизоляцией кровли. Дренажный желоб отводит от окна воду, которая может проникнуть под кровельный материал. Дренажный желоб и гидроизоляционный фартук можно купить отдельно в комплекте BFX 1000, если установка комплекта BDX невозможна. [position] => 2980 [created] => [visible] => 1 [featured] => [meta_title] => Гидроизоляционный фартук BFX 1000 [meta_keywords] => Гидроизоляционный фартук BFX 1000, Velux, Мансардные окна [meta_description] => Модель ESR 0000 используется для плоских кровельных покрытий, таких как битумная черепица, сланец, фальцевая кровля. Применение оклада является обязательной необходимостью для надежной установки мансардного окна в крышу. Он предотвращает попадание воды и снега под кровельное покрытие. Благодаря специальной системе водоотводящих канавок вокруг окна, вода обтекает его и продолжает беспрепятственное движение вниз по скату к водосточному желобу. детали оклада выполнены из окрашенного листового а [brand] => Velux [brand_url] => velux [images] => Array ( [5098] => stdClass Object ( [id] => 5098 [product_id] => 3293 [name] => [filename] => bfx-1000-700x700.jpg [position] => 0 ) ) ) [variant] => stdClass Object ( [id] => 7193 [product_id] => 3293 [price] => 456.00 [unit] => шт. [compare_price] => [sku] => [stock] => 500 [infinity] => 1 [name] => (CR02) 55x78 см. [attachment] => [position] => 7193 ) [amount] => 1 ) ) [total_price] => 17968 [total_products] => 3 [coupon] => [discount] => 0 [coupon_discount] => 0 ) 1 Quote Link to post Share on other sites
Noxter Posted July 26, 2016 Report Share Posted July 26, 2016 Дайте FTP гляну, быстрее будет чем тут гадать. Quote Link to post Share on other sites
transinffo Posted July 28, 2020 Report Share Posted July 28, 2020 Дайте FTP гляну, быстрее будет чем тут гадать.Добрый вечер, столкнулся с точно такой же ошибкой. Удалось ее победить? Поделитесь решением? Quote Link to post Share on other sites
Noxter Posted July 28, 2020 Report Share Posted July 28, 2020 Добрый вечер, столкнулся с точно такой же ошибкой. Удалось ее победить? Поделитесь решением?Я так понимаю это спам боты... Quote Link to post Share on other sites
transinffo Posted July 29, 2020 Report Share Posted July 29, 2020 Я так понимаю это спам боты...Как бороться?Искать вирус на сайте? Quote Link to post Share on other sites
Noxter Posted July 29, 2020 Report Share Posted July 29, 2020 Как бороться? Искать вирус на сайте?Нет. Я думал это вы спам бот, оказывается нет. Касаемо вашей проблемы: опишите в чём проблема, ведь теме уже 4 года... Quote Link to post Share on other sites
transinffo Posted July 29, 2020 Report Share Posted July 29, 2020 Нет. Я думал это вы спам бот, оказывается нет.Касаемо вашей проблемы: опишите в чём проблема, ведь теме уже 4 года...Покупаю товары:https://demo.santehnika-tut.com.ua/products/linejnyj-trap-s-reshetkoj-q-tap-60-sm-600660-crm-qt600660crmhttps://demo.santehnika-tut.com.ua/products/linejnyj-trap-s-reshetkoj-q-tap-80-sm-800860-cr-qt800860crm Перехожу на стр. оформления заказа и названия первого товара нет. Внизу страницы https://demo.santehnika-tut.com.ua/cart вывел массив cart, у первого товара массив product пустой. Quote Link to post Share on other sites
Noxter Posted July 29, 2020 Report Share Posted July 29, 2020 Работает хаотично, с ПК есть баг с телефона всё в норме. Нужен фтп доступ для поиска и устранения бага. Черканите в телегу @noxter, помогу. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.