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 skin
parámetro POST para cambiar el diseño. Parece ser la forma intencional, pero no está documentada (todavía) ...
Agregue algunas reglas de reescritura .htaccess
que agreguen un skin
pará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/default
aerrors/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 error
directorio 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.php
para 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_CODE
en .htaccess
lugar de index.php
. Para el primer dominio, no uso RUN_CODE
todos 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 RewriteBase
en .htaccess
hacer coincidir directorio locale y editar index.php
en en
, fr
y 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.php
yreport.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.xml
estructura
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.phtml
archivos de ie href="css/styles.css"
a<?php echo $this->getSkinBaseUrl('css/styles.css')?>