अपडेट करें:
अनुवादित रखरखाव पृष्ठ के लिए एक और तरीका मिला:
https://github.com/OpenMage/magento-lts/blob/1.9.3.x/errors/processor.php#L160-L162
if (isset($_GET['skin'])) {
$this->_setSkin($_GET['skin']);
}
रखरखाव पृष्ठ निर्माता skin
लेआउट बदलने के लिए एक POST पैरामीटर को स्वीकार करता है । यह जानबूझकर तरीका लगता है, लेकिन यह दस्तावेज (अभी तक) नहीं है ...
अपने URL में .htaccess
एक skin
पैरामीटर को जोड़ने वाले अपने कुछ नियम फिर से जोड़ें । उदाहरण के लिए।
RewriteCond %{HTTP_HOST} ^french.example.com$
RewriteCond %{DOCUMENT_ROOT}/.maintenance.flag -f
RewriteCond %{QUERY_STRING} !(^|&)skin=french(&|$) [NC]
RewriteRule ^ %{REQUEST_URI}?skin=french[L]
को कॉपी errors/default
करेंerrors/french
- अपनी ज़रूरतों के लिए टेम्प्लेट फ़ाइलों को बदलें / अनुवाद करें
शायद देर से, लेकिन एक अच्छा काम कर समाधान, error
हर सबफ़ोल्डर को निर्देशिका की नकल के बिना ...
"Downsides":
- आपको तीन मुख्य फ़ाइलों को संपादित करना होगा। जितना संभव हो सके कोर में संपादन से बचने के लिए मैंने केवल त्रुटि / रिपोर्ट पृष्ठों का पथ शामिल किया है और
processor.php
एक संशोधित पढ़ने के लिए विस्तारित किया है local.xml
।
- इसके लिए अभी भी हर भाषा के लिए टेम्प्लेट फ़ाइलों की आवश्यकता है (फिलहाल कोई अनुवाद नहीं - शायद बाद में )
बुनियादी ढांचा
मल्टी-वेबसाइट मल्टी-स्टोर सेट-अप इस तरह, केवल भिन्न है कि मैंने इसके बजाय सेट MAGE_RUN_CODE
किया .htaccess
है index.php
। 1 डोमेन के लिए मैं इसका उपयोग करने वाले RUN_CODE
सभी अन्य लोगों की तरह नहीं ...
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule .* - [E=MAGE_RUN_CODE:website1]
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule .* - [E=MAGE_RUN_TYPE:website]
लिंक किए गए जवाब के अलावा मैं स्थापित करने के लिए किया था RewriteBase
में .htaccess
स्थान निर्देशिका और संपादित मैच के लिए index.php
में en
, fr
और परिवर्तन
$maintenanceFile = 'maintenance.flag';
...
if (file_exists($maintenanceFile)) {
include_once dirname(__FILE__) . '/errors/503.php';
exit;
}
सेवा
$maintenanceFile = '../maintenance.flag';
...
if (file_exists($maintenanceFile)) {
include_once '../errors/503.php';
exit;
}
संपादित करें errors/404.php
, 503.php
औरreport.php
बदलने के
require_once 'processor.php';
$processor = new Error_Processor();
साथ में
require_once 'processor_multiwebsite.php';
$processor = new Error_Processor_Multiwebsite();
और इसमें जोड़ें 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
संरचना
<skin>
वेबसाइटों के लिए पहले स्तर पर स्थापित करने के बजाय रनकोड / लोकेल देखें
<?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>
टेम्पलेट्स
जोड़ें 503.phtml
, ..., सीएसएस निर्देशिका से मेल खाते हैं<runcode>-<locale>
default-default
(प्रथम डोमेन डिफ़ॉल्ट भाषा)
default-en
default-fr
website1-default
(दूसरा डोमेन डिफ़ॉल्ट भाषा)
- ...
कोई डुप्लिकेट सीएसएस / छवियों
- अपनी वेबसाइट विशिष्ट CSS / images फाइलों को एक डायरेक्टरी में रखें और
<skin_base>
नोड को इसमें जोड़ेंlocal.xml
- फ़ाइलों में से यानी के लिए सभी स्थिर लिंक बदलें
page.phtml
href="css/styles.css"
<?php echo $this->getSkinBaseUrl('css/styles.css')?>