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 skin
parametro POST per modificare il layout. Sembra essere il modo intenzionale, ma non documentato (ancora) ...
Aggiungi alcune regole di riscrittura al tuo .htaccess
che aggiunge un skin
parametro 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/default
inerrors/french
- Modifica / traduci i file modello in base alle tue esigenze
Forse un po 'in ritardo, ma una buona soluzione funzionante, senza copiare la error
directory 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.php
per 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_CODE
nel .htaccess
posto di index.php
. Per il 1 ° dominio non uso RUN_CODE
tutti 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 RewriteBase
in .htaccess
modo che corrisponda directory locale e modificare index.php
in en
, fr
e 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.php
ereport.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.xml
struttura
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.phtml
file da ie href="css/styles.css"
a<?php echo $this->getSkinBaseUrl('css/styles.css')?>