Jump to content
Sign in to follow this  
poetiq

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

Recommended Posts

Всем привет!

 

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

 

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

 

Спасибо )

Share this post


Link to post
Share on other sites

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

  • +1 1

Share this post


Link to post
Share on other sites

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

 

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

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

Спасибо )

Share this post


Link to post
Share on other sites


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

Тут кнопка

<?php } ?>

Edited by Einshtein
  • +1 1

Share this post


Link to post
Share on other sites
 <?php if ($price > 999) { ?>
  Тут кнопка
 <?php } ?>

Низзя так

 

price - строка

 

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

Share this post


Link to post
Share on other sites

Низзя так

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

Share this post


Link to post
Share on other sites

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

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

Edited by Einshtein

Share this post


Link to post
Share on other sites

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

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

  • +1 1

Share this post


Link to post
Share on other sites

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

 

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

                $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 } ?>

Share this post


Link to post
Share on other sites

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

 

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

  • +1 1

Share this post


Link to post
Share on other sites

Согласен.

Share this post


Link to post
Share on other sites

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

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

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

 

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

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

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

Edited by Einshtein

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

тут согласен

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites


<script>

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

if (floatprice>=1000)

{

<?php echo "knopka";?>

}

</script>

Edited by mrLee13

Share this post


Link to post
Share on other sites

:-D

Share this post


Link to post
Share on other sites

И я повторюсь

:roll:

Share this post


Link to post
Share on other sites

<?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х

Share this post


Link to post
Share on other sites

по аналогии

 

в контроллере 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']

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.