Перейти к содержанию
Форум поддержки пользователей VamShop

Можно ли выводить склад атрибутов в корзине?


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

Здравствуйте.

Подскажите пожалуйста, возможно ли выводить в корзине (order_details.html) количество товара на складе на данный момент, или кол-во склада атрибутов {$item_data.STOCK} на данный момент (если у товара выбраны атрибуты)?

Если я правильно понимаю, нужно в файле order_details.html что-то добавить вот в эти строки, где выводятся сами атрибуты:

        {foreach key=key_data item=item_data from=$module_data.ATTRIBUTES}

        <tr>

          <td>{$item_data.NAME}:</td>

          <td align="left">{$item_data.VALUE_NAME}</td>

        </tr>

        {/foreach}

Если не сложно, подскажите пожалуйста, а то не силен я в этом, разбираюсь чисто интуитивно :)

У меня некоторые клиенты добавляют товар в корзину, которого в данный момент нет на складе, и время от времени заходят в магазин посмотреть, не появился ли он. Данная опция была бы полезна.

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

По умолчанию нельзя.

Но можно попробовать в /includes/modules/order_details_cart.php поменять:


$module_content[$i]['ATTRIBUTES'][] = array ('ID' => $products[$i][$option]['products_attributes_id'], 'MODEL' => vam_get_attributes_model(vam_get_prid($products[$i]['id']), $products[$i][$option]['products_options_values_name'],$products[$i][$option]['products_options_name']), 'NAME' => $products[$i][$option]['products_options_name'], 'VALUE_NAME' => $products[$i][$option]['products_options_values_name'].$attribute_stock_check);
[/code] на:
[code]
$module_content[$i]['ATTRIBUTES'][] = array ('ID' => $products[$i][$option]['products_attributes_id'], 'MODEL' => vam_get_attributes_model(vam_get_prid($products[$i]['id']), $products[$i][$option]['products_options_values_name'],$products[$i][$option]['products_options_name']), 'NAME' => $products[$i][$option]['products_options_name'], 'STOCK' => vam_get_attributes_stock(vam_get_prid($products[$i]['id']), $products[$i][$option]['products_options_values_name'],$products[$i][$option]['products_options_name']), 'VALUE_NAME' => $products[$i][$option]['products_options_values_name'].$attribute_stock_check);

function vam_get_attributes_stock($product_id, $attribute_name,$options_name,$language='')

    {

    if ($language=='') $language=$_SESSION['languages_id'];

    $options_value_id_query=vam_db_query("SELECT

pa.attributes_stock

FROM

".TABLE_PRODUCTS_ATTRIBUTES." pa

Inner Join ".TABLE_PRODUCTS_OPTIONS." po ON po.products_options_id = pa.options_id

Inner Join ".TABLE_PRODUCTS_OPTIONS_VALUES." pov ON pa.options_values_id = pov.products_options_values_id

WHERE

po.language_id = '".$language."' AND

po.products_options_name = '".$options_name."' AND

pov.language_id = '".$language."' AND

pa.products_id = '".$product_id."' AND

pov.products_options_values_name = '".$attribute_name."'");





    $options_attr_data = vam_db_fetch_array($options_value_id_query);

    return $options_attr_data['attributes_stock'];

   

    }

и в шаблоне использовать метку {$item_data.STOCK}

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

Что-то не получилось. Как только поменял в order_details_cart.php , сразу в корзине ошибку выдавать стал:

Fatal error: Call to undefined function vam_get_attributes_stock() in /var/www/.../htdocs/includes/modules/order_details_cart.php on line 75

Версия у меня 1.62, на всякий случай.

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

Попробуйте вот этот код:


function vam_get_attributes_stock($product_id, $attribute_name,$options_name,$language='')

    {

    if ($language=='') $language=$_SESSION['languages_id'];

    $options_value_id_query=vam_db_query("SELECT

pa.attributes_stock

FROM

".TABLE_PRODUCTS_ATTRIBUTES." pa

Inner Join ".TABLE_PRODUCTS_OPTIONS." po ON po.products_options_id = pa.options_id

Inner Join ".TABLE_PRODUCTS_OPTIONS_VALUES." pov ON pa.options_values_id = pov.products_options_values_id

WHERE

po.language_id = '".$language."' AND

po.products_options_name = '".$options_name."' AND

pov.language_id = '".$language."' AND

pa.products_id = '".$product_id."' AND

pov.products_options_values_name = '".$attribute_name."'");





    $options_attr_data = vam_db_fetch_array($options_value_id_query);

    return $options_attr_data['attributes_stock'];

   

    }
[/code] сохранить в файл /inc/vam_get_attributes_stock.inc.php Затем в /includes/modules/order_details_cart.php поменять:
[code]
require_once (DIR_FS_INC.'vam_get_attributes_model.inc.php');
на:

require_once (DIR_FS_INC.'vam_get_attributes_model.inc.php');
require_once (DIR_FS_INC.'vam_get_attributes_stock.inc.php');
[/code] [/code]
Ссылка на сообщение
Поделиться на другие сайты

Огромное спасибо, разобрался. Я Ваш код сохранил в файл в таком же виде, как и другие ваши файлы в этой папке, с шапкой VaM Shop.

Если кому-то еще такое нужно будет, выкладываю пошаговую инструкцию.

Выводим в корзине кол-во склада атрибутов {$item_data.STOCK} на данный момент (если у товара выбраны атрибуты)

Инструкция для дефолтного шаблона vamshop (/templates/vamshop)

1. Скачиваем приложенный файл vam_get_attributes_stock.inc.php и закачиваем в папку магазина /inc/

2. В файле /templates/vamshop/module/order_details.html

строку

<td align="left">{$item_data.VALUE_NAME}</td>
меняем на
<td align="left">{$item_data.VALUE_NAME}(На складе {$item_data.STOCK}шт.)</td>
Или измените, как хочется, тут всё и так понятно, что и где менять. 3. В файле /htdocs/includes/modules/order_details_cart.php после строки
require_once (DIR_FS_INC.'vam_get_attributes_model.inc.php');
добавляем строку
require_once (DIR_FS_INC.'vam_get_attributes_stock.inc.php');
строку
			$module_content[$i]['ATTRIBUTES'][] = array ('ID' => $products[$i][$option]['products_attributes_id'], 'MODEL' => vam_get_attributes_model(vam_get_prid($products[$i]['id']), $products[$i][$option]['products_options_values_name'],$products[$i][$option]['products_options_name']), 'NAME' => $products[$i][$option]['products_options_name'], 'VALUE_NAME' => $products[$i][$option]['products_options_values_name'].$attribute_stock_check);
меняем на
			$module_content[$i]['ATTRIBUTES'][] = array ('ID' => $products[$i][$option]['products_attributes_id'], 'MODEL' => vam_get_attributes_model(vam_get_prid($products[$i]['id']), $products[$i][$option]['products_options_values_name'],$products[$i][$option]['products_options_name']), 'NAME' => $products[$i][$option]['products_options_name'], 'STOCK' => vam_get_attributes_stock(vam_get_prid($products[$i]['id']), $products[$i][$option]['products_options_values_name'],$products[$i][$option]['products_options_name']), 'VALUE_NAME' => $products[$i][$option]['products_options_values_name'].$attribute_stock_check);
[/code]

vam_get_attributes_stock.inc.php

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

Я понимаю, что это уже наглость, но всё же :)

Как теперь сделать, чтобы в корзине выводить склад товара, если он НЕ имеет атрибутов? А то у меня теперь в корзине у товаров с атрибутами показывается количество склада атрибутов, а у товаров без атрибутов нет.

Я так понимаю, нужна {$PRODUCTS_QUANTITY} - Количество единиц товара на складе.

В файле /htdocs/includes/modules/order_details_cart.php

есть

require_once (DIR_FS_INC.'vam_get_products_stock.inc.php');

это случайно не то, что нужно?

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

Нужно править /includes/modules/order_details_cart.php, вот этот код:


$module_content[$i] = array ('PRODUCTS_NAME' => $products[$i]['name'].$mark_stock, 'PRODUCTS_QTY' => vam_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="2"').vam_draw_hidden_field('products_id[]', $products[$i]['id']).vam_draw_hidden_field('old_qty[]', $products[$i]['quantity']), 'PRODUCTS_MODEL' => $products[$i]['model'],'PRODUCTS_SHIPPING_TIME'=>$products[$i]['shipping_time'], 'PRODUCTS_TAX' => number_format($products[$i]['tax'], TAX_DECIMAL_PLACES), 'PRODUCTS_IMAGE' => $image, 'IMAGE_ALT' => $products[$i]['name'], 'BOX_DELETE' => vam_draw_checkbox_field('cart_delete[]', $products[$i]['id']), 'PRODUCTS_LINK' => vam_href_link(FILENAME_PRODUCT_INFO, vam_product_link($products[$i]['id'], $products[$i]['name'])), 'PRODUCTS_PRICE' => $vamPrice->Format($products[$i]['price'] * $products[$i]['quantity'], true), 'PRODUCTS_SINGLE_PRICE' =>$vamPrice->Format($products[$i]['price'], true), 'PRODUCTS_SHORT_DESCRIPTION' => vam_get_short_description($products[$i]['id']), 'ATTRIBUTES' => '');
[/code]

Добавлять PRODUCTS_QUANTITY

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

Добавлять PRODUCTS_QUANTITY

Добавил перед 'ATTRIBUTES' => ''

вот это:

'PRODUCTS_QUANTITY' => vam_get_products_stock(vam_get_prid($products[$i]['id']), $products[$i][$option]['products_options_values_name'],$products[$i][$option]['products_options_name']),

Это я делал по аналогии со 'STOCK', пытался уловить принцип путем сравнения :)

потом в order_details.html пытался вывести {$PRODUCTS_QUANTITY}

Только не смейтесь, но что-то я не так делаю явно :) Как эту PRODUCTS_QUANTITY добавить в эту строку правильно? И в шаблоне я правильно пытаюсь {$PRODUCTS_QUANTITY} выводить?

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

Добавил, как Вы сказали. Потом в order_details.html пытался вывести {$PRODUCTS_QUANTITY}, ничего не выводит :( Опять я что-то не так делаю? :unsure:

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

Так не совсем правильно.

Попробуйте в /templates/vamshop/module/order_details.html поменять:


<td valign="top" align="center">{$module_data.PRODUCTS_QTY}</td>
[/code] например на:
[code]
<td valign="top" align="center">{$module_data.PRODUCTS_QTY}.{$module_data.PRODUCTS_QUANTITY}</td>

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