[Помогите] Вывести "предзаказ" в корзине и оформлении товара

Тема в разделе "OpenCart", создана пользователем fster, 12 апр 2013.

  1. fster

    fster

    Регистрация:
    14 ноя 2012
    Сообщения:
    105
    Симпатии:
    38
    Доброго дня всем! В магазине есть товар "Наличие: есть на складе" и "Наличие: Предзаказ". Подумал что было бы удобнее вывести в корзине и оформлении товара у товаров которые по "предзаказу" строчку Предзаказ.

    Есть пример, не мой:
    [​IMG][​IMG]
     
  2. fster

    fster

    Регистрация:
    14 ноя 2012
    Сообщения:
    105
    Симпатии:
    38
    Так ни у кого мыслей и не появилось??? Думаю многим бы это пригодилось.
     
  3. alex_vin

    alex_vin

    Регистрация:
    28 дек 2012
    Сообщения:
    119
    Симпатии:
    30
    А модуль корзины штатный или simple?
     
  4. fster

    fster

    Регистрация:
    14 ноя 2012
    Сообщения:
    105
    Симпатии:
    38
    Simple стоит
     
  5. alex_vin

    alex_vin

    Регистрация:
    28 дек 2012
    Сообщения:
    119
    Симпатии:
    30
    Нужно добавить переменную в checkout/simplecheckout
    <?php echo $stock; ?>
     
    fster нравится это.
  6. denya

    denya

    Регистрация:
    2 мар 2013
    Сообщения:
    130
    Симпатии:
    35
    Чтобы вывести состояние товара на складе используйте поле stock из информации о продукте; она передается для использования в темплейт корзины, но нигде не задействована.
    вот, что передается из контроллера корзины и доступно в темплейте (catalog/controller/checkout/cart.php):
    PHP:
                    $this->data['products'][] = array(
                          
    'key'      => $product['key'],
                          
    'thumb'    => $image,
                        
    'name'     => $product['name'],
                          
    'model'    => $product['model'],
                          
    'option'  => $option_data,
                          
    'quantity' => $product['quantity'],
                          
    'stock'    => $product['stock'],
                        
    'reward'  => ($product['reward'] ? sprintf($this->language->get('text_reward'), $product['reward']) : ''),
                        
    'price'    => $price,
                        
    'total'    => $total,
                        
    'href'     => $this->url->link('product/product''product_id=' $product['product_id'])
                    );
    Таким образом меняйте в catalog/view/theme/default/template/checkout/cart.tpl вот эту часть:
    PHP:
      <?php foreach ($products as $product) { ?>
      <tr>
        <td class="image"><?php if ($product['thumb']) { ?>
          <a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" title="<?php echo $product['name']; ?>" /></a>
          <?php ?></td>
        <td class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a>
          <div>
            <?php foreach ($product['option'] as $option) { ?>
            - <small><?php echo $option['name']; ?> <?php echo $option['value']; ?></small><br />
            <?php ?>
          </div></td>
        <td class="quantity">x&nbsp;<?php echo $product['quantity']; ?></td>
        <td class="total"><?php echo $product['total']; ?></td>
        <td class="remove"><img src="catalog/view/theme/default/image/close.png" alt="<?php echo $button_remove?>" title="<?php echo $button_remove?>" onclick="removeCart('<?php echo $product['key']; ?>');" /></td>
      </tr>
      <?php ?>
    Добавляйте $product['stock'] там, где это необходимо.
    --- добавлено: Apr 17, 2013 8:25 AM ---
    это для стандартной корзины. Для модулей нужно смотреть в конкретном случае.
     
    fster нравится это.
  7. fster

    fster

    Регистрация:
    14 ноя 2012
    Сообщения:
    105
    Симпатии:
    38
    Статус предзаказа для мини корзины кому нужен.

    Код:
    <?xml version="1.0" encoding="UTF-8"?>
    <modification>
    	<id><![CDATA[Product]]></id>
    	<version><![CDATA[1.0]]></version>
    	<vqmver><![CDATA[]]></vqmver>
    	<author><![CDATA[fster]]></author>
    	<file name="catalog/controller/module/cart.php">
    	   
    	<operation error="log">
    		<search position="after" ><![CDATA['total'	=> $total,]]></search>
    		<add><![CDATA['stock'	=> $product['stock'],]]></add>
    	</operation>
     
    	</file>
     
       
    	<file name="catalog/view/theme/*/template/module/cart.tpl">
    	   
    	<operation error="log">
    		<search position="after" ><![CDATA[<td class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a>]]></search>
    		<add><![CDATA[<?php if (!$product['stock']) { ?><br><div class="stock">(Предзаказ)</div><?php } ?>]]></add>
    	</operation>
     
    	</file>
     
    </modification>
     
  8. noobie

    noobie

    Регистрация:
    27 мар 2013
    Сообщения:
    174
    Симпатии:
    22
    А как оно будет обрабатывать ситуации если допустим в магазине 1 единица товара а заказывают 2?
     
  9. fster

    fster

    Регистрация:
    14 ноя 2012
    Сообщения:
    105
    Симпатии:
    38
    У симплы есть стандартное предупреждение если товаров нет на остатке. выводится при оформлении
     
  10. galas

    galas

    Регистрация:
    6 фев 2013
    Сообщения:
    107
    Симпатии:
    3
    вообще-то - хорошо бы сделать 2 корзины, или 2 отдела в корзине: Общая и Предзаказ (для товаров с инд. оплатой по выставленным счетам)
     
  11. nadinvg

    nadinvg

    Регистрация:
    5 авг 2014
    Сообщения:
    1
    Симпатии:
    0
    Прошу прощения за глупый вопрос, но не могу понять куда именно это нужно скопировать или вместо чего? У меня стоит Simple. Мне нужно данный код скопировать в этот файл, но куда именно - catalog/view/theme/моя тема/template/checkout/cart.tpl ?
    Буду благодарна за Вашу помощь)