Оновлення:
Знайдено інший спосіб для перекладеної сторінки обслуговування:
https://github.com/OpenMage/magento-lts/blob/1.9.3.x/errors/processor.php#L160-L162
if (isset($_GET['skin'])) {
$this->_setSkin($_GET['skin']);
}
Конструктор сторінки технічного обслуговування приймає skinпараметр POST для зміни макета. Здається, це навмисно, але це не задокументовано (поки) ...
Додайте до себе кілька правил перезапису, .htaccessякі додають skinпараметр до вашої URL-адреси. Напр.
RewriteCond %{HTTP_HOST} ^french.example.com$
RewriteCond %{DOCUMENT_ROOT}/.maintenance.flag -f
RewriteCond %{QUERY_STRING} !(^|&)skin=french(&|$) [NC]
RewriteRule ^ %{REQUEST_URI}?skin=french[L]
Скопіювати errors/defaultвerrors/french
- Змініть / перекладіть файли шаблонів під свої потреби
Можливо, трохи пізно, але гарне робоче рішення, не копіюючи errorкаталог у кожну папку ...
"Далі":
- ви повинні відредагувати три основні файли. Щоб максимально уникнути редагувань в ядрі, я просто змінив, включаючи шлях сторінок помилок / звітів і розширений
processor.phpдля читання змінених local.xml.
- для нього все ще потрібні файли шаблонів для кожної мови (на даний момент немає перекладу - можливо, пізніше )
Основні настройки
Multi-сайт мульти-магазин установка , як це, тільки differnce є те , що я поставив MAGE_RUN_CODEв .htaccessзамість index.php. Для першого домену я не використовую RUN_CODEвсіх інших, схоже ...
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule .* - [E=MAGE_RUN_CODE:website1]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule .* - [E=MAGE_RUN_TYPE:website]
На додаток до пов'язаного відповідь я повинен був встановити RewriteBaseв , .htaccessщоб відповідати локалі каталог і редагувати index.phpв en, frі зміни
$maintenanceFile = 'maintenance.flag';
...
if (file_exists($maintenanceFile)) {
include_once dirname(__FILE__) . '/errors/503.php';
exit;
}
до
$maintenanceFile = '../maintenance.flag';
...
if (file_exists($maintenanceFile)) {
include_once '../errors/503.php';
exit;
}
Edit errors/404.php, 503.phpіreport.php
Замініть
require_once 'processor.php';
$processor = new Error_Processor();
з
require_once 'processor_multiwebsite.php';
$processor = new Error_Processor_Multiwebsite();
І додайте до цього errors/processor_multiwebsite.php
<?php
require_once 'processor.php';
class Error_Processor_Multiwebsite extends Error_Processor
{
const DEFAULT_RUNCODE = 'default';
const DEFAULT_LOCALE = 'default';
/**
* Magento run code
*
* @var string
*/
protected $_runCode;
/**
* Magento run code
*
* @var string
*/
protected $_locale;
public function __construct()
{
$this->_runCode = self::DEFAULT_RUNCODE;
if (isset($_SERVER['MAGE_RUN_CODE'])) {
$this->_runCode = $_SERVER['MAGE_RUN_CODE'];
}
$this->_locale = self::DEFAULT_LOCALE;
$path = array_filter(explode('/', str_replace('index.php', '', $_SERVER['SCRIPT_NAME'])));
if (end($path)) {
$this->_locale = end($path);
}
parent::__construct();
}
/**
* Retrieve skin URL
*
* @return string
*/
public function getSkinUrl()
{
$baseUrl = str_replace($this->_locale . '/', '', $this->getBaseUrl());
return $baseUrl . self::ERROR_DIR. '/' . $this->_config->skin . '/';
}
/**
* Retrieve skin base URL
*
* @return string
*/
public function getSkinBaseUrl($file)
{
return $this->_config->skin_base ? "../{$this->_config->skin_base}/{$file}" : $file;
}
/**
* Prepare config data
*/
protected function _prepareConfig()
{
parent::_prepareConfig();
$local = $this->_loadXml(self::MAGE_ERRORS_LOCAL_XML);
if (!is_null($local)) {
if ((string)$local->{$this->_runCode}->{$this->_locale}->skin) {
$this->_config->skin = (string)$local->{$this->_runCode}->{$this->_locale}->skin;
}
# add skin base URL
if ((string)$local->{$this->_runCode}->{$this->_locale}->skin_base) {
$this->_config->skin_base = (string)$local->{$this->_runCode}->{$this->_locale}->skin_base;
}
}
}
}
Нова local.xmlструктура
Замість встановлення <skin>на першому рівні спочатку шукайте веб-сайти runcode / locale
<?xml version="1.0"?>
<config>
<!-- 1st domain w/o runcode -->
<default>
<!-- no locale sub dir -->
<default>
<skin>default-default</skin>
...
</default>
<en>
<skin>default-en</skin>
<skin_base>default-default</skin_base>
...
</en>
<fr>
<skin>default-fr</skin>
<skin_base>default-default</skin_base>
...
</fr>
</default>
<!-- runcode website1 -->
<website1>
<!-- no locale sub dir -->
<default>
<skin>website1-default</skin>
...
</default>
...
</website1>
</config>
Шаблони
Додайте 503.phtml, ..., CSS до відповідних каталогів<runcode>-<locale>
default-default (Мова за замовчуванням 1-го домену)
default-en
default-fr
website1-default (2-я мова за замовчуванням домену)
- ...
Немає дублікатів CSS / зображень
- помістіть специфічні файли CSS / зображень для вашого веб-сайту в один каталог і додайте у нього
<skin_base>вузолlocal.xml
- змінити ВСІ статичні посилання у
page.phtmlфайлах з ie href="css/styles.css"на<?php echo $this->getSkinBaseUrl('css/styles.css')?>