Возник вопрос "оптимизации" - при изменении списка служб доставки на странице "Способы доставки" так же менялись системой. При этом на той самой странице должно быть так: юзер выбирает из списка нужный город, в зависимости от выбора динамически без обновления страницы генерируется список доступных для города служб (как на странице оформления заказа).
В Битриксе и PHP новичек. Но поискав, часть вопроса решил:
- на странице разместил sale.location.selector.search, из него извлёк ID города через глобальную переменную (находил разные способы, но получилось только так)
- через CSaleDelivery::GetList получил список нужных служб
- вывел список
Вроде бы работает, !НО! при выборе другого города - изменение списка не происходит, т.е. работает только для того города, который я поставил по умолчанию в селекторе.
Смотрел компоненты оформления заказа - не очень помогло, только запутался.
Код на странице способов доставки |
---|
[CODE] <? GLOBAL $locResult;
$APPLICATION->IncludeComponent( "custom_components:sale.location.selector.search", "", Array( "COMPONENT_TEMPLATE" => ".default", "ID" => "1680", "CODE" => "", "INPUT_NAME" => "LOCATION", "PROVIDE_LINK_BY" => "id", "JSCONTROL_GLOBAL_ID" => "", "JS_CALLBACK" => "", "SEARCH_BY_PRIMARY" => "Y", "EXCLUDE_SUBTREE" => "", "FILTER_BY_SITE" => "Y", "SHOW_DEFAULT_LOCATIONS" => "Y", "CACHE_TYPE" => "A", "CACHE_TIME" => "36000000", "FILTER_SITE_ID" => "s1" ) );
$db_dtype = CSaleDelivery::GetList( $arOrder = array( "DESCRIPTION" => "ASC", "NAME" => "ASC" ), $arFilter = array( "LOCATION" => $locResult, "LID" => SITE_ID, "+<=WEIGHT_FROM" => 0, "ACTIVE" => "Y" ), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array() ); if ($ar_dtype = $db_dtype->Fetch()) { echo "Способы доставки:<br><br>"; do { if ($ar_dtype["PRICE"] == 0) { echo $ar_dtype["NAME"].". ".$ar_dtype[DESCRIPTION]."<br>Cтоимость: бесплатно<br><br>"; } else { echo $ar_dtype["NAME"].". ".$ar_dtype[DESCRIPTION]."<br>Cтоимость: от ".$ar_dtype["PRICE"]."р.<br>"; } } while ($ar_dtype = $db_dtype->Fetch()); } else { echo "Способов доставки не найдено.<br>"; } //unset($locResult); ?> [/CODE] |
Вопрос, что я делаю не так? В каком направлении копать?