최신 정보:
번역 된 유지 보수 페이지를위한 다른 방법을 찾았습니다.
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
...
"단점":
- 세 개의 핵심 파일을 편집해야합니다. 코어에서 가능한 한 많은 편집을 피하기 위해 오류 / 보고서 페이지의 경로를 변경
processor.php
하고 수정 된 읽기로 확장 했습니다 local.xml
.
- (- 순간에 어떤 번역은 여전히 모든 언어에 대한 템플릿 파일을 필요로 나중에 아마 )
기본 설정
이와 같은 다중 웹 사이트 다중 저장소 설정 은 차이점 대신에 설정 MAGE_RUN_CODE
했습니다 . 첫 번째 도메인의 경우 다른 모든 것을 사용하지는 않습니다 ....htaccess
index.php
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
일치하는 디렉토리에 CSS를 추가하십시오 .<runcode>-<locale>
default-default
(제 1 도메인 기본 언어)
default-en
default-fr
website1-default
(제 2 도메인 기본 언어)
- ...
중복 CSS / 이미지 없음
- 하나의 디렉토리에 귀하의 웹 사이트의 특정 CSS / 이미지 파일을 넣어 추가
<skin_base>
에 노드를local.xml
- 파일의 모든 정적 링크
page.phtml
를 ie href="css/styles.css"
에서<?php echo $this->getSkinBaseUrl('css/styles.css')?>