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 skin
POST-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 .htaccess
hinzu, die einen skin
Parameter 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/default
nacherrors/french
- Ändern / übersetzen Sie Vorlagendateien nach Ihren Wünschen
Vielleicht etwas spät, aber a gute Lösung, ohne das error
Verzeichnis 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_CODE
in .htaccess
statt index.php
. Für die 1. Domain verwende ich keine RUN_CODE
anderen 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 RewriteBase
in .htaccess
Landverzeichnis und bearbeiten anzupassen index.php
in en
, fr
und ä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.php
undreport.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.xml
Struktur
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.phtml
den 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.phtml
Dateien von zB href="css/styles.css"
nach<?php echo $this->getSkinBaseUrl('css/styles.css')?>