Magento 2: Kullanıcı girişi bazen çok mağaza kurulumunda iki kez giriş yapmayı gerektirir


9

Paylaşılan alışveriş sepeti ile çoklu mağaza kurmaya çalışıyorum. Ancak, kullanıcı girişi bazen çalışmaz.

Store SwitcherCezası çalışır, ancak önyüzü User Login2 ve 3. üzerine Storetıklayın açmamı Sign Ingiriş için iki kez düğmeye.

Bu kurulumlarla çoklu mağazalar kurdum:

Çoklu Alan Adı (Sanal Ana Makineler)

Ben kullanıyorum Website. Sitede üç tane olacak Stores. Alan adları, ortak bir temel alan adını paylaşır. Ek mağazalar alt alan adlarını kullanacaktır .

Varsayılan temel etki alanı olarak magento2.com'u oluşturdum .

İkinci mağaza olarak store2.magento2.com'u oluşturdum .

3. mağaza olarak store3.magento2.com'u oluşturdum .

resim açıklamasını buraya girin


Kök Kategorileri ve Test Ürünleri

Oluşturduğum mağaza2 Kök Kategori ve Store3 Kök Kategori . Ayrıca her Kök Kategorisi altında alt kategoriler oluşturdum.

resim açıklamasını buraya girin

Her alt kategoriye bir test ürünü ekledim.

resim açıklamasını buraya girin


Mağazalar ve Görünümler

Ana Web Sitesi Mağazası ve Varsayılan Mağaza Görünümünde hiçbir şeyi değiştirmedim .

2. mağaza için Store2 ve Store View 2'yi oluşturdum .

3. mağaza için Store3 ve Store View 3'ü oluşturdum .

resim açıklamasını buraya girin


İçin mağaza2 , belirlediğim mağaza2 olarak Nameve seçilen mağaza2 Kök Kategori olarak Root Category.

resim açıklamasını buraya girin


İçin Mağaza Görünüm 2 , ben seçilmiş mağaza2 olarak Store, kullanılan Mağaza Görünüm 2 olarak Nameve girilen mağaza2 olarak Store Code.

resim açıklamasını buraya girin


Üçüncü olarak Store, Store3'ü olarak ayarladım Nameve Store3 Kök Kategorisi olarak seçtimRoot Category .

resim açıklamasını buraya girin


İçin Mağaza Görünüm 3 , ben seçilmiş Store3 olarak Store, kullanılan Mağaza Görünüm 3 olarak Nameve girilen store3 olarak Store Code.

resim açıklamasını buraya girin


URL ve Çerez ayarı

ConfigurationEkran şimdi gösterileri altında 5 seçenek Store Viewaçılır:

  1. Default Config
  2. Main Website
  3. Default Store View
  4. Mağaza Görünümü 2
  5. Mağaza Görünümü 3

resim açıklamasını buraya girin

Ben URL ve Çerez ayarları değişti Default Store View, Mağaza Görünüm 2 ve Mağaza Görünüm 3 .

Ben için URL veya Çerez ayarlarını değiştirmek ETMEDİ Default Configve Main Website.


Çünkü Default Store Viewben değiştim Cookie Path.

resim açıklamasını buraya girin


İçin Mağaza Görünüm 2 , değiştim Base URLve Cookie Path.

resim açıklamasını buraya girin

resim açıklamasını buraya girin


İçin Mağaza Görünüm 3 , değiştim Base URLve Cookie Path.

resim açıklamasını buraya girin

resim açıklamasını buraya girin


Hesap paylaşımı

Hisse kullanıcı hesapları ve birden mağazalar arasında alışveriş sepeti için, ben değiştim Share Customer Accountsiçin "Başına Sitesi" dan Küresel altında Default Config.

resim açıklamasını buraya girin


.htaccess değişikliği

Bu satırları .htaccessproje kök dizinindeki dosyanın üstüne ekledim .

#Multi store setting
SetEnvIf Host magento2.com MAGE_RUN_CODE=default
SetEnvIf Host magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host ^magento2.com MAGE_RUN_CODE=default
SetEnvIf Host ^magento2.com MAGE_RUN_TYPE=store

SetEnvIf Host store2.magento2.com MAGE_RUN_CODE=store2
SetEnvIf Host store2.magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host ^store2.magento2.com MAGE_RUN_CODE=store2
SetEnvIf Host ^store2.magento2.com MAGE_RUN_TYPE=store

SetEnvIf Host store3.magento2.com MAGE_RUN_CODE=store3
SetEnvIf Host store3.magento2.com MAGE_RUN_TYPE=store
SetEnvIf Host ^store3.magento2.com MAGE_RUN_CODE=store3
SetEnvIf Host ^store3.magento2.com MAGE_RUN_TYPE=store


index.php değişikliği

Kullanılması Store Switcher, bazen varsayılan mağaza2 / 3'ten anahtarına iki kez tıklamanız gerekmektedir. Bunu düzeltmek için $_COOKIE['store'], index.php için değerini sıfırlamak zorunda kaldı :

<?php
/**
 * Application entry point
 *
 * Example - run a particular store or website:
 * --------------------------------------------
 * require __DIR__ . '/app/bootstrap.php';
 * $params = $_SERVER;
 * $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website2';
 * $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
 * $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
 * \/** @var \Magento\Framework\App\Http $app *\/
 * $app = $bootstrap->createApplication('Magento\Framework\App\Http');
 * $bootstrap->run($app);
 * --------------------------------------------
 *
 * Copyright © 2016 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */

try {
    require __DIR__ . '/app/bootstrap.php';
} catch (\Exception $e) {
    echo <<<HTML
<div style="font:12px/1.35em arial, helvetica, sans-serif;">
    <div style="margin:0 0 25px 0; border-bottom:1px solid #ccc;">
        <h3 style="margin:0;font-size:1.7em;font-weight:normal;text-transform:none;text-align:left;color:#2f2f2f;">
        Autoload error</h3>
    </div>
    <p>{$e->getMessage()}</p>
</div>
HTML;
    exit(1);
}

// Fix store switcher bug on switching to the default store
if ( isset($_SERVER['MAGE_RUN_TYPE']) == 'store' && isset($_SERVER['MAGE_RUN_CODE']) ) {
    if ( !empty($_SERVER['MAGE_RUN_CODE']) ) {
        $_COOKIE['store'] = $_SERVER['MAGE_RUN_CODE'];
    }
}

$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication('Magento\Framework\App\Http');
$bootstrap->run($app);


Kullanıcı girişi bazen iki kez tıklamayı gerektirir

Yukarıdaki kurulum ile, Store Switcheriyi çalışıyor. Alışveriş Cart, hem giriş yapmış hem de giriş yapmamış kullanıcılar için 3 Mağaza arasında paylaşılır.

resim açıklamasını buraya girin

Ancak, Mağaza2 ve Mağaza3'te , kullanıcı arabirimiuser login bazen aynı giriş sayfasına yeniden yönlendirir. Yeniden Sign Inyönlendirilen giriş sayfasındaki düğmeye basarsam (bu düğmeyi tıklamak için 2. kez), giriş yapalım.

Bu problemi düzeltmenin bir yolu var mı?


Güncelleme: devre dışı bırakma Cache

Komut satırından önbelleğe almayı devre dışı bıraktım:

php bin/magento cache:disable

Önbellek devre dışı bırakıldığında user login, Store2 ve Store3'te çok daha kararlı hale geldi. Yine de 10 denemeden giriş sayfası 1'e yeniden yönlendirildi, ancak bu değişiklik girişin daha iyi çalışmasını sağladı.

Ancak, tüm site yavaş oldu !!!

Önbelleği, user loginçoklu Storekurulumda doğru şekilde çalışacak şekilde yapılandırmanın bir yolu var mı ?


Merhaba Sorunu çözebildiniz mi ?? Sitemde de aynı sorunla karşılaşıyorum. Giriş bilgileri tek bir web sitesi altında mağazalar arasında paylaşılmaz.
Çözümünüzü

Yanıtlar:


0

Mağaza değiştiriciyi yapmayı ve yeni yapılandırma ile giriş yapmayı biraz daha kararlı hale getirdik.

URL'lere Mağaza Kodu Ekleme

En büyük değişiklik Add Store Code to Urls"Evet" olarak ayarlanmıştı .

Mağazalar =>
Yapılandırma Ayarları bölümünde =>
seçmek Default Config=>
GENEL bölümünde Web =>
URL Seçenekler =>
  değiştirmek Add Store Code to Urls"Evet"

resim açıklamasını buraya girin

 

Çerez Alan Adını Kaldır

Ardından Yapılandırma sayfasından Store2 ve Store3'tekiCookie Domain değeri kaldırdık .

Mağazalar =>
Ayarlar bölümündeki yapılandırma => Mağaza2 veya Mağaza3 => Web'i
seçin GENEL bölümünde => Varsayılan Çerez Ayarları =>   değeri kaldırın ve boş bırakın


Cookie Domain

resim açıklamasını buraya girin

 

Özel kodları .htaccessve klasörlerinden kaldırindex.php

Sonra, özel kod satırları oluşturur kaldırıldı .htaccessve index.php.

Yeni yapılandırmada, bu dosyalardaki özelleştirmeye artık gerek kalmadı. Bu harika, daha temiz bir kod.

 

Bu değişikliklerden sonra mağaza değiştirici, paylaşılan alışveriş sepeti ve kullanıcı girişi çok daha kararlı hale geldi. Bu değişiklikleri yaptıktan sonra önbelleği temizlediğinizden emin olun.

 

Magento2 çekirdek yükseltme ve üzerindeki etkisi .htaccessveindex.php

Yapılandırma ve dosya değişiklikleri yapmadan önce Magento2 çekirdeğini 2.1.0'dan 2.1.3'e yükselttik composer. (Referans: 2.1.3 için Magento 2.1.2'yi güncelleyin )

Bunun bu çoklu mağaza yapılandırması için gerekli bir parça olacağından emin değiliz, ancak sitenin 2.1.3'ten en son güncellemelerle daha kararlı olmasını umarak gerçekleştirdik.

Çekirdek ve modül dosyalarının bir parçası olan 3 dosya değiştirdik (bu dosyalar Git sürüm kontrolümüz tarafından yok sayılır):

  1. .htaccess
  2. index.php
  3. dev / tools / grunt / configs / themes.js (Özel tema css'imizi derlemek için Grunt config dosyası)

Magento2'yi yükselttiğimizde, bu dosyalar 2.1.3 başlangıç ​​durumuna sıfırlanır. Dosyalarımızı .htaccessve elimizi temizlemek zorunda değildik index.php. Dosya içerikleri yükseltme ile otomatik olarak sıfırlandı. Bu olumlu bir yan etkiydi.

Ancak kötü bir yan etkisi de vardı. Grunt yapılandırma dosyasındaki özel kodumuz çekirdek yükseltme ile sıfırlandı ve silindi. Özel kod satırlarımızı bu dosyaya manuel olarak geri yüklemek zorunda kaldık.

Bu temel yükseltme ve yapılandırma / dosya değişikliklerini yapmadan önce dosya ve DB yedeklemeleri almanızı öneririm.


Javascript'i küçültmek yardımcı olabilir

JS'yi küçültmek sitemizin tamamını daha kararlı hale getirdi.

Mağazalar =>
Yapılandırma Ayarları bölümünde =>
seçmek Default Config=>
GELİŞMİŞ bölümünde Geliştirici =>
JavaScript Ayarları =>
  seti Merge JavaScript Files"Evet" => için
  sette Enable JavaScript Bundling"Evet" => için
  sette Minify JavaScript Files"Evet" =>
sonra, berrak önbellek

resim açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.