Скрыть поле при достижении определенной суммы.

Задача, при сумме заказа 3000 вывести стили которые скроют одно из полей.

1. Самое простое, что пришло на ум, это в чанке tpl.msOrder сделать:
{if $order.cost > 3000}
          <style>...</style>
{/if}
Не прокатило.

2. Использовать плагин Minishop2.

if(!class_exists('msDeliveryInterface')) {
    require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msdeliveryhandler.class.php';
}

class msDeliveryHandlerMsk extends msDeliveryHandler implements msDeliveryInterface{

    public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {

        $cart = $order->ms2->cart->status();
        $cart_cost = $cart['total_cost'];

        if($cart_cost > 3000){
		$this->modx->getPlaceholder('style','<style>...</style>');  // Здесь нужно заставить плейсхолдер работать
            return $cost;
        }else{
            return $cost;
        }
    }
}
Подскажите, как сделать, чтобы плейсхолдер передавал данные?
Александр Наумов
10 декабря 2017, 18:23
modx.pro
1 455
0

Комментарии: 6

Евгений Webinmd
11 декабря 2017, 01:43
2
+3
можно в свой js файл дописать функцию типа такой

var cost = $('#ms2_order_cost').text();
if(cost > 3000) {
	$('.block').hide();
}else{
	$('.block').show();
}

А отслеживать изменения в корзине примерно таким кодом

miniShop2.Callbacks.Cart.change.response.success = function( response ) {
    if ( response['success'] == true  ) {
        var cost = response.data['total_cost']; 
	if(cost > 3000) {
		$('.block').hide();
	}else{
		$('.block').show();
	} 
   } 
};
    Александр Наумов
    11 декабря 2017, 02:16
    +1
    Евгений, спасибо!
    Что-то на счет js не подумал, если с плейсхолдером не разберусь буду делать так.

    Николай Савин
    20 декабря 2017, 09:01
    +1
    Вы во втором случае по моему getPlaceholder и setPlaceholder перепутали
      Александр Наумов
      20 декабря 2017, 12:32
      0
      Николай, вы совершенно правы. Спасибо большое!
      Напишите на почту, куда вам перечислить спасибку.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6