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

вывод цены при "нет на складе"


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

здравствуйте!
подскажите, пожалуйста, как выводить цену на товар, если его нет в наличии на данный момент.
в шаблоне нашел кусочек кода, условие немного поменял. теперь выводится цена и надпись "нет на складе" (как мне надо), только вот цена = 0,00 руб (а так мне не надо).
спасибо за внимание!

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

1. Убрать проверку остатков
AND products_variants.stock>0
на складе (~500-504 строка) в файле Storefront.class.php в корне сайта.
2. В шаблоне вывода товара вывести вместо кнопки добавления в корзину следующее условие
{if $variant->stock>0}{*тут выводим код кнопки в корзину*}{else}{*тут выводим информацию о том, что товара нет на складе*}{/if}

Для вопроса BELIVE второй шаг надо поправить согласно задаче.

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

Сделал как советовал mart, на описании самого товара теперь выводится цена и надпись "под заказ", НО, на главной странице, где хиты, нет цен, и нет цен на товары в общем списке товаров. В YML эта информация не передается, но это уже второй вопрос.
Разобрался, нужно убирать обе фразы "AND products_variants.stock>0"

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

Ребята ... обьясните пожалуйста подробней про изменения в шаблоне вывода товара!!!Что на что менять, чтоб отображалось "нет на складе" при количистве 0. Киньте кусок кода ... Я ж думаю это не сложно.
У меня просто пропадает цена и все, во всех товарах!
Заранее примного БЛАГОДАРЕН!!!

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

в корне сайта ищем файл Storefront.class.php
копируем его на комп с помощью любого ftp клиента и в этом файле удаляем 2 фразы: AND products_variants.stock>0
перед этим файл лучше сохранить еще где нибудь, на всякий.

в файлах product.tpl, products.tpl, catalog.tpl в самом шаблоне меняем:
{if $product->variants|@count>0}
<input class="execute" type=submit href="cart/add/{$product->product_id}" value='в корзину' onclick="document.cookie='from='+location.href+';path=/';this.form.submit();">

на:
{if $variant->stock>0}
<input class="execute" type=submit href="cart/add/{$product->product_id}" value='в корзину' onclick="document.cookie='from='+location.href+';path=/';this.form.submit();">
{else}
<input class="execute" type=submit href="cart/add/{$product->product_id}" value='заказать' onclick="document.cookie='from='+location.href+';path=/';this.form.submit();">

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

в шаблоне вообще такого нету

{if $product->variants|@count>0}
<input class="execute" type=submit href="cart/add/{$product->product_id}" value='в корзину' onclick="document.cookie='from='+location.href+';path=/';this.form.submit();">

Ссылка на сообщение
Поделиться на другие сайты
  • 5 месяцев спустя...

а как прописать в коде?
если требуется, чтобы когда товары есть на складе >1, появлялась кнопка "КУПИТЬ", а когда товаров 0, то появлялась кнопка "ЗАКАЗАТЬ"

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

Помогите, возникли проблемы при реализации. Шаблон стандартный.

Прописываю условие {if $variant->stock>0}, но variant в коде до этого не определялся и первое определение идёт тут

{foreach from=$product->variants item=variant}
<option value='{$variant->variant_id|escape}'>{$variant->name|escape}<strong></strong><br>
{/foreach}

а это уже ниже по коду.

Потом даже если это реализовать как-то, то у товара может быть нескольколь вариантов и как быть если есть только один вариант а других нету, в одно условие {if $variant->stock>0} тут не уложишься, тут надо по всем вариантам пробежаться, а если пробегаться, то что будет куча кнопок если метод {if product->variant[0]->stock > 0}{*купить*}{/else}{*заказать*}{/if}.

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

Что именно хотите получить ???

Переменная $variant в шаблон не назначается из движка.
Туда передается некая структура $product, которая имеет при себе и массив вариантов $product->variants

В этом куске:
{foreach from=$product->variants item=variant}
<option value='{$variant->variant_id|escape}'>{$variant->name|escape}<strong></strong><br>
{/foreach}

Мы создаем переменную $variant, которая по ходу цикла принимает значения $product->variants[$key].

Можно написать:
{foreach from=$product->variants item=v}
<option value='{$v->variant_id|escape}'>{$v->name|escape}<strong></strong><br>
{/foreach}

Тогда к переменная $variant не будет определена ни в каком месте скрипта.

Поэтому: что именно Вы хотите сделать ???

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

Хочу простую вещь)

Чтобы если кол-во на складе стояло 0 - то цена отображалась и надпись под заказ. Если же у это же товара есть вариант товара который в наличии, то при переключение на этот вариант была возможность заказать.

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

Заранее спасибо за помощь.

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

js-скрипт 73-74 строка product.tpl меняем:

<script>
var variants_prices = new Array;
var variants_stocks = new Array;
{foreach from=$product->variants item=variant}
variants_prices[{$variant->variant_id|escape}] = '{$variant->discount_price*$currency->rate_from/$currency->rate_to|string_format:"%.2f"}';
variants_stocks[{$variant->variant_id|escape}] = {$variant->stock};
{/foreach}
{literal}
function display_variant(variant)
{
document.getElementById('variant_price').innerHTML = variants_prices[variant];
if (variants_stocks[variant] > 0)
document.getElementById('_button').innerHTML = 'Купить';
else
document.getElementById('_button').innerHTML = 'Заказать';
}
{/literal}
</script>

_button - id Вашего несчастного блока или кнопки, на который кликает пользователь для покупки/заказа
variants_stocks - массив с количествами соответствующих товаров

Случай с 1 вариантом товара, решите сами =) думаю очевиден.

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

Ещё вопрос сразу. Вот добавил кусок который должен при наличии товара без вариантов выводить кнопку заказать. Не выводит кнопку заказать


{elseif $product->variants|@count == 1}
<input type=hidden name=variant_id value='{$product->variants[0]->variant_id}'>
{if $variant->stock>0}
<input type=button class="link_to_cart" onclick="document.cookie='from='+location.href+';path=/';this.form.submit();">
{/if}

Если убераю это условие {if $variant->stock>0} то всё нормально.

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

>> а как узнать id кнопки?

Как получить доступ к нужному элементу можно узнать в любом javascript справочнике мало мальски актуальном.

>> {if $variant->stock>0}
С хрена бы оно работало то ?
$variant вообще не существует в текущим контексте - надо писать:
{if $product->variants[0]->stock > 0)

Ссылка на сообщение
Поделиться на другие сайты
  • 5 месяцев спустя...

Подскажите, пожалуйста, а как вывести цену товара, которого "нет в наличии" в 2.1?
Вот пишу всякую всячину вроде {$product->variants[0]->price} в разных вариантах, и с циклом, и без цикла.

Мне теперь кажется, что это через шаблон не делается, а нужно функцию куда-нибудь в view.php добавлять :(

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

Объясните пожалуйста по шагово нубу как с делать вывод надписи "нет в наличии" когда в поле на скаладе стоит "0" на шаблоне default. То из написанного выше нечего не выходит что-то.

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

В api\variants.php нашел строчку ...

if(!empty($filter['in_stock']) && $filter['in_stock'])
$variant_id_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL)');

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

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

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

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

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

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

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

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

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

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

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