Actualizar:
Encontré otra forma de traducir la página de mantenimiento:
https://github.com/OpenMage/magento-lts/blob/1.9.3.x/errors/processor.php#L160-L162
if (isset($_GET['skin'])) {
$this->_setSkin($_GET['skin']);
}
El constructor de la página de mantenimiento acepta un skinparámetro POST para cambiar el diseño. Parece ser la forma intencional, pero no está documentada (todavía) ...
Agregue algunas reglas de reescritura .htaccessque agreguen un skinparámetro a su URL. P.ej.
RewriteCond %{HTTP_HOST} ^french.example.com$
RewriteCond %{DOCUMENT_ROOT}/.maintenance.flag -f
RewriteCond %{QUERY_STRING} !(^|&)skin=french(&|$) [NC]
RewriteRule ^ %{REQUEST_URI}?skin=french[L]
Copiar errors/defaultaerrors/french
- Cambiar / traducir archivos de plantilla a sus necesidades
Tal vez un poco tarde, pero es una buena solución de trabajo, sin copiar el errordirectorio a cada subcarpeta ...
"Desventajas":
- tienes que editar tres archivos principales. Para evitar las ediciones en el núcleo tanto como sea posible, acabo de cambiar la ruta de acceso de las páginas de error / informe y la extendí
processor.phppara leer una modificación local.xml.
- todavía requiere archivos de plantilla para cada idioma (no hay traducción en este momento, tal vez más tarde )
Configuración básica
Configuración de múltiples sitios web y varias tiendas como esta, la única diferencia es que he configurado MAGE_RUN_CODEen .htaccesslugar de index.php. Para el primer dominio, no uso RUN_CODEtodos los demás, parece que ...
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule .* - [E=MAGE_RUN_CODE:website1]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule .* - [E=MAGE_RUN_TYPE:website]
Además de la respuesta ligado tuve que fijar RewriteBaseen .htaccesshacer coincidir directorio locale y editar index.phpen en, fry el cambio
$maintenanceFile = 'maintenance.flag';
...
if (file_exists($maintenanceFile)) {
include_once dirname(__FILE__) . '/errors/503.php';
exit;
}
a
$maintenanceFile = '../maintenance.flag';
...
if (file_exists($maintenanceFile)) {
include_once '../errors/503.php';
exit;
}
Editar errors/404.php, 503.phpyreport.php
Reemplazar
require_once 'processor.php';
$processor = new Error_Processor();
con
require_once 'processor_multiwebsite.php';
$processor = new Error_Processor_Multiwebsite();
Y agregue esto 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;
}
}
}
}
Nueva local.xmlestructura
En lugar de establecer <skin>en el primer nivel, primero busque sitios 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>
Plantillas
Agregar 503.phtml, ..., CSS a directorios que coincidan<runcode>-<locale>
default-default (Idioma predeterminado del primer dominio)
default-en
default-fr
website1-default (Idioma predeterminado del segundo dominio)
- ...
No hay CSS / imágenes duplicadas
- coloque los archivos CSS / imágenes específicos de su sitio web en un directorio y agregue el
<skin_base>nodo alocal.xml
- cambiar TODOS los enlaces estáticos en
page.phtmlarchivos de ie href="css/styles.css"a<?php echo $this->getSkinBaseUrl('css/styles.css')?>