[Решено] Совместимость "Simple" и "Мульти Доставка"

Тема в разделе "OpenCart", создана пользователем alexsofdev, 1 апр 2013.

Статус темы:
Закрыта.
  1. alexsofdev

    alexsofdev

    Регистрация:
    13 янв 2013
    Сообщения:
    239
    Симпатии:
    46
    Кто пробовал эти два модуля в совместной работе - тот уже столкнулся с тем, что настройка соответствия полей к методу доставки в этом случае работать не будет. Причина сидит в файле /system/library/simple/simple.php вот в этом куске кода:

    Код:
    		if (!empty($filter['shipping'])) {
    			$shipping = explode('.',$filter['shipping']);
    			if ($shipping[0]) {
    				$shipping = $shipping[0];
    			}
    
    			if (!empty($set['shipping'][$customer_group_id][$shipping])) {
    				$current_set = $set['shipping'][$customer_group_id][$shipping];
    			}
    
    			if (!empty($set['shipping'][$filter['shipping']])) {
    				$current_set = $set['shipping'][$customer_group_id][$filter['shipping']];
    			}
    		}
    
    При этом кусок настроек выглядит следующим образом:
    Код:
    	[shipping] => Array
    		(
    			[1] => Array
    				(
    					[multiflat] =>
    					[multiflat.multiflat0] => main_lastname,main_firstname,main_telephone,main_email
    					[multiflat.multiflat1] => main_lastname,main_firstname,main_telephone,main_address_1,main_email
    					[multiflat.multiflat2] => main_lastname,main_firstname,main_telephone,main_address_1,main_email
    					[multiflat.multiflat3] => main_lastname,main_firstname,main_telephone,main_address_2,main_email
    					[multiflat.multiflat4] => main_lastname,main_firstname,main_telephone,main_address_1,main_email
    				)
    		)
    
    Ну и получается что у нас в первых строчках кода нормальное значение фильтра ака "multiflat.multiflat0" превращается в "multiflat", поэтому настройки работать не будут, ибо для этого значения у нас пустой набор полей.

    Чтобы восстановить справедливость, нужно добавить несколько строк кода в самый конец:
    Код:
    			if (!empty($set['shipping'][$customer_group_id][$filter['shipping']])) {
    				$current_set = $set['shipping'][$customer_group_id][$filter['shipping']];
    			}
    
    Вот этот код будет выгребать нужные настройки, полностью он будет выглядеть так:

    Код:
    		if (!empty($filter['shipping'])) {
    			$shipping = explode('.',$filter['shipping']);
    			if ($shipping[0]) {
    				$shipping = $shipping[0];
    			}
    
    			if (!empty($set['shipping'][$customer_group_id][$shipping])) {
    				$current_set = $set['shipping'][$customer_group_id][$shipping];
    			}
    
    			if (!empty($set['shipping'][$filter['shipping']])) {
    				$current_set = $set['shipping'][$customer_group_id][$filter['shipping']];
    			}
    
    			if (!empty($set['shipping'][$customer_group_id][$filter['shipping']])) {
    				$current_set = $set['shipping'][$customer_group_id][$filter['shipping']];
    			}
    		}
    
    И вот этот код уже правильно подхватывает настройки :Smile:
     
    kama812 и den.sab нравится это.
Статус темы:
Закрыта.