문제

번역 정비 모드 웹사이트에서 다 웹 사이트-멀티 도메인 설정

는 무엇입 적절한 어(현지화)유지보수 페이지에서 다 웹사이트와 멀티 도메인 환경은?

설정의로 만들어:

  • MAGENTO_ROOT/index.php
  • MAGENTO_ROOT/uk/index.php
  • MAGENTO_ROOT/us/index.php
  • MAGENTO_ROOT/somecode/index.php

다고 가정해 봅시다 상점은 accesible through:

나는 쉽게 볼 수 있는 몇 가지 해결책에 대한 그것의 모든 theem 더 많은 것 같다는 해결 방법의 실제보다 깨끗하는 솔루션입니다.

당신은 어떻게 이 문제를 해결?

도움이 되었습니까?

해결책

기본적으로 Magento 지원하지 않는 번역자가 오류의 페이지,그리고 필요한 일부 사용자 지정 내용을 허용하는을 위한 이러한 기능입니다.그래서 기술적으로 없 적절한 방법 등이다.

이후 전체 스택은 초기화되지는 동안 오류가 발생,번역 기능은 정상 $this->__('foobar'); 에서 작동하지 않습니다집니다.

어떤 방법에 대한 자세한 내용은 오류가 페이지가 생성에서 찾을 수 있습니다 MageBase:

한 옵션은 단순히 복사 errors/ 각각의 하위 디렉토리의 언어 uk, us, 니다,등등.수정 템플릿을 반영하여 개 언어 웹사이트의 입국 지점의 최종 사용자에게 있습니다.

그냥 참고 index.php 의 각각 보기를 포함 하위 상대적 오류 docs:

if (file_exists($maintenanceFile)) {
    include_once dirname(__FILE__) . '/errors/503.php';
    exit;
}

또한 있는 기준 템플릿에 대한 모든 오류를 포함하여 404 에 page.html

거기에 아마 더 우아한 솔루션이지만 이미 이후 중복 index.php 다른 뷰에,몇 가지 이상의 파일이 되지 않을 수 있습니다 너무 많은 혼란이다.당신은 또한 수정 템플릿을 포함한 최고 수준 CSS 와 이미지를 일부를 저장하고 중복합니다.

할 수 있습도 만들어 파일이 같은에서와 마찬가지로 하 젠토의 표준화하고 값을 읽으로 process.php 파일로 제목과 다른 어떤 데이터가 필요한 것이 아니라 현지화 되는 거기에 설정합니다.간단한 예제를 사용하 Varien_File_Csv 을 읽는 언어입니다.CSV file:

$csvObject = new Varien_File_Csv();
$csvObject->getData($file);

추가적인 참고:이후 스택에서는 현재 시점의 실행 시간을 사용할 수 없습 Varien_File_Csv 클래스를 포함하여 내부 PHP fgetcsv 할 수 있는 더 좋은 대안입니다.

고 분석한 언어 CSV 파일을 채우는 데 필요한 필수 데이터 process.php 파일입니다.

또 다른 대안이 될 것이 단순히 추가 구글 번역 또는 제 3 자는 도구를 자동으로 번역에 오류가 페이지에는 최종 사용자의 언어입니다.

참고:

다른 팁

정비 페이지를 번역 할 수있는 쉬운 방법이 없습니다.그러나 (자신의 수많은 장점 / 단점이 있음)에 대한 해결 방법이 있습니다. -이 하나와 같은 일부 유지 보수 모드 확장을 사용하십시오.

"Nofollow"> http://www.magentocommerce.com/magento-connect/store-maintenance.html

Magento 스택이로드 된 후 유지 보수 모드 페이지를 표시합니다. 즉, 데이터베이스 연결과 다른 항목이 거의 없어야합니다.또한 더 느리고 더 많은 자원이 필요합니다.그러나 그것이 문제가 아니라면 유지 보수 페이지를 완전히 사용자 정의 할 수있는 렌더링합니다.

업데이트:

을 발견 또 다른 방법한 번역한 유지보수 페이지:

https://github.com/OpenMage/magento-lts/blob/1.9.3.x/errors/processor.php#L160-L162

    if (isset($_GET['skin'])) {
        $this->_setSkin($_GET['skin']);
    }

유지 관리 페이지 생성자 accecpts a skin 포스트 매개 변수를 변경하는 레이아웃이 있습니다.그것은 있을 것 같은 의도적인 방법이지만,그것은 없습 본 안내서(아직)...

  1. 추가 어떤 재작성 규칙의 .htaccess 는 추가 skin 매개변수는 당신의 URL 이 있습니다.예를 들어.

    RewriteCond %{HTTP_HOST} ^french.example.com$
    RewriteCond %{DOCUMENT_ROOT}/.maintenance.flag -f
    RewriteCond %{QUERY_STRING} !(^|&)skin=french(&|$) [NC]
    RewriteRule ^ %{REQUEST_URI}?skin=french[L]
    
  2. 복사 errors/default 하기 errors/french

  3. /변경을 번역 템플릿 파일의 필요

어쩌면 조금 늦었지만, 작업 솔루션,없이 복사 error 디렉토리의 모든 하위 폴더...

"단점":

  • 당신은 편집하는 세 가지 코어 파일이 있습니다.을 피하기 편집에서 핵심 가능한 한 많이 나는 그냥 변경을 포함한 경로의 오류 보고서 페이지고 확장 processor.php 을 읽을 수정 local.xml.
  • 그것은 여전히 필요 템플릿 파일에 대한 모든 언어(번역서 어쩌면 나중)

기본 설치

다이 멀티 저장 설정 이처럼,단 한 differnce 를는 내가 설정 MAGE_RUN_CODE.htaccessindex.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.phpen, 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.phpreport.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> 처음에 자세한 내용을 확인하십시오.웹사이트에 대한 runcode/로캘 첫째

<?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
  • 모두 변경 static 링크 page.phtml 파일에서 즉 href="css/styles.css" 하기 <?php echo $this->getSkinBaseUrl('css/styles.css')?>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top