Jump to content

Не отображаются названия товаров в корзине


Recommended Posts

Добрый день! Если в корзину добавлено несколько товаров, то на странице корзины одображается только имя последнего добавленого товара. Но, картинка и цена других товаров есть. http://prnt.sc/bvpfc4

В чем может быть проблема?

Link to post
Share on other sites

Покажите содержимое файла 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');
	}
	
}
Link to post
Share on other sites

Дайте ссылку ваш сайт.

 

Проверил вышеуказанные html и php, все нормально показывается.

На локальном тоже все работает, но жалуются, что пустые поля в списке варианта появляются. Может это связано.http://prnt.sc/bvq0jy

 

 

 

 

Спасибо за оперативность. :)

Link to post
Share on other sites

Попробуйте распечатать переменную $cart, примерно так:

<pre>{$cart|print_r}</pre>
Посмотрим что распечатает.

А вообще судя по всему у вас проблема индивидуальная, нужно бы фтп чтобы посмотреть что не так.

Link to post
Share on other sites

 

Попробуйте распечатать переменную $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
Link to post
Share on other sites
  • 4 years later...

Дайте FTP гляну, быстрее будет чем тут гадать.

Добрый вечер, столкнулся с точно такой же ошибкой. Удалось ее победить? Поделитесь решением?

Link to post
Share on other sites

Добрый вечер, столкнулся с точно такой же ошибкой. Удалось ее победить? Поделитесь решением?

Я так понимаю это спам боты...
Link to post
Share on other sites

Как бороться?

Искать вирус на сайте?

Нет. Я думал это вы спам бот, оказывается нет.

Касаемо вашей проблемы: опишите в чём проблема, ведь теме уже 4 года...

Link to post
Share on other sites

Нет. Я думал это вы спам бот, оказывается нет.

Касаемо вашей проблемы: опишите в чём проблема, ведь теме уже 4 года...

Покупаю товары:

 
Перехожу на стр. оформления заказа и названия первого товара нет. Внизу страницы https://demo.santehnika-tut.com.ua/cart вывел массив cart, у первого товара массив product пустой.
 
demo.jpg
 
 
Link to post
Share on other sites

Работает хаотично, с ПК есть баг с телефона всё в норме.

Нужен фтп доступ для поиска и устранения бага.

Черканите в телегу @noxter, помогу.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...