Перейти к содержанию
Официальный форум поддержки Simpla

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


Рекомендуемые сообщения

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

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

Ссылка на сообщение
Поделиться на другие сайты

Покажите содержимое файла cart.tpl

А также view/CartView.php и view/OrderView.php

Изменено пользователем strukov
Ссылка на сообщение
Поделиться на другие сайты

Покажите содержимое файла 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');
	}
	
}
Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

 

 

 

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

 

Попробуйте распечатать переменную $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
Ссылка на сообщение
Поделиться на другие сайты
  • 4 года спустя...

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

Я так понимаю это спам боты...
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 
Перехожу на стр. оформления заказа и названия первого товара нет. Внизу страницы https://demo.santehnika-tut.com.ua/cart вывел массив cart, у первого товара массив product пустой.
 
demo.jpg
 
 
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...