মাল্টিওয়েসাইট-মাল্টিডোমেন সেটআপে প্রতি ওয়েবসাইট রক্ষণাবেক্ষণ মোড অনুবাদ করুন


12

বহু ওয়েবসাইট-মাল্টি ডোমেন সেটআপে প্রতি ওয়েবসাইট রক্ষণাবেক্ষণ মোড অনুবাদ করুন

একটি বহু-ওয়েবসাইট এবং একাধিক-ডোমেন পরিবেশে রক্ষণাবেক্ষণ পৃষ্ঠা অনুবাদ (স্থানীয়করণ) সঠিক পদ্ধতি কী ?

সেটআপ এতে করা হয়েছে:

  • MAGENTO_ROOT / index.php
  • MAGENTO_ROOT / UK / index.php
  • MAGENTO_ROOT / মার্কিন / index.php
  • MAGENTO_ROOT / somecode / index.php

আসুন ধরে নেওয়া যাক যে স্টোরগুলি এর মাধ্যমে প্রবেশযোগ্য:

আমি এটির জন্য কয়েকটি সমাধান সহজেই দেখতে পাচ্ছি তবে এগুলি সবই সত্যিকারের সুন্দর, পরিষ্কার সমাধানের চেয়ে অনেক বেশি কার্যকর বলে মনে হচ্ছে।

আপনি এই সমস্যাটি কীভাবে সমাধান করবেন?


আপনি কি এই এক্সটেনশনগুলি ব্যবহার করার চেষ্টা করেছেন? magentocommerce.com/magento-connect/... magentocommerce.com/magento-connect/easy-site-maintenance.html
MagenX

উত্তর:


10

ডিফল্টরূপে Magento ত্রুটি পৃষ্ঠাগুলির জন্য বাইরের বাক্স অনুবাদ সমর্থন করে না, এবং এই জাতীয় বৈশিষ্ট্যগুলির জন্য কিছু কাস্টমাইজেশন প্রয়োজন। সুতরাং প্রযুক্তিগতভাবে এটি করার কোনও সঠিক উপায় নেই ।

যেহেতু পুরো স্ট্যাকটি ত্রুটি উত্পন্ন করার সময় আরম্ভ করা হয়নি তাই সাধারণ অনুবাদ কার্যকারিতা $this->__('foobar');টেমপ্লেটগুলিতে কাজ করবে না।

ত্রুটি পৃষ্ঠাগুলি কীভাবে উত্পন্ন হয় সে সম্পর্কে কিছু বিবরণ ম্যাগবেসে পাওয়া যাবে:

একটি বিকল্প শুধু কপি হয় errors/আপনার ভাষাগুলির মধ্যে আপনার সাব ডিরেক্টরি প্রতিটি মধ্যে uk, usইত্যাদি এবং শেষ ব্যবহারকারীর ওয়েবসাইট এন্ট্রি পয়েন্ট ভাষার প্রতিফলিত টেমপ্লেট পরিবর্তন করুন।

index.phpসাব-আপেক্ষিক ত্রুটি ডক্স অন্তর্ভুক্ত করতে কেবল আপনার প্রতিটি ভিউ নোট করুন :

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

এছাড়াও সচেতন থাকুন যে এর মধ্যে 404 সহ সমস্ত ত্রুটির জন্য একটি বেস টেম্পলেট রয়েছে page.html

সম্ভবত আরও মার্জিত সমাধান রয়েছে তবে যেহেতু আপনি ইতিমধ্যে index.phpবিভিন্ন দর্শনগুলির জন্য সদৃশ হয়ে চলেছেন তাই আরও কয়েকটি ফাইল খুব বেশি বিশৃঙ্খলা নাও করতে পারে। আপনি কিছু অপ্রয়োজনীয়তা বাঁচাতে শীর্ষ স্তরের সিএসএস এবং চিত্রগুলি অন্তর্ভুক্ত করার জন্য টেমপ্লেটগুলিও সংশোধন করতে পারেন।

আপনি যেমন ম্যাজেন্টোর মানক স্থানীয়করণের মতো ভাষা ফাইল তৈরি করতে পারেন এবং process.phpফাইলের সাথে মানগুলি পড়তে পারেন , শিরোনাম হিসাবে এবং স্থানীয়করণের প্রয়োজন হবে এমন কিছু অন্যান্য ডেটা সেট করা হচ্ছে। একটি ভাষা। সিএসভি ফাইল পড়ার জন্য ভারিয়ান_ফাইলে_সিএসভি ব্যবহারের একটি সাধারণ উদাহরণ:

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

অতিরিক্ত দ্রষ্টব্য: যেহেতু রান টাইমের বর্তমান পয়েন্টে স্ট্যাকটি Varien_File_Csvঅভ্যন্তরীণ পিএইচপি ফাংশন fgetcsv ব্যবহার করে শ্রেণি অন্তর্ভুক্তির মঞ্জুরি দিতে পারে না এটি আরও ভাল বিকল্প হতে পারে।

এবং ফাইলটিতে প্রয়োজনীয় ডেটা স্থাপনের জন্য প্রয়োজনীয় ভাষা সিএসভি ফাইলকে বিশ্লেষণ process.phpকরুন।

অন্য বিকল্পটি হ'ল গুগল অনুবাদ বা তৃতীয় পক্ষের সরঞ্জামটি স্বয়ংক্রিয়ভাবে ত্রুটি পৃষ্ঠাগুলি শেষ ব্যবহারকারীদের ভাষায় অনুবাদ করার জন্য যুক্ত করা।

তথ্যসূত্র:


2

রক্ষণাবেক্ষণ পৃষ্ঠা অনুবাদ করার কোনও সহজ উপায় নেই বলে আগেই উল্লেখ করা হয়েছে। তবে এটির জন্য একটি কার্যকারিতা রয়েছে (যার নিজস্ব সুবিধার / অসুবিধাগুলির নিজস্ব সংখ্যা রয়েছে) - রক্ষণাবেক্ষণ মোডের কিছু এক্সটেনশন ব্যবহার করুন, যেমন:

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

এটি রক্ষণাবেক্ষণ মোড পৃষ্ঠাটি প্রদর্শন করে ম্যাগেন্টো স্ট্যাকটি লোড হয়ে যাওয়ার পরে, যার অর্থ আপনার ডাটাবেস সংযোগ এবং অন্যান্য কয়েকটি জিনিস থাকা দরকার। এজন্য এটিও ধীর এবং আরও সংস্থান প্রয়োজন। তবে এটি যদি আপনার কোনও সমস্যা না হয় তবে এটি রক্ষণাবেক্ষণ পৃষ্ঠাকে পুরোপুরি কাস্টমাইজ করে দেয়।


ডাটাবেসের সাথে সংযোগ বিঘ্নিত হয়ে গেলে আউটপুট কী হবে?
বর্ধিত

1
আমি বলেছিলাম, এটি একরকম এবং প্রতিটি ক্ষেত্রে উপযুক্ত নয়। ডাটাবেস না থাকলে ম্যাজেন্টো একটি ত্রুটি বার্তা প্রদর্শন করবে।
অ্যাংটো

2

হালনাগাদ:

অনুবাদকৃত রক্ষণাবেক্ষণ পৃষ্ঠার জন্য অন্য একটি উপায় খুঁজে পেয়েছে:

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বিন্যাস পরিবর্তন করার জন্য একটি পোষ্ট প্যারামিটার অ্যাক্সেসপেট করে । এটি ইচ্ছাকৃত উপায় বলে মনে হচ্ছে, তবে এটি দলিল করা হয়নি (এখনও) ...

  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প্রত্যেক subfolder করার ডিরেক্টরির ...

"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 (২ য় ডোমেন ডিফল্ট ভাষা)
  • ...

কোনও সদৃশ সিএসএস / চিত্র নেই

  • আপনার ওয়েবসাইটের নির্দিষ্ট সিএসএস / চিত্র ফাইলগুলিকে একটি ডিরেক্টরিতে রেখে <skin_base>নোড যুক্ত করুনlocal.xml
  • পরিবর্তন সব স্ট্যাটিক লিঙ্ক page.phtmlঅর্থাত থেকে ফাইল href="css/styles.css"থেকে<?php echo $this->getSkinBaseUrl('css/styles.css')?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.