Jump to content
rubezhnoe95

Как настроить письмо администратору на одном языке

Recommended Posts

Ситуация такая. На сайте 3 языка, Русский, Украинский и Английский

Когда покупатель заказывает товар то сообщение о заказе приходит покупателю на языке на котором он смотрел сайт, НО и администратору приходит сообщение на том же языке. Как можно указать или установить язык для писем администратору ?

Пробовал  через order.php менять направление файла переводов, добился только того что администратору приходит на нужном языке только название темы и первая строка "Вы получили заказ" а всё остальное (информация о товаре) на языке на котором заказал клиент.

Share this post


Link to post
Share on other sites

Нужно жестко прописать ид языка, тогда описание будет на нужном языке.

Share this post


Link to post
Share on other sites
2 часа назад, esculapra сказал:

Нужно жестко прописать ид языка, тогда описание будет на нужном языке.

Я бы сделал бы так если бы в письме администратору был бы такой пункт в order.php, был один пункт где можно прописать но он не заработал

Share this post


Link to post
Share on other sites
20 минут назад, rubezhnoe95 сказал:

в order.php, был один пункт где можно прописать но он не заработал

я счас на ноуте, а все на локалке - покажи кусок кода. у меня собака умерла - я в депрессии

Edited by esculapra

Share this post


Link to post
Share on other sites
1 час назад, esculapra сказал:

я счас на ноуте, а все на локалке - покажи кусок кода. у меня собака умерла - я в депрессии

 

Файл order.php

<?php
class ControllerMailOrder extends Controller {
	public function index(&$route, &$args) {
		if (isset($args[0])) {
			$order_id = $args[0];
		} else {
			$order_id = 0;
		}

		if (isset($args[1])) {
			$order_status_id = $args[1];
		} else {
			$order_status_id = 0;
		}	

		if (isset($args[2])) {
			$comment = $args[2];
		} else {
			$comment = '';
		}
		
		if (isset($args[3])) {
			$notify = $args[3];
		} else {
			$notify = '';
		}
						
		// We need to grab the old order status ID
		$order_info = $this->model_checkout_order->getOrder($order_id);
		
		if ($order_info) {
			// If order status is 0 then becomes greater than 0 send main html email
			if (!$order_info['order_status_id'] && $order_status_id) {
				$this->add($order_info, $order_status_id, $comment, $notify);
			} 
			
			// If order status is not 0 then send update text email
			if ($order_info['order_status_id'] && $order_status_id && $notify) {
				$this->edit($order_info, $order_status_id, $comment, $notify);
			}		
		}
	}
		
	public function add($order_info, $order_status_id, $comment, $notify) {
		// Check for any downloadable products
		$download_status = false;

		$order_products = $this->model_checkout_order->getOrderProducts($order_info['order_id']);
		
		foreach ($order_products as $order_product) {
			// Check if there are any linked downloads
			$product_download_query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "product_to_download` WHERE product_id = '" . (int)$order_product['product_id'] . "'");

			if ($product_download_query->row['total']) {
				$download_status = true;
			}
		}
		
		// Load the language for any mails that might be required to be sent out
		$language = new Language($order_info['language_code']);
		$language->load($order_info['language_code']);
		$language->load('mail/order_add');

		// HTML Mail
		$data['title'] = sprintf($language->get('text_subject'), $order_info['store_name'], $order_info['order_id']);

		$data['text_greeting'] = sprintf($language->get('text_greeting'), $order_info['store_name']);
		$data['text_link'] = $language->get('text_link');
		$data['text_download'] = $language->get('text_download');
		$data['text_order_detail'] = $language->get('text_order_detail');
		$data['text_instruction'] = $language->get('text_instruction');
		$data['text_order_id'] = $language->get('text_order_id');
		$data['text_date_added'] = $language->get('text_date_added');
		$data['text_payment_method'] = $language->get('text_payment_method');
		$data['text_shipping_method'] = $language->get('text_shipping_method');
		$data['text_email'] = $language->get('text_email');
		$data['text_telephone'] = $language->get('text_telephone');
		$data['text_ip'] = $language->get('text_ip');
		$data['text_order_status'] = $language->get('text_order_status');
		$data['text_payment_address'] = $language->get('text_payment_address');
		$data['text_shipping_address'] = $language->get('text_shipping_address');
		$data['text_product'] = $language->get('text_product');
		$data['text_model'] = $language->get('text_model');
		$data['text_quantity'] = $language->get('text_quantity');
		$data['text_price'] = $language->get('text_price');
		$data['text_total'] = $language->get('text_total');
		$data['text_footer'] = $language->get('text_footer');

		$data['logo'] = $order_info['store_url'] . 'image/' . $this->config->get('config_logo');
		$data['store_name'] = $order_info['store_name'];
		$data['store_url'] = $order_info['store_url'];
		$data['customer_id'] = $order_info['customer_id'];
		$data['link'] = $order_info['store_url'] . 'index.php?route=account/order/info&order_id=' . $order_info['order_id'];

		if ($download_status) {
			$data['download'] = $order_info['store_url'] . 'index.php?route=account/download';
		} else {
			$data['download'] = '';
		}

		$data['order_id'] = $order_info['order_id'];
		$data['date_added'] = date($language->get('date_format_short'), strtotime($order_info['date_added']));
		$data['payment_method'] = $order_info['payment_method'];
		$data['shipping_method'] = $order_info['shipping_method'];
		$data['email'] = $order_info['email'];
		$data['telephone'] = $order_info['telephone'];
		$data['ip'] = $order_info['ip'];

		$order_status_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_status WHERE order_status_id = '" . (int)$order_status_id . "' AND language_id = '" . (int)$order_info['language_id'] . "'");
	
		if ($order_status_query->num_rows) {
			$data['order_status'] = $order_status_query->row['name'];
		} else {
			$data['order_status'] = '';
		}

		if ($comment && $notify) {
			$data['comment'] = nl2br($comment);
		} else {
			$data['comment'] = '';
		}

		if ($order_info['payment_address_format']) {
			$format = $order_info['payment_address_format'];
		} else {
			$format = '{firstname} {lastname}' . "\n" . '{company}' . "\n" . '{address_1}' . "\n" . '{address_2}' . "\n" . '{city} {postcode}' . "\n" . '{zone}' . "\n" . '{country}';
		}

		$find = array(
			'{firstname}',
			'{lastname}',
			'{company}',
			'{address_1}',
			'{address_2}',
			'{city}',
			'{postcode}',
			'{zone}',
			'{zone_code}',
			'{country}'
		);

		$replace = array(
			'firstname' => $order_info['payment_firstname'],
			'lastname'  => $order_info['payment_lastname'],
			'company'   => $order_info['payment_company'],
			'address_1' => $order_info['payment_address_1'],
			'address_2' => $order_info['payment_address_2'],
			'city'      => $order_info['payment_city'],
			'postcode'  => $order_info['payment_postcode'],
			'zone'      => $order_info['payment_zone'],
			'zone_code' => $order_info['payment_zone_code'],
			'country'   => $order_info['payment_country']
		);

		$data['payment_address'] = str_replace(array("\r\n", "\r", "\n"), '<br />', preg_replace(array("/\s\s+/", "/\r\r+/", "/\n\n+/"), '<br />', trim(str_replace($find, $replace, $format))));

		if ($order_info['shipping_address_format']) {
			$format = $order_info['shipping_address_format'];
		} else {
			$format = '{firstname} {lastname}' . "\n" . '{company}' . "\n" . '{address_1}' . "\n" . '{address_2}' . "\n" . '{city} {postcode}' . "\n" . '{zone}' . "\n" . '{country}';
		}

		$find = array(
			'{firstname}',
			'{lastname}',
			'{company}',
			'{address_1}',
			'{address_2}',
			'{city}',
			'{postcode}',
			'{zone}',
			'{zone_code}',
			'{country}'
		);

		$replace = array(
			'firstname' => $order_info['shipping_firstname'],
			'lastname'  => $order_info['shipping_lastname'],
			'company'   => $order_info['shipping_company'],
			'address_1' => $order_info['shipping_address_1'],
			'address_2' => $order_info['shipping_address_2'],
			'city'      => $order_info['shipping_city'],
			'postcode'  => $order_info['shipping_postcode'],
			'zone'      => $order_info['shipping_zone'],
			'zone_code' => $order_info['shipping_zone_code'],
			'country'   => $order_info['shipping_country']
		);

		$data['shipping_address'] = str_replace(array("\r\n", "\r", "\n"), '<br />', preg_replace(array("/\s\s+/", "/\r\r+/", "/\n\n+/"), '<br />', trim(str_replace($find, $replace, $format))));

		$this->load->model('tool/upload');

		// Products
		$data['products'] = array();

		foreach ($order_products as $order_product) {
			$option_data = array();

			$order_options = $this->model_checkout_order->getOrderOptions($order_info['order_id'], $order_product['order_product_id']);

			foreach ($order_options as $order_option) {
				if ($order_option['type'] != 'file') {
					$value = $order_option['value'];
				} else {
					$upload_info = $this->model_tool_upload->getUploadByCode($order_option['value']);

					if ($upload_info) {
						$value = $upload_info['name'];
					} else {
						$value = '';
					}
				}

				$option_data[] = array(
					'name'  => $order_option['name'],
					'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)
				);
			}

			$data['products'][] = array(
				'name'     => $order_product['name'],
				'model'    => $order_product['model'],
				'option'   => $option_data,
				'quantity' => $order_product['quantity'],
				'price'    => $this->currency->format($order_product['price'] + ($this->config->get('config_tax') ? $order_product['tax'] : 0), $order_info['currency_code'], $order_info['currency_value']),
				'total'    => $this->currency->format($order_product['total'] + ($this->config->get('config_tax') ? ($order_product['tax'] * $order_product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value'])
			);
		}

		// Vouchers
		$data['vouchers'] = array();

		$order_vouchers = $this->model_checkout_order->getOrderVouchers($order_info['order_id']);

		foreach ($order_vouchers as $order_voucher) {
			$data['vouchers'][] = array(
				'description' => $order_voucher['description'],
				'amount'      => $this->currency->format($order_voucher['amount'], $order_info['currency_code'], $order_info['currency_value']),
			);
		}

		// Order Totals
		$data['totals'] = array();
		
		$order_totals = $this->model_checkout_order->getOrderTotals($order_info['order_id']);

		foreach ($order_totals as $order_total) {
			$data['totals'][] = array(
				'title' => $order_total['title'],
				'text'  => $this->currency->format($order_total['value'], $order_info['currency_code'], $order_info['currency_value']),
			);
		}
	
		$this->load->model('setting/setting');
		
		$from = $this->model_setting_setting->getSettingValue('config_email', $order_info['store_id']);
		
		if (!$from) {
			$from = $this->config->get('config_email');
		}
		
		$mail = new Mail($this->config->get('config_mail_engine'));
		$mail->parameter = $this->config->get('config_mail_parameter');
		$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
		$mail->smtp_username = $this->config->get('config_mail_smtp_username');
		$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
		$mail->smtp_port = $this->config->get('config_mail_smtp_port');
		$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');

		$mail->setTo($order_info['email']);
		$mail->setFrom($from);
		$mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8'));
		$mail->setSubject(html_entity_decode(sprintf($language->get('text_subject'), $order_info['store_name'], $order_info['order_id']), ENT_QUOTES, 'UTF-8'));
		$mail->setHtml($this->load->view('mail/order_add', $data));
		$mail->send();
	}
	
	public function edit($order_info, $order_status_id, $comment) {
		$language = new Language($order_info['language_code']);
		$language->load($order_info['language_code']);
		$language->load('mail/order_edit');

		$data['text_order_id'] = $language->get('text_order_id');
		$data['text_date_added'] = $language->get('text_date_added');
		$data['text_order_status'] = $language->get('text_order_status');
		$data['text_link'] = $language->get('text_link');
		$data['text_comment'] = $language->get('text_comment');
		$data['text_footer'] = $language->get('text_footer');

		$data['order_id'] = $order_info['order_id'];
		$data['date_added'] = date($language->get('date_format_short'), strtotime($order_info['date_added']));
		
		$order_status_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_status WHERE order_status_id = '" . (int)$order_status_id . "' AND language_id = '" . (int)$order_info['language_id'] . "'");
	
		if ($order_status_query->num_rows) {
			$data['order_status'] = $order_status_query->row['name'];
		} else {
			$data['order_status'] = '';
		}

		if ($order_info['customer_id']) {
			$data['link'] = $order_info['store_url'] . 'index.php?route=account/order/info&order_id=' . $order_info['order_id'];
		} else {
			$data['link'] = '';
		}

		$data['comment'] = strip_tags($comment);

		$this->load->model('setting/setting');
		
		$from = $this->model_setting_setting->getSettingValue('config_email', $order_info['store_id']);
		
		if (!$from) {
			$from = $this->config->get('config_email');
		}
		
		$mail = new Mail($this->config->get('config_mail_engine'));
		$mail->parameter = $this->config->get('config_mail_parameter');
		$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
		$mail->smtp_username = $this->config->get('config_mail_smtp_username');
		$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
		$mail->smtp_port = $this->config->get('config_mail_smtp_port');
		$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');

		$mail->setTo($order_info['email']);
		$mail->setFrom($from);
		$mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8'));
		$mail->setSubject(html_entity_decode(sprintf($language->get('text_subject'), $order_info['store_name'], $order_info['order_id']), ENT_QUOTES, 'UTF-8'));
		$mail->setText($this->load->view('mail/order_edit', $data));
		$mail->send();
	}
	
	// Admin Alert Mail
	public function alert(&$route, &$args) {
		if (isset($args[0])) {
			$order_id = $args[0];
		} else {
			$order_id = 0;
		}
		
		if (isset($args[1])) {
			$order_status_id = $args[1];
		} else {
			$order_status_id = 0;
		}	
		
		if (isset($args[2])) {
			$comment = $args[2];
		} else {
			$comment = '';
		}
		
		if (isset($args[3])) {
			$notify = $args[3];
		} else {
			$notify = '';
		}

		$order_info = $this->model_checkout_order->getOrder($order_id);
		
		if ($order_info && !$order_info['order_status_id'] && $order_status_id && in_array('order', (array)$this->config->get('config_mail_alert'))) {	
			$this->load->language('mail/order_alert');
			
			// HTML Mail
			$data['text_received'] = $this->language->get('text_received');
			$data['text_order_id'] = $this->language->get('text_order_id');
			$data['text_date_added'] = $this->language->get('text_date_added');
			$data['text_order_status'] = $this->language->get('text_order_status');
			$data['text_product'] = $this->language->get('text_product');
			$data['text_total'] = $this->language->get('text_total');
			$data['text_comment'] = $this->language->get('text_comment');
			
			$data['order_id'] = $order_info['order_id'];
			$data['date_added'] = date($this->language->get('date_format_short'), strtotime($order_info['date_added']));

			$order_status_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_status WHERE order_status_id = '" . (int)$order_status_id . "' AND language_id = '" . (int)$this->config->get('config_language_id') . "'");

			if ($order_status_query->num_rows) {
				$data['order_status'] = $order_status_query->row['name'];
			} else {
				$data['order_status'] = '';
			}

			$this->load->model('tool/upload');
			
			$data['products'] = array();

			$order_products = $this->model_checkout_order->getOrderProducts($order_id);

			foreach ($order_products as $order_product) {
				$option_data = array();
				
				$order_options = $this->model_checkout_order->getOrderOptions($order_info['order_id'], $order_product['order_product_id']);
				
				foreach ($order_options as $order_option) {
					if ($order_option['type'] != 'file') {
						$value = $order_option['value'];
					} else {
						$upload_info = $this->model_tool_upload->getUploadByCode($order_option['value']);
	
						if ($upload_info) {
							$value = $upload_info['name'];
						} else {
							$value = '';
						}
					}

					$option_data[] = array(
						'name'  => $order_option['name'],
						'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)
					);					
				}
					
				$data['products'][] = array(
					'name'     => $order_product['name'],
					'model'    => $order_product['model'],
					'quantity' => $order_product['quantity'],
					'option'   => $option_data,
					'total'    => html_entity_decode($this->currency->format($order_product['total'] + ($this->config->get('config_tax') ? ($order_product['tax'] * $order_product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value']), ENT_NOQUOTES, 'UTF-8')
				);
			}
			
			$data['vouchers'] = array();
			
			$order_vouchers = $this->model_checkout_order->getOrderVouchers($order_id);

			foreach ($order_vouchers as $order_voucher) {
				$data['vouchers'][] = array(
					'description' => $order_voucher['description'],
					'amount'      => html_entity_decode($this->currency->format($order_voucher['amount'], $order_info['currency_code'], $order_info['currency_value']), ENT_NOQUOTES, 'UTF-8')
				);					
			}

			$data['totals'] = array();
			
			$order_totals = $this->model_checkout_order->getOrderTotals($order_id);

			foreach ($order_totals as $order_total) {
				$data['totals'][] = array(
					'title' => $order_total['title'],
					'value' => html_entity_decode($this->currency->format($order_total['value'], $order_info['currency_code'], $order_info['currency_value']), ENT_NOQUOTES, 'UTF-8')
				);
			}

			$data['comment'] = strip_tags($order_info['comment']);

			$mail = new Mail($this->config->get('config_mail_engine'));
			$mail->parameter = $this->config->get('config_mail_parameter');
			$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
			$mail->smtp_username = $this->config->get('config_mail_smtp_username');
			$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
			$mail->smtp_port = $this->config->get('config_mail_smtp_port');
			$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');

			$mail->setTo($this->config->get('config_email'));
			$mail->setFrom($this->config->get('config_email'));
			$mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8'));
			$mail->setSubject(html_entity_decode(sprintf($this->language->get('text_subject'), $this->config->get('config_name'), $order_info['order_id']), ENT_QUOTES, 'UTF-8'));
			$mail->setText($this->load->view('mail/order_alert', $data));
			$mail->send();

			// Send to additional alert emails
			$emails = explode(',', $this->config->get('config_mail_alert_email'));

			foreach ($emails as $email) {
				if ($email && filter_var($email, FILTER_VALIDATE_EMAIL)) {
					$mail->setTo($email);
					$mail->send();
				}
			}
		}
	}
}

 

Share this post


Link to post
Share on other sites
1 час назад, esculapra сказал:

я счас на ноуте, а все на локалке - покажи кусок кода. у меня собака умерла - я в депрессии

Или можно как то вот такие запросы запрашивать первый ID языка $this->language->get('text_received')

Share this post


Link to post
Share on other sites

В системе есть    

public function set($key, $value) {
        $this->data[$key] = $value;
    }

можно $this->language->set(

'ru_config_mail_engine', 'тут текст'

); и далее по аналогии. потом получить перевод с указанием новой переменной

Share this post


Link to post
Share on other sites

или     public function merge(&$data) {
        array_merge($this->data, $data);
    }

$data_plus = array(

'ru_config_mail_engine' => 'тут текст'

);

$this->language->merge($data_plus); потом вызвать с указанием новой переменной

Share this post


Link to post
Share on other sites

del

Share this post


Link to post
Share on other sites
7 часов назад, rubezhnoe95 сказал:

Или можно как то вот такие запросы запрашивать первый ID языка $this->language->get('text_received')

 

$language = new Language('ru-ru');
$language->load('mail/order');

$language->get('text_new_model');

 

или

		$language = new Language('ru-ru');
		foreach ($language->load('mail/order') as $key => $lang) {
			$this->language->set($key, $lang);
		}

		$this->language->get('text_new_model');

 

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.


  • Similar Content

    • By ocdev_pro
      OCDEV.pro Мультиязык - модуль для решения проблемы с мультиязычностью сайта. Протестирован на платформах ocStore, Opencart.pro 2.1.x, 2.3.x
       
      Хотите ускорить разработку и помочь автору модуля? - Покупайте модуль с установкой!

      Прошу обратить внимание, работает исключительно с SeoPro который присутствует в данных сборках. с SeoPro установленным на чистый Opencart или другие сборки работа не гарантируется, но возможна настройка при личном обращении в ЛС.

      Протестирована работа с фильтрами: Filter Vier, GoFilter, Mega Filter Pro/Plus (начиная с версии 2.0.5.6.8)
      !Модуль пока не совместим с посадочными страницами ocFilter если они включены!

      Что может модуль:
      Формирует корректный тег Hreflang Добавляет код языка в url (https://site.com/en/ или https://site.com/ua/) Заменяет стандартный блок языка, не используя ajax или отправку форм New! Добавляет мультиязычные мета-данные для главной страницы New! Заменяет адрес магазина на мультиязычный на странице контактов  
      ВАЖНО!
      Модуль версии 1.3.2 обновлен, но далее поддерживаться и дорабатываться не будет. Начиная с версии 1.3.3 проведен рефакторинг кода, переименованы файлы и дополнен функционал. На данный момент функционал обеих версий идентичен, но поддерживаться и дорабатываться будет только версия 1.3.3 НЕ устанавливайте версию 1.3.3 если у Вас стоит предыдущая, просто обновите модуль версией 1.3.2
      Установка:
      Убедитесь, что у Вас установлен ocmod отключающий фтп загрузку - Ссылка Установите ocmod.zip архив, как обычный ocmod (Распаковывать и заливать в корень не надо!) Обновите кэш модификаций Выдайте права на просмотр/изменение Система - Пользователи - Группы пользователей Зайдите в Дополнения - Модули - Установите модуль  
      Настройка модуля:
      Задайте настройки Hreflang в модуле "OCDEV.pro - Multilang" и задать коды языков, Пример: для Русского языка (Россия) ru-ru для русского языка (Украина) ru-ua для украинского языка (Украина) uk-ua для английского языка (Англия) en-gb
      Подробнее можно узнать по ссылке https://support.google.com/webmasters/answer/189077?hl=ru&ref_topic=2370587 Задайте параметр языка по-умолчанию, выбрать из списка. (Он должен совпадать с тем, что установлен в системе).  
      Настройка системы: Включите SEO Url в настройках магазина Система - Настройки - Вкладка "Сервер" - Выбираем SeoPro Задать префикс языка для url. Система - Локализация - Языки. Зайти в каждый язык и прописать соответствующий префикс: Для русского - ru Для украинского - ua Для английского - en итд. Задайте порядок языков: Язык По-умолчанию Сортировка 0, все другие языки по возростанию Переименуйте htaccess.txt на .htaccess Обновите системный кэш, Обновите кэш модификаций, Очистить кеш Вашего браузера   Дополнительно:
      Для корректной работы карты сайта, выгрузки товаров с нужным языком и тд. нужно:
      В url добавлять суффикс языка. Например двуязычный сайт RU, UA где основной русский.
      Карта сайта на русском языке - site.com/ru/index.php?route=extension/feed/google_sitemap
      Карта сайта на украинском языке - site.com/ua/index.php?route=extension/feed/google_sitemap Если карта сайта отдается по url site.com/sitemap.xml, site.com/ua/sitemap.xml, то в .htaccess после "RewriteBase /" добавить правило для каждого языка:
      RewriteRule ^sitemap.xml$ /ru/index.php?route=extension/feed/google_sitemap [L] - в этом случае ru - язык по-умолчанию
      RewriteRule ^ua/sitemap.xml$ /ua/index.php?route=extension/feed/google_sitemap [L] - второй язык ua Код языка в этом запросе должен соответствовать заданному URL-prefix настройке языка в системе Если после полной настройки решение не заработало или Вам не удается настроить модуль, или Вы не понимаете как это делается в целом, прошу обращаться в ЛС за платной настройкой и технической поддержкой.

      ВНИМАНИЕ! Скачивая и устанавливая данное решение, Вы принимаете тот факт, что модуль распространяется бесплатно "As is - Как есть" и Вы все делаете на свой страх и риск. Автор дополнения не несет никакой ответственности за ошибки, недоработки или конфликты модуля с другими дополнениями. Будьте внимательными, перед установкой делайте бэкап сайта!
       
      Также рекомендую:
      - Смс уведомления для Opencart
      - Просмотренные товары
      - Таблица размеров, размерная сетка
      - Все товары магазина (Каталог товаров)
      - Акционные товары, модуль с таймером
      - Товары из категорий
      - Редактор изображений Image Cropper
    • By ocdev_pro
      Скачать/Купить дополнение


      OCDEV.pro - SEO мультиязык для сайта, код языка в url и правильный hreflang
      OCDEV.pro Мультиязык - модуль для решения проблемы с мультиязычностью сайта. Протестирован на платформах ocStore, Opencart.pro 2.1.x, 2.3.x
       
      Хотите ускорить разработку и помочь автору модуля? - Покупайте модуль с установкой!

      Прошу обратить внимание, работает исключительно с SeoPro который присутствует в данных сборках. с SeoPro установленным на чистый Opencart или другие сборки работа не гарантируется, но возможна настройка при личном обращении в ЛС.

      Протестирована работа с фильтрами: Filter Vier, GoFilter, Mega Filter Pro/Plus (начиная с версии 2.0.5.6.8)
      !Модуль пока не совместим с посадочными страницами ocFilter если они включены!

      Что может модуль:
      Формирует корректный тег Hreflang Добавляет код языка в url (https://site.com/en/ или https://site.com/ua/) Заменяет стандартный блок языка, не используя ajax или отправку форм New! Добавляет мультиязычные мета-данные для главной страницы New! Заменяет адрес магазина на мультиязычный на странице контактов  
      ВАЖНО!
      Модуль версии 1.3.2 обновлен, но далее поддерживаться и дорабатываться не будет. Начиная с версии 1.3.3 проведен рефакторинг кода, переименованы файлы и дополнен функционал. На данный момент функционал обеих версий идентичен, но поддерживаться и дорабатываться будет только версия 1.3.3 НЕ устанавливайте версию 1.3.3 если у Вас стоит предыдущая, просто обновите модуль версией 1.3.2
      Установка:
      Убедитесь, что у Вас установлен ocmod отключающий фтп загрузку - Ссылка Установите ocmod.zip архив, как обычный ocmod (Распаковывать и заливать в корень не надо!) Обновите кэш модификаций Выдайте права на просмотр/изменение Система - Пользователи - Группы пользователей Зайдите в Дополнения - Модули - Установите модуль  
      Настройка модуля:
      Задайте настройки Hreflang в модуле "OCDEV.pro - Multilang" и задать коды языков, Пример: для Русского языка (Россия) ru-ru для русского языка (Украина) ru-ua для украинского языка (Украина) uk-ua для английского языка (Англия) en-gb
      Подробнее можно узнать по ссылке https://support.google.com/webmasters/answer/189077?hl=ru&ref_topic=2370587 Задайте параметр языка по-умолчанию, выбрать из списка. (Он должен совпадать с тем, что установлен в системе).  
      Настройка системы: Включите SEO Url в настройках магазина Система - Настройки - Вкладка "Сервер" - Выбираем SeoPro Задать префикс языка для url. Система - Локализация - Языки. Зайти в каждый язык и прописать соответствующий префикс: Для русского - ru Для украинского - ua Для английского - en итд. Задайте порядок языков: Язык По-умолчанию Сортировка 0, все другие языки по возростанию Переименуйте htaccess.txt на .htaccess Обновите системный кэш, Обновите кэш модификаций, Очистить кеш Вашего браузера   Дополнительно:
      Для корректной работы карты сайта, выгрузки товаров с нужным языком и тд. нужно:
      В url добавлять суффикс языка. Например двуязычный сайт RU, UA где основной русский.
      Карта сайта на русском языке - site.com/ru/index.php?route=extension/feed/google_sitemap
      Карта сайта на украинском языке - site.com/ua/index.php?route=extension/feed/google_sitemap Если карта сайта отдается по url site.com/sitemap.xml, site.com/ua/sitemap.xml, то в .htaccess после "RewriteBase /" добавить правило для каждого языка:
      RewriteRule ^sitemap.xml$ /ru/index.php?route=extension/feed/google_sitemap [L] - в этом случае ru - язык по-умолчанию
      RewriteRule ^ua/sitemap.xml$ /ua/index.php?route=extension/feed/google_sitemap [L] - второй язык ua Код языка в этом запросе должен соответствовать заданному URL-prefix настройке языка в системе Если после полной настройки решение не заработало или Вам не удается настроить модуль, или Вы не понимаете как это делается в целом, прошу обращаться в ЛС за платной настройкой и технической поддержкой.

      ВНИМАНИЕ! Скачивая и устанавливая данное решение, Вы принимаете тот факт, что модуль распространяется бесплатно "As is - Как есть" и Вы все делаете на свой страх и риск. Автор дополнения не несет никакой ответственности за ошибки, недоработки или конфликты модуля с другими дополнениями. Будьте внимательными, перед установкой делайте бэкап сайта!
       
      Также рекомендую:
      - Смс уведомления для Opencart
      - Просмотренные товары
      - Таблица размеров, размерная сетка
      - Все товары магазина (Каталог товаров)
      - Акционные товары, модуль с таймером
      - Товары из категорий
      - Редактор изображений Image Cropper
      Добавил ocdev_pro Добавлено 23.12.2019 Категория SEO, карта сайта, оптимизация Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart Несовместим ocStore 2.3
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1 Обращение к серверу разработчика Нет Старая цена 0  
    • By Etegro
      Нужно скопировать названия производителей с языка id 1 в язык с id 2. Переводить там руками нечего, а брендов много. Может кто-то помочь с составлением SQL-запроса?
    • By menchynskyi
      Здравствуйте, подскажите, не могу понять что делаю не так, нужно добавит укр язык на сайт
      добавил, но когда переключаю язык нету флага украинского , сумы пишет странные, половина сайта на укр половина на анг
      на русском языке все нормально


    • By WIXVW
      Добрый день. Подскажите, пожалуйста, где можно изменить шаблоны писем, приходящие администратору из форм на сайте (не о заказе или статусе заказа)?
      Перерыл почти все папки opencart и полдня гуглил.
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.