Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

urdenko

Новачок
  
  • Публікації

    2
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем urdenko

  1. Странное поведение движка, при входе в настройки модуля зачем отключает все методы доставки и настройки доставки. Например для бесплатной доставки проскакивают sql запросы типа:

    DELETE FROM oc_extension WHERE `type` = 'shipping' AND `code` = 'free';
    DELETE FROM oc_setting WHERE `code` = 'free'

    Явная деинсталяция стандартным кодом движка. Кто нибудь сталкивался?

     

    Пока ждал ответа, нашел источник деинсталяции, это файл admin/controller/feed/yamodule.php кусок кода 

    foreach ($extensions as $key => $value) {
    			if (!file_exists(DIR_APPLICATION . 'controller/shipping/' . $value . '.php')) {
    				$this->model_extension_extension->uninstall('shipping', $value);
    				unset($extensions[$key]);
    			}
    		}

    не совсем понятно зачем автор "причиняет добро" в виде отключения несуществующих модулей, но у меня именно от этого вся доставка отключается

  2. Что бы корректно работала предварительная оценка стоимости заказа по введенному индексу я написал себе костыль. Работает только для РФ, может кому пригодится.

    В файле /catalog/controller/extension/total/shipping.php найти сроку

    $this->session->data['shipping_address'] = array(

    и добавить перед ней

    //  === узнать город по индексу ====
    			$this->load->model('extension/shipping/dpdregions');
    			$convert_region = $this->model_extension_shipping_dpdregions->getRegions($this->request->post['zone_id']);
    			
    			$find_city = array('',0,999999);
    			$file_city = @fopen(DIR_SYSTEM."storage/download/dpd_cities.txt", "r");
    			if ($file_city !== false && $convert_region !== false) {		
    				
    				$post_code = $this->request->post['postcode'];
    				$zone_code_id = $this->request->post['zone_id'];
    				
    				while (!feof($file_city)) {
    					$line = explode('|',fgets($file_city));
    					
    					// отбросить чужие  
    					if ($line[3] != 'г') continue;
    					if ($line[1] != $convert_region) continue;
    					if ($line[0] != $iso_code_2) continue;
    					if ($line[5] > $post_code) continue;
    					if ($line[6] < $post_code) continue;
    					
    					// выбрать ближайший город					
    					if ($find_city[1] <= $line[5] && $find_city[2] >= $line[6])						
    						$find_city = array($line[4],$line[5],$line[6]);
    									
    				}
    				fclose($file_city);			
    			}

    а чуть ниже после нее найти строку 

    'city' => '',

    и заменить на 

    'city' => $find_city[0],

    Далее в папке /catalog/model/extension/shipping/ добавить файл dpdregions.php с содержимым 

    <?php
    class ModelExtensionShippingDpdRegions extends Model {
    
    	public function getRegions ($id){		
    		
    		$query = $this->db->query("SELECT `dpd_code` FROM `" . DB_PREFIX . "dpd_regions` where `id_oc` = ".(int)$id." limit 1");		
    		
    		if ($query->row)
    			return $query->row['dpd_code'];
    		else
    			return false;
    		}
    }
    ?>

    Не забудьте файлу /catalog/model/extension/shipping/dpdregions.php дать соответствующие chown и chmod (например, www-data:www-data и 550).

    В принципе, автору модуля нет проблем дописать это для всех остальных стран и добавить это в файл dpd_modification.ocmod.xml в своих будущих сборках, чтоб народ не лазил в коде, а то мне лениво и денег не плотють :-) 

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.