Aktualisieren:
Einen anderen Weg für übersetzte Wartungsseite gefunden:
https://github.com/OpenMage/magento-lts/blob/1.9.3.x/errors/processor.php#L160-L162
if (isset($_GET['skin'])) {
$this->_setSkin($_GET['skin']);
}
Der Konstruktor der Wartungsseite akzeptiert einen skinPOST-Parameter, um das Layout zu ändern. Es scheint der absichtliche Weg zu sein, aber es ist (noch) nicht dokumentiert ...
Fügen Sie Ihrer URL einige Umschreibungsregeln .htaccesshinzu, die einen skinParameter an Ihre URL anhängen . Z.B.
RewriteCond %{HTTP_HOST} ^french.example.com$
RewriteCond %{DOCUMENT_ROOT}/.maintenance.flag -f
RewriteCond %{QUERY_STRING} !(^|&)skin=french(&|$) [NC]
RewriteRule ^ %{REQUEST_URI}?skin=french[L]
Kopieren errors/defaultnacherrors/french
- Ändern / übersetzen Sie Vorlagendateien nach Ihren Wünschen
Vielleicht etwas spät, aber a gute Lösung, ohne das errorVerzeichnis in jeden Unterordner zu kopieren ...
"Nachteile":
- Sie müssen drei Kerndateien bearbeiten. Um Änderungen im Kern so weit wie möglich zu vermeiden, habe ich den Pfad der Fehler- / Berichtsseiten geändert und erweitert
processor.php geändert zum Lesen einer geändertenlocal.xml .
- Es werden weiterhin Vorlagendateien für jede Sprache benötigt (derzeit keine Übersetzung - möglicherweise später) )
Grundeinstellung
Multi-Website Multi-Store - Set-up wie diese, nur differnce ist , dass ich eingestellt habe MAGE_RUN_CODEin .htaccessstatt index.php. Für die 1. Domain verwende ich keine RUN_CODEanderen wie es aussieht ...
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule .* - [E=MAGE_RUN_CODE:website1]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule .* - [E=MAGE_RUN_TYPE:website]
Zusätzlich zu der verknüpften Antwort musste ich gesetzt RewriteBasein .htaccessLandverzeichnis und bearbeiten anzupassen index.phpin en, frund ändern
$maintenanceFile = 'maintenance.flag';
...
if (file_exists($maintenanceFile)) {
include_once dirname(__FILE__) . '/errors/503.php';
exit;
}
zu
$maintenanceFile = '../maintenance.flag';
...
if (file_exists($maintenanceFile)) {
include_once '../errors/503.php';
exit;
}
Bearbeiten errors/404.php, 503.phpundreport.php
Ersetzen
require_once 'processor.php';
$processor = new Error_Processor();
mit
require_once 'processor_multiwebsite.php';
$processor = new Error_Processor_Multiwebsite();
Und füge dies hinzu 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;
}
}
}
}
Neue local.xmlStruktur
Anstatt <skin>auf der ersten Ebene zu setzen, suchen Sie zuerst nach dem Runcode / Gebietsschema der Website
<?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>
Vorlagen
Fügen Sie 503.phtmlden entsprechenden Verzeichnissen CSS hinzu<runcode>-<locale>
default-default (Standardsprache der 1. Domain)
default-en
default-fr
website1-default (Standardsprache der 2. Domain)
- ...
Keine doppelten CSS / Bilder
- Legen Sie Ihre Website-spezifischen CSS / Bilder-Dateien in ein Verzeichnis und fügen Sie einen
<skin_base>Knoten hinzulocal.xml
- ändere ALLE statischen Links in
page.phtmlDateien von zB href="css/styles.css"nach<?php echo $this->getSkinBaseUrl('css/styles.css')?>