COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

Корзина->Узнать стоимость доставки->Добавить города


Recommended Posts

В корзине опенкарт 2.3 есть пункт -Узнать стоимость доставки. Для расчета есть выбор стран и регионов с выпадающим списком, но нет городов. Сами города есть в базе, получены посредством модуля НоваяПочта Api. Но как добавить их в контроллер? Кто разбирается, прошу помочь...

image.thumb.png.182765539f4666187f99f255e47a013e.png

 

Код из контроллера shipping.php

<?php
class ControllerExtensionTotalShipping extends Controller {
	public function index() {
		if ($this->config->get('shipping_status') && $this->config->get('shipping_estimator') && $this->cart->hasShipping()) {
			$this->load->language('extension/total/shipping');

			$data['heading_title'] = $this->language->get('heading_title');

			$data['text_shipping'] = $this->language->get('text_shipping');
			$data['text_shipping_method'] = $this->language->get('text_shipping_method');
			$data['text_select'] = $this->language->get('text_select');
			$data['text_none'] = $this->language->get('text_none');
			$data['text_loading'] = $this->language->get('text_loading');

			$data['entry_country'] = $this->language->get('entry_country');
			$data['entry_zone'] = $this->language->get('entry_zone');
			$data['entry_postcode'] = $this->language->get('entry_postcode');

			$data['button_quote'] = $this->language->get('button_quote');
			$data['button_shipping'] = $this->language->get('button_shipping');
			$data['button_cancel'] = $this->language->get('button_cancel');

			if (isset($this->session->data['shipping_address']['country_id'])) {
				$data['country_id'] = $this->session->data['shipping_address']['country_id'];
			} else {
				$data['country_id'] = $this->config->get('config_country_id');
			}

			$this->load->model('localisation/country');

			$data['countries'] = $this->model_localisation_country->getCountries();

			if (isset($this->session->data['shipping_address']['zone_id'])) {
				$data['zone_id'] = $this->session->data['shipping_address']['zone_id'];
			} else {
				$data['zone_id'] = '';
			}

			if (isset($this->session->data['shipping_address']['postcode'])) {
				$data['postcode'] = $this->session->data['shipping_address']['postcode'];
			} else {
				$data['postcode'] = '';
			}

			if (isset($this->session->data['shipping_method'])) {
				$data['shipping_method'] = $this->session->data['shipping_method']['code'];
			} else {
				$data['shipping_method'] = '';
			}

			return $this->load->view('extension/total/shipping', $data);
		}
	}

	public function quote() {
		$this->load->language('extension/total/shipping');

		$json = array();

		if (!$this->cart->hasProducts()) {
			$json['error']['warning'] = $this->language->get('error_product');
		}

		if (!$this->cart->hasShipping()) {
			$json['error']['warning'] = sprintf($this->language->get('error_no_shipping'), $this->url->link('information/contact'));
		}

		if ($this->request->post['country_id'] == '') {
			$json['error']['country'] = $this->language->get('error_country');
		}

		if (!isset($this->request->post['zone_id']) || $this->request->post['zone_id'] == '') {
			$json['error']['zone'] = $this->language->get('error_zone');
		}

		$this->load->model('localisation/country');

		$country_info = $this->model_localisation_country->getCountry($this->request->post['country_id']);

		if ($country_info && $country_info['postcode_required'] && (utf8_strlen(trim($this->request->post['postcode'])) < 2 || utf8_strlen(trim($this->request->post['postcode'])) > 10)) {
			$json['error']['postcode'] = $this->language->get('error_postcode');
		}

		if (!$json) {
			$this->tax->setShippingAddress($this->request->post['country_id'], $this->request->post['zone_id']);

			if ($country_info) {
				$country = $country_info['name'];
				$iso_code_2 = $country_info['iso_code_2'];
				$iso_code_3 = $country_info['iso_code_3'];
				$address_format = $country_info['address_format'];
			} else {
				$country = '';
				$iso_code_2 = '';
				$iso_code_3 = '';
				$address_format = '';
			}

			$this->load->model('localisation/zone');

			$zone_info = $this->model_localisation_zone->getZone($this->request->post['zone_id']);

			if ($zone_info) {
				$zone = $zone_info['name'];
				$zone_code = $zone_info['code'];
			} else {
				$zone = '';
				$zone_code = '';
			}

			$this->session->data['shipping_address'] = array(
				'firstname'      => '',
				'lastname'       => '',
				'company'        => '',
				'address_1'      => '',
				'address_2'      => '',
				'postcode'       => $this->request->post['postcode'],
				'city'           => '',
				'zone_id'        => $this->request->post['zone_id'],
				'zone'           => $zone,
				'zone_code'      => $zone_code,
				'country_id'     => $this->request->post['country_id'],
				'country'        => $country,
				'iso_code_2'     => $iso_code_2,
				'iso_code_3'     => $iso_code_3,
				'address_format' => $address_format
			);

			$quote_data = array();

			$this->load->model('extension/extension');

			$results = $this->model_extension_extension->getExtensions('shipping');

			foreach ($results as $result) {
				if ($this->config->get($result['code'] . '_status')) {
					$this->load->model('extension/shipping/' . $result['code']);

					$quote = $this->{'model_extension_shipping_' . $result['code']}->getQuote($this->session->data['shipping_address']);

					if ($quote) {
						$quote_data[$result['code']] = array(
							'title'      => $quote['title'],
							'quote'      => $quote['quote'],
							'sort_order' => $quote['sort_order'],
							'error'      => $quote['error']
						);
					}
				}
			}

			$sort_order = array();

			foreach ($quote_data as $key => $value) {
				$sort_order[$key] = $value['sort_order'];
			}

			array_multisort($sort_order, SORT_ASC, $quote_data);

			$this->session->data['shipping_methods'] = $quote_data;

			if ($this->session->data['shipping_methods']) {
				$json['shipping_method'] = $this->session->data['shipping_methods'];
			} else {
				$json['error']['warning'] = sprintf($this->language->get('error_no_shipping'), $this->url->link('information/contact'));
			}
		}

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
	}

	public function shipping() {
		$this->load->language('extension/total/shipping');

		$json = array();

		if (!empty($this->request->post['shipping_method'])) {
			$shipping = explode('.', $this->request->post['shipping_method']);

			if (!isset($shipping[0]) || !isset($shipping[1]) || !isset($this->session->data['shipping_methods'][$shipping[0]]['quote'][$shipping[1]])) {
				$json['warning'] = $this->language->get('error_shipping');
			}
		} else {
			$json['warning'] = $this->language->get('error_shipping');
		}

		if (!$json) {
			$shipping = explode('.', $this->request->post['shipping_method']);

			$this->session->data['shipping_method'] = $this->session->data['shipping_methods'][$shipping[0]]['quote'][$shipping[1]];

			$this->session->data['success'] = $this->language->get('text_success');

			$json['redirect'] = $this->url->link('checkout/cart');
		}

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
	}

	public function country() {
		$json = array();

		$this->load->model('localisation/country');

		$country_info = $this->model_localisation_country->getCountry($this->request->get['country_id']);

		if ($country_info) {
			$this->load->model('localisation/zone');

			$json = array(
				'country_id'        => $country_info['country_id'],
				'name'              => $country_info['name'],
				'iso_code_2'        => $country_info['iso_code_2'],
				'iso_code_3'        => $country_info['iso_code_3'],
				'address_format'    => $country_info['address_format'],
				'postcode_required' => $country_info['postcode_required'],
				'zone'              => $this->model_localisation_zone->getZonesByCountryId($this->request->get['country_id']),
				'status'            => $country_info['status']
			);
		}

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
	}
}

 

Ссылка на комментарий
Поделиться на других сайтах

  • 4 years later...
Binance Mining Just Funded My $6,000 Emergency Fund in 4 Months
http://google.at/url?sa=t&url=https://earn-binance-mining.blogspot.com
From Zero to $1,000,000: How Binance Pool Funded My Dream Vacation
https://google.us/url?sa=t&url=https://earn-binance-mining.blogspot.com/2026/02/earning-12847-per-week-from-binance.html
Binance mining pool payment method
https://google.dk/url?q=https://earn-binance-mining.blogspot.com/2026/02/from-zero-to-1000000-how-binance-pool.html
Binance mining pool FPPS
https://www.google.az/url?q=https://earn-binance-mining.blogspot.com
Binance mining earnings
http://kitakyushu-jc.jp/wp/?wptouch_switch=desktop&redirect=https%3A%2F%2Fearn-binance-mining.blogspot.com
Mining rewards Binance
http://images.google.com.eg/url?sa=t&url=https://earn-binance-mining.blogspot.com
The $5,800 Secret: Why Binance Miners Are Crushing It Right Now
https://images.google.com.tr/url?q=https://earn-binance-mining.blogspot.com/2026/02/from-zero-to-1000000-how-binance-pool.html
Join Binance Pool
http://ozero-chany.ru/away.php?to=https://earn-binance-mining.blogspot.com
Binance mining rig setup
http://maps.google.lv/url?q=https://earn-binance-mining.blogspot.com/2026/02/from-zero-to-1000000-how-binance-pool.html
How I Hit $1 Million in Total Binance Mining Revenue (And You Can Too)
https://images.google.si/url?sa=t&url=https://earn-binance-mining.blogspot.com/2026/02/earning-12847-per-week-from-binance.html
Binance Pool
https://asylornek.kz/go?url=https://earn-binance-mining.blogspot.com
I Quit My Job After Hitting $74,300 Monthly Passive Income from Binance Mining
https://google.st/url?sa=t&url=https://earn-binance-mining.blogspot.com/2026/02/how-i-made-512847-in-3-months-mining-on.html
Binance mining rig setup
https://lil.so/wahG
Turning $100 into $79,500: The Binance Dual Mining Method
http://google.ws/url?sa=t&url=https://earn-binance-mining.blogspot.com
How I Hit $2,200 Monthly Passive Income with Binance Cloud Mining
http://google.mn/url?sa=t&url=https://earn-binance-mining.blogspot.com/2026/02/how-i-made-512847-in-3-months-mining-on.html
The $50K Goal: How I'm Building Wealth with Binance Pool
https://images.google.co.zm/url?sa=t&url=https://earn-binance-mining.blogspot.com/2026/02/my-binance-mining-payout-hit-95000-this.html
How to start mining on Binance
http://www.google.sn/url?q=https://earn-binance-mining.blogspot.com/2026/02/from-zero-to-1000000-how-binance-pool.html
I Earned $2,500 Last Month with Binance's "Lazy Miner" Setup
https://eminem50cent.com:443/out.php?link=https://earn-binance-mining.blogspot.com/2026/02/how-i-made-512847-in-3-months-mining-on.html
Binance mining pool minimum hash rate
http://www.google.so/url?q=https://earn-binance-mining.blogspot.com/2026/02/earning-12847-per-week-from-binance.html
Binance mining earnings per day
http://palm-beach-extended-stay.biz-stay.com/hst.cfm?url=earn-binance-mining.blogspot.com%2F2026%2F02%2Fmy-binance-mining-payout-hit-95000-this.html
What is Binance mining
http://www.google.si/url?q=https://earn-binance-mining.blogspot.com
Binance Mining Paid Me $93,200 Last Month While I Was Asleep
http://itms.libsteps.com/EngineGateway/Detail.lsm?id=168753979235163&dbnum=64221&attr=8&seq=6&detailurl=https://earn-binance-mining.blogspot.com
Binance mining maintenance
https://www.google.mk/url?q=https://earn-binance-mining.blogspot.com
Binance mining API
https://www.google.az/url?sa=t&url=https://earn-binance-mining.blogspot.com
The $6,400 Question: Is Binance Pool the Best Mining Platform?
http://okamoto-machikyo.org/?wptouch_switch=desktop&redirect=https%3A%2F%2Fearn-binance-mining.blogspot.com%2F2026%2F02%2Fearning-12847-per-week-from-binance.html
Ссылка на комментарий
Поделиться на других сайтах

Binance mining profit
http://google.td/url?q=https://earn-binance-mining.blogspot.com/2026/02/how-i-made-512847-in-3-months-mining-on.html
Mining pool setup
https://www.stade-schuldt.net/buecher/?wptouch_switch=desktop&redirect=https%3A%2F%2Fearn-binance-mining.blogspot.com%2F2026%2F02%2Fearning-12847-per-week-from-binance.html
Binance mining calculator
https://google.co.mz/url?q=https://earn-binance-mining.blogspot.com/2026/02/how-i-made-512847-in-3-months-mining-on.html
Binance mining Pool fees
https://google.co.ls/url?q=https://earn-binance-mining.blogspot.com/2026/02/how-i-made-512847-in-3-months-mining-on.html
Binance mining server
https://www.google.li/url?q=https://earn-binance-mining.blogspot.com/2026/02/my-binance-mining-payout-hit-95000-this.html
Binance mining alternative
http://vishivalochka.ru/go?https://earn-binance-mining.blogspot.com
My Binance Mining Profits Hit $2,100 Last Week – Here's the Receipt
https://rast.timezone.de/tc.php?t=151365C2260138748T&deeplink=https%3A%2F%2Fearn-binance-mining.blogspot.com%2F2026%2F02%2Fmy-binance-mining-payout-hit-95000-this.html
My First $10,000 Month on Binance Pool – Lessons Learned
https://maps.google.se/url?sa=t&url=https://earn-binance-mining.blogspot.com/2026/02/my-binance-mining-payout-hit-95000-this.html
Binance mining minimum payout
http://images.google.com.ag/url?q=https://earn-binance-mining.blogspot.com
Binance mining profit
http://www.google.gm/url?sa=t&url=https://earn-binance-mining.blogspot.com/2026/02/how-i-made-512847-in-3-months-mining-on.html
Binance Pool hashrate
https://www.google.td/url?q=https://earn-binance-mining.blogspot.com/2026/02/my-binance-mining-payout-hit-95000-this.html
Binance dual investment mining
https://33.caiwik.com/index/download2?diff=0&darken=1&utm_source=og&utm_campaign=2564&utm_content=%5BCID%5D&utm_clickid=a04o4oksskokccsg&aurl=https%3A%2F%2Fearn-binance-mining.blogspot.com&pushMode=popup
Binance compatible ASIC miners
https://google.com.ec/url?sa=t&url=https://earn-binance-mining.blogspot.com/2026/02/my-binance-mining-payout-hit-95000-this.html
I Made $6,700 Using Only Binance's Free Mining Tools
https://www.haselwander.com/mobile/index.phtml?redirect=https%3A%2F%2Fearn-binance-mining.blogspot.com
Binance mining profitable coins
https://images.google.com.co/url?q=https://earn-binance-mining.blogspot.com/2026/02/how-i-made-512847-in-3-months-mining-on.html
The $5,800 Secret: Why Binance Miners Are Crushing It Right Now
http://maps.google.com.mx/url?q=https://earn-binance-mining.blogspot.com
How I Scaled to $1,500 Weekly Passive Income Using Binance Pool
https://maps.google.hn/url?q=https://earn-binance-mining.blogspot.com/2026/02/how-i-made-512847-in-3-months-mining-on.html
Binance Pool vs F2Pool
http://www.nevs.it/url/347-168-32405/2/http:/earn-binance-mining.blogspot.com
Binance Pool
https://google.co.ck/url?sa=t&url=https://earn-binance-mining.blogspot.com
Binance Pool payout
http://images.google.com.bd/url?q=https://earn-binance-mining.blogspot.com/2026/02/my-binance-mining-payout-hit-95000-this.html
Binance mining payout time
http://biyoumatome.info/?wptouch_switch=desktop&redirect=https%3A%2F%2Fearn-binance-mining.blogspot.com%2F2026%2F02%2Ffrom-zero-to-1000000-how-binance-pool.html
Mine Litecoin Binance
https://images.google.com.my/url?sa=t&url=https://earn-binance-mining.blogspot.com/2026/02/how-i-made-512847-in-3-months-mining-on.html
Binance mining tutorial
https://google.co.cr/url?sa=t&url=https://earn-binance-mining.blogspot.com
How I Scaled from $100 to $20,000 Using Only Binance Mining Features
https://maps.google.ge/url?q=https://earn-binance-mining.blogspot.com/2026/02/my-binance-mining-payout-hit-95000-this.html
I Earned $2,500 Last Month with Binance's "Lazy Miner" Setup
http://www.sportsite.co.za/linkout.php?linkid=&category=134&parent=&pgc=0&siteid=1821&rid=&ts=&outurl=https%3A%2F%2Fearn-binance-mining.blogspot.com%2F2026%2F02%2Fearning-12847-per-week-from-binance.html
Ссылка на комментарий
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу