Aggiornare:
Trovato un altro modo per la pagina di manutenzione tradotta:
https://github.com/OpenMage/magento-lts/blob/1.9.3.x/errors/processor.php#L160-L162
if (isset($_GET['skin'])) {
$this->_setSkin($_GET['skin']);
}
Il costruttore della pagina di manutenzione esegue un skinparametro POST per modificare il layout. Sembra essere il modo intenzionale, ma non documentato (ancora) ...
Aggiungi alcune regole di riscrittura al tuo .htaccessche aggiunge un skinparametro al tuo URL. Per esempio.
RewriteCond %{HTTP_HOST} ^french.example.com$
RewriteCond %{DOCUMENT_ROOT}/.maintenance.flag -f
RewriteCond %{QUERY_STRING} !(^|&)skin=french(&|$) [NC]
RewriteRule ^ %{REQUEST_URI}?skin=french[L]
Copia errors/defaultinerrors/french
- Modifica / traduci i file modello in base alle tue esigenze
Forse un po 'in ritardo, ma una buona soluzione funzionante, senza copiare la errordirectory in ogni sottocartella ...
"Lati negativi":
- devi modificare tre file core. Per evitare il più possibile le modifiche nel core, ho appena cambiato il percorso di errore / pagine di report ed esteso
processor.phpper leggere una modifica local.xml.
- richiede ancora file modello per ogni lingua (nessuna traduzione al momento - forse più tardi )
Installazione di base
Multi-sito multi-store set-up come questo, solo differnce è che ho impostato MAGE_RUN_CODEnel .htaccessposto di index.php. Per il 1 ° dominio non uso RUN_CODEtutti gli altri sembra ...
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule .* - [E=MAGE_RUN_CODE:website1]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule .* - [E=MAGE_RUN_TYPE:website]
Oltre alla risposta legata ho dovuto impostare RewriteBasein .htaccessmodo che corrisponda directory locale e modificare index.phpin en, fre il cambiamento
$maintenanceFile = 'maintenance.flag';
...
if (file_exists($maintenanceFile)) {
include_once dirname(__FILE__) . '/errors/503.php';
exit;
}
per
$maintenanceFile = '../maintenance.flag';
...
if (file_exists($maintenanceFile)) {
include_once '../errors/503.php';
exit;
}
Modifica errors/404.php, 503.phpereport.php
Sostituire
require_once 'processor.php';
$processor = new Error_Processor();
con
require_once 'processor_multiwebsite.php';
$processor = new Error_Processor_Multiwebsite();
E aggiungi questo a 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;
}
}
}
}
Nuova local.xmlstruttura
Invece di impostare <skin>al primo livello, cerca prima i siti web 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>
Modelli
Aggiungi 503.phtml, ..., CSS alle directory corrispondenti<runcode>-<locale>
default-default (Prima lingua predefinita del dominio)
default-en
default-fr
website1-default (Lingua predefinita 2 ° dominio)
- ...
Nessun CSS / immagini duplicati
- inserisci i file CSS / immagini specifici del tuo sito web in una directory e aggiungi il
<skin_base>nodo alocal.xml
- cambia TUTTI i collegamenti statici nei
page.phtmlfile da ie href="css/styles.css"a<?php echo $this->getSkinBaseUrl('css/styles.css')?>