Memperbarui:
Temukan cara lain untuk halaman pemeliharaan yang diterjemahkan:
https://github.com/OpenMage/magento-lts/blob/1.9.3.x/errors/processor.php#L160-L162
if (isset($_GET['skin'])) {
$this->_setSkin($_GET['skin']);
}
Konstruktor halaman pemeliharaan menerima skin
parameter POST untuk mengubah tata letak. Tampaknya menjadi cara yang disengaja, tetapi tidak didokumentasikan (belum) ...
Tambahkan beberapa aturan penulisan ulang ke Anda .htaccess
yang menambahkan skin
parameter ke URL Anda. Misalnya.
RewriteCond %{HTTP_HOST} ^french.example.com$
RewriteCond %{DOCUMENT_ROOT}/.maintenance.flag -f
RewriteCond %{QUERY_STRING} !(^|&)skin=french(&|$) [NC]
RewriteRule ^ %{REQUEST_URI}?skin=french[L]
Salin errors/default
keerrors/french
- Ubah / terjemahkan file templat sesuai kebutuhan Anda
Mungkin sedikit terlambat, tapi baik solusi bekerja, tanpa menyalin error
direktori untuk setiap subfolder ...
"Kerugian":
- Anda harus mengedit tiga file inti. Untuk menghindari suntingan dalam inti sebanyak mungkin saya baru saja mengubah termasuk jalur kesalahan / laporan halaman dan diperluas
processor.php
untuk membaca yang dimodifikasi local.xml
.
- masih memerlukan file templat untuk setiap bahasa (tidak ada terjemahan saat ini - mungkin nanti )
Pengaturan dasar
Multi-situs multi-store set-up seperti ini, hanya differnce adalah bahwa saya telah menetapkan MAGE_RUN_CODE
di .htaccess
bukan index.php
. Untuk domain 1 saya tidak menggunakan yang RUN_CODE
lainnya seperti ...
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule .* - [E=MAGE_RUN_CODE:website1]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule .* - [E=MAGE_RUN_TYPE:website]
Selain jawaban terkait aku harus mengatur RewriteBase
dalam .htaccess
untuk mencocokkan direktori lokal dan mengedit index.php
di en
, fr
dan perubahan
$maintenanceFile = 'maintenance.flag';
...
if (file_exists($maintenanceFile)) {
include_once dirname(__FILE__) . '/errors/503.php';
exit;
}
untuk
$maintenanceFile = '../maintenance.flag';
...
if (file_exists($maintenanceFile)) {
include_once '../errors/503.php';
exit;
}
Edit errors/404.php
, 503.php
danreport.php
Menggantikan
require_once 'processor.php';
$processor = new Error_Processor();
dengan
require_once 'processor_multiwebsite.php';
$processor = new Error_Processor_Multiwebsite();
Dan tambahkan ini ke 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;
}
}
}
}
local.xml
Struktur baru
Alih-alih pengaturan <skin>
di tingkat pertama mencari situs web runcode / lokal terlebih dahulu
<?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>
Templat
Tambahkan 503.phtml
, ..., CSS ke direktori yang cocok<runcode>-<locale>
default-default
(Bahasa default domain 1)
default-en
default-fr
website1-default
(Bahasa default domain 2)
- ...
Tidak ada duplikat CSS / gambar
- letakkan file CSS / gambar khusus situs web Anda ke dalam satu direktori dan tambahkan
<skin_base>
node kelocal.xml
- ubah SEMUA tautan statis dalam
page.phtml
file dari mis. href="css/styles.css"
ke<?php echo $this->getSkinBaseUrl('css/styles.css')?>