Добро пожаловать на сайт Bitrix Q&A, где вы можете задавать вопросы о программировании и разработке для 1C-Bitrix и получать быстрые и квалифицированные ответы от профессионалов!

Как убрать цену из доставки?

+1 голос

Есть обычная настраиваемая служба доставки типа «Доставка по России».

Стандартно в Настройках обработчика есть поле цена. Если же попробовать вписать в это поле текст типа: «Доставка рассчитывается менеджером», то выдает 

Ошибка сохранения

Поле "Цена": не число

Если поле оставить пустым, то при оформлении заказа будет стоять Стоимость: 0 руб.

Собственно как убрать ноль из заказа корзины D7, или поменять числовое на текстовое значение?

спросил 03 Авг от аноним

1 Ответ

0 голосов

Ну, вроде бы доставка считается не в корзине а в оформлении заказа.

У нас для такой же задачи есть sale.order.ajax, где в result_modifier идёт проверка способа доставки

if (in_array((int)$_REQUEST['DELIVERY_ID'], array(15,16))) {
$arResult['SPEC_TRIGGER_WARN'][] = "Стоимость доставки рассчитывается менеджером после оформления заказа.";
}
Ну а в шаблоне, если есть SPEC_TRIGGER_WARN - то выводим его.
А чтобы не выводилось "Стоимость доставки: 0" в шаблоне строчку эту выводим, только если стоимость доставки больше 0.
 

 

ответил 03 Авг от root (20,300 баллов)
Спасибо за Ваш ответ, добавил в result_modifier:

<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

/**
 * @var array $arParams
 * @var array $arResult
 * @var SaleOrderAjax $component
 */

$component = $this->__component;
$component::scaleImages($arResult['JS_DATA'], $arParams['SERVICES_IMAGES_SCALING']);

if (in_array((int)$_REQUEST['54'], array(15,16))) {
$arResult['SPEC_TRIGGER_WARN'][] = "Стоимость доставки рассчитывается менеджером после оформления заказа.";
}


Это все, что есть в result_modifier. Ничего не изменилось, ID вписал, а что такое array(15,16)? Прошу прощения, совсем ламер. В самом шаблоне никакого упоминания о SPEC_TRIGGER_WARN нет.
15,16 - это ID способов доставки (можно посмотреть в админке)
(int)$_REQUEST['DELIVERY_ID'] -- это вот прямо так должно быть, DELIVERY_ID -- стандартное для шаблона компонента название поля с выбором доставки.
Да, в шаблоне вывод SPEC_TRIGGER_WARN надо самим добавлять.
Можно, для отладки, прямо print_r($arResult['SPEC_TRIGGER_WARN']) -- а потом уже украсить.
Управление продуктом: аналитика, разработка, продвижение