Перейти к содержанию
poetiq

Быстрый заказ только для определенных товаров

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

Всем привет!

 

Необходим модуль "Заказ в 1 клик" или "Быстрый заказ" без разницы как их называть. Задача в том, что бы он отображался только у тех товаров у которых стоимость к примеру от 1 000 рублей.

 

Как это можно реализовать?

 

Спасибо )

Поделиться сообщением


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

использованием условия проверки стоимости товара там, где выводится кнопка быстрого заказа

  • +1 1

Поделиться сообщением


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

использованием условия проверки стоимости товара там, где выводится кнопка быстрого заказа

 

Это относиться к какому то определенному модулю или к любой кнопке можно приладить?

Очень буду признателен если ткнете носом в пример условия такого :)

Спасибо )

Поделиться сообщением


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


<?php if ($price > 999) { ?>

Тут кнопка

<?php } ?>

Изменено пользователем Einshtein
  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 <?php if ($price > 999) { ?>
  Тут кнопка
 <?php } ?>

Низзя так

 

price - строка

 

Нужно в контроллере  получить оригинальную цену без форматирования, предать в шаблон, и уже в шаблоне принимать решение.

Поделиться сообщением


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

Низзя так

price - строка

 

Нужно в контроллере  получить оригинальную цену без форматирования, предать в шаблон, и уже в шаблоне принимать решение.

так точно

 

для получения чистой неформатированной цены на странице товара (т.е. без разделителей, знаков валют и прочей дребедени)

в файле catalog\controller\product\product.php

 

перед строкой

$discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']);

 

для движков 1.5.х добавить

$this->data['clear_price'] = ($product_info['special']) ? $product_info['special'] : $product_info['price'];

 

для движков 2.х добавить

$data['clear_price'] = ($product_info['special']) ? $product_info['special'] : $product_info['price'];

 

в самом шаблоне карточки товара catalog/view/theme/имя вашей темы/template/product/product.tpl

добавить условие для вывода в нужном месте

 

<?php if ($clear_price >= 1000) { ?>

Тут кнопка или что нужно выводить при цене больше или равной 1000

<?php } ?>

 

PS: в $clear_price будет чистая цена товара (или акционная, если она есть) в валюте по умолчанию

PPS: не забудьте обновить кеш модификаторов после правок файлов если движок 2х

  • +1 1

Поделиться сообщением


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

в данном случае, то что я написал - решение будет простым и верным. Работать будет. Задача не стоит выводить цену без форматирования, а лишь включать кнопку при пороге, а этого достаточно.
Если уже там как-то форматировать нужно, или например существует мультивалютность, или требуется ряд других условий для разных товаров - тогда да, этот костыль работать как нужно не будет.

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

Изменено пользователем Einshtein

Поделиться сообщением


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

Работать будет.

Не будет. :-)  В ос2 при цене >= 1000, ваш опэранд слева при сравнении потеряет, как минимум 3 символа. А если в Локализации->Валюты добавить "Символ слева", то вообще получим сами знаете что.

  • +1 1

Поделиться сообщением


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

Ну.. можно ведь заставить работать

 

в контроллер добавить

                $data['price_fast'] = $this->currency->format($this->tax->calculate(1000, $product_info['tax_class_id'], $this->config->get('config_tax')));

В шаблоне
 

<?php if ($price > $price_fast) { ?>
Тут кнопка
<?php } ?>

Поделиться сообщением


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

Ну.. Как сказать.. Если цена будет 5000, а в $price_fast передать 10000, то $price будет больше $price_fast

 

Можно конечно еще что-то подкрутить, но все-таки лучше получать число и сравнивать его с числом, как и писал выше AlexDW

  • +1 1

Поделиться сообщением


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

Согласен.

Поделиться сообщением


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

Не будет. :-)  В ос2 при цене >= 1000, ваш опэранд слева при сравнении потеряет, как минимум 3 символа. А если в Локализации->Валюты добавить "Символ слева", то вообще получим сами знаете что.

хз как там в ос2, я с ней пока еще на Вы, в 1.5 проверил ток что - все работает

А что там в ос2 поменялось?

 

PS символ слева/справа при работе с рублями обычно не ставят, поэтому это я и не учитываю.

Ну опять же, задача не стоит сделать универсальный функционал, автор попросил сиеминутное решение - он его получил, оно в его случае должно работать. Нужно сделать по уму? тогда в платные

PSS а стоп...мы и так в платных..

Изменено пользователем Einshtein

Поделиться сообщением


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

А что там в ос2 поменялось?

Форматирование. В любом случае, это плохая практика сравнивать разные типы, без крайней необходимости. Рано или поздно будет фейл и пхп даже не намекнет об этом

Поделиться сообщением


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

Форматирование. В любом случае, это плохая практика сравнивать разные типы, без крайней необходимости. Рано или поздно будет фейл и пхп даже не намекнет об этом

тут согласен

Поделиться сообщением


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

Господи, все намного проще. Просто parseFloat сделать на $price в javascript и все. Зачем велосипед изобретать.

Поделиться сообщением


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


<script>

var floatprice = parseFloat(<?php echo $price;?>);

if (floatprice>=1000)

{

<?php echo "knopka";?>

}

</script>

Изменено пользователем mrLee13

Поделиться сообщением


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

:-D

Поделиться сообщением


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

И я повторюсь

:roll:

Поделиться сообщением


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

<?php if ($clear_price == 0) { echo "Цена: договорная"; } else { echo $price;  } ?>

а как сделать для category.php и для остальных модулей featured.php, bestseller.php, latest.php и т.д.

 

заранее спасибо

 

так точно

 

для получения чистой неформатированной цены на странице товара (т.е. без разделителей, знаков валют и прочей дребедени)

в файле catalog\controller\product\product.php

 

перед строкой

$discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']);

 

для движков 1.5.х добавить

$this->data['clear_price'] = ($product_info['special']) ? $product_info['special'] : $product_info['price'];

 

для движков 2.х добавить

$data['clear_price'] = ($product_info['special']) ? $product_info['special'] : $product_info['price'];

 

в самом шаблоне карточки товара catalog/view/theme/имя вашей темы/template/product/product.tpl

добавить условие для вывода в нужном месте

 

<?php if ($clear_price >= 1000) { ?>

Тут кнопка или что нужно выводить при цене больше или равной 1000

<?php } ?>

 

PS: в $clear_price будет чистая цена товара (или акционная, если она есть) в валюте по умолчанию

PPS: не забудьте обновить кеш модификаторов после правок файлов если движок 2х

Поделиться сообщением


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

по аналогии

 

в контроллере catalog\controller\product\category.php

после

'special'     => $special,

 

добавить

'clear_price'  => ($result['special']) ? $result['special'] : $result['price'];

 

а в самом шаблоне catalog\view\theme\имя вашей темы\template\product\category.tpl

вывод цены оборачивать в условие по $product['clear_price']

 

так же и с остальными

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×