Alt klasörlerdeki farklı görünümler veya web siteleri


29

Bir müşteri, çoklu mağaza mağazasının şu şekilde kurulmasını istiyor:

Bu bir örnek ama daha birçok farklı alt klasör olabilir. Farklı mağaza görünümleri / web siteleri için farklı alt klasörleri ele almak için en iyi yaklaşım nedir?

Tek bir çözümün de, envb. Adında bir alt klasör oluşturmak ve index.php ve .htaccess dosyalarını karşılık gelen alt klasörlere kopyalamak olduğunu biliyorum .

Ayrıca, dosya çoğaltmasını en aza indirmek için bazı geçici çözümler (index.php, vHost yapılandırması için .htaccess komutları) olabilir, ancak dosya sisteminde herhangi bir değişiklik yapmak zorunda olmadığım bir çözüm bulmak istiyorum. Her şeyi yapılandırma ile ele al.


GÜNCELLEŞTİRME

Enterprise desteği ile bunu yapmanın en iyi yolunun alt klasörler oluşturmak olduğunu doğruladık.

Bunu böyle yaparak bitirdik:

  • Bir "dil klasörleri" dizini oluşturun
  • Dizinin içindeki index.php'nin bir kopyası ile birlikte .htaccess ve Magento klasörlerindeki sembolik işaretlerin bir kopyası oluşturuldu (app /, errors /, ...)
  • Magento kök dizininde "dil klasörleri" dizinine işaret eden "de", "en" vb.

Bu yolla yeni bir sembolik bağlantı oluşturarak yeni bir dil ekleyebiliriz (örneğin "fr").


Bunu sadece web sitesinin hiçbir ürün veya kategori bulamadığını bulmak için yaptık (Magento 404 / sayfaya rota yok). Bununla da karşılaştınız mı?
snh_nl

Hatırladığım kadarıyla değil üzgünüm. Tüm dizinleri yeniden oluşturdunuz mu?
Matthias Zeis

Nginx kullanıyoruz ve çalışması için conf'in güncellenmesi gerekiyor.
Yorumumu

2 daha garip şey. 1) / checkout bir 404 ve 2 döndürür) 2) dil seçicisi: eğer ingilizce tıklarsam, tekrar ingilizce tıklarsak uri'nin / en / en / en / etc eklemeye devam ettiğini görürüz .... temel URL olarak ne seçtiniz? domain.com/en veya didi domain.com olarak
saklıyorsunuz

Domain.com/en/ adresini seçtik.
Matthias Zeis

Yanıtlar:


18

URL’leri temel alan birden çok alan / yol sunmak çok kolaydır. Belirtildiği gibi, en kolay kurulum (yalnızca yapılandırma), benzersiz core/storekodlar yolda alt klasörler olarak kullanılabiliyorsa mümkündür . Bu, aşağıdakilerden birini gerektirir:

  1. Ziyaretçiler başlangıçta doğru alt klasör yoluna bağlanır
  2. Ziyaretçilere mağazalarını seçtikleri ve çerez aldıkları bir açılış sayfası sunulur
  3. PHP ile yanıt vermeden önce çalışma türünü ve kodunu ayarlamak için bazı mekanizmalar kullanılır

# 3 ile ilgili olarak: 1.4 Magento'dan beri, Web sunucusunun, çalışmakta olan içeriği ( web sitesi veya mağaza ) ve ayrıca kullanılması gereken kodu belirlemesine olanak sağladı . Gönderen index.php :

/* Store or website code */
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';

/* Run store or run website */
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';

Mage::run($mageRunCode, $mageRunType);

Uygulamayı başlatmak için ortam değişkenleri kullanılsa da, PHP'yi açmadan önce sistemi etkilemek mümkündür. Apache ile ve mod_rewritebu biraz hile ile alt klasörler için yapılabilir:

RewriteCond %{REQUEST_URI} ^/de/$
RewriteRule .* - [E=MAGE_RUN_CODE:deutsch]
RewriteCond %{ENV:REDIRECT_MAGE_RUN_CODE} (.+)
RewriteRule .* - [E=MAGE_RUN_CODE:%1]

Apache, bu mükemmel SO cevabının gösterdiği gibi, ortam değişkenleri ve alt klasörler ile seğiriyor . İlk iki satır $_SERVER["REDIRECT_MAGE_RUN_CODE"] = 'deutsch';, sonraki iki satır ihtiyaç duyulurken sonuçlanır $_SERVER["MAGE_RUN_CODE"] = 'deutsch';. Çok sayıda başka numara var, ama yukarıdaki beni daha önce ısırdı.

Son hedef, kullanıcının daha sonraki isteklerde mantığı atlamak / atlamak için kullanılabilecek mağaza çerezini ayarlamasına izin verirken makul olduğu kadar ilk tespit (coğrafi + çoklu dil endişeleri) olmalıdır.


1
Sağol Ben. Bu şekilde yaparak mağazaların görüşlerini başlatabilirim ama her zaman Magento 404 sayfasını elde ederim ("Hata!" Temel URL'yi domain1.org/en , domain.org/de vb. Olarak ayarladım . Dış görünüm URL'si, Medya URL'si vb. Domain.org/ (skin | media | ...) olarak ayarlanmış. Normal "index.php ve .htaccess kopyala" yaklaşımını kullanırsam doğru sayfaların döndürüldüğünü lütfen unutmayın.
Matthias Zeis,

Bu cevabı kabul etmeye çalıştığımıza en yakın olduğu için kabul ettim (özel gereksinimlerimiz için biraz farklı çözdüğümüzde bile).
Matthias Zeis 14:13

"Mağaza Kodunu URL’ye ekle" ayarının işe yaramadığını gerçekten şaşırttı.
Benmarks

Mağaza kodlarının benzersiz olması gerekir. Tüm / / fr / veya en / ile biten çeşitli mağaza görünümleriyle nasıl çalışmalı?
Matthias Zeis

Ben bazı Web yeniden yazma sunucu tabanlı (örn varsayarak düşünüyorum gerçi ben çoğaltılmış mağaza kodlarını cevapsız düşünüyorum mode_rewrite) dayalı HTTP_HOST+ alt klasör düzeyinde 1.
benmarks

9

Girintili URL'ler (alt klasörler) mağaza kodlarıyla aynı ada sahipse (neden olmasın?), Basitçe etkinleştirebilirsiniz Configuration > Web > Url options > Add Store Code to Urls.


Doğru, o zaman alt klasörlere bile ihtiyacınız olmayacak. URL yeniden yazma etkin olduğu sürece, Magento "en" öğesinin bir storeview kodu olduğunu bilir ve bir alt klasör aramaz.
Paul Grigoruta

8
Bu çözümle ilgili sorun, Magento'nun bir Magento kurulumunda yalnızca bir mağaza koduna "de" izin vermesi. Bu yüzden aynı dilde birkaç web siteniz varsa, farklı mağaza kodları kullanmanız gerekir, örneğin de_de, de_en, ...
therouv

2
Rouven aldı. Sorun, aynı mağaza koduna sahip birden fazla mağazanızın bulunmamasıdır.
Anna Völkl

Evet, sorun şu ki - Rouven'ın dediği gibi - aynı mağaza kodunu kullanarak iki mağaza görünümünüz olamaz.
Matthias Zeis

Rouven'ın doğru anladığını onaylıyorum. Magento'ya bir hata bildirildi. Çünkü daha çok multistorlu bu modern ortamlarda bunun çalışması gerekir. Ancak, ayarı Add store codes to urlbir storeview ayarı yapmanın mümkün olacağını düşünüyor musunuz? magento.stackexchange.com/questions/60686/… = diyelim ki, sep ad alanlarına sahip 1 çoklu mağaza var, diğer kullanım / en ve / fr
snh_nl

3

biz de aynısını yaptık

Enterprise desteği ile bunu yapmanın en iyi yolunun alt klasörler oluşturmak olduğunu doğruladık.

Bunu böyle yaparak bitirdik:

  • Bir "dil klasörleri" dizini oluşturun
  • Dizinin içindeki index.php'nin bir kopyası ile birlikte .htaccess ve Magento klasörlerindeki sembolik işaretlerin bir kopyası oluşturuldu (app /, errors /, ...)
  • Magento kök dizininde "dil klasörleri" dizinine işaret eden "de", "en" vb.

Bu yolla yeni bir sembolik bağlantı oluşturarak yeni bir dil ekleyebiliriz (örneğin "fr").

Arka uç biz mağaza set base urliçindomain.com/en

Nginx kullanıyorsanız, yeni alt klasördeki index.php dosyasını işlemek için konum işlemeniz için bir güncelleme yapmanız gerekir. Bunun her yeni çeviri klasörü için yapılması gerekiyor.


snh_nl Son 2 satırınızın ne anlama geldiğini açıklama şansınız var mı? Daha önce de söylediğiniz aynı sorunu yaşıyorum ancak anlayamıyorum: Eğer nginx kullanıyorsanız, index.php dosyasını yeni alt klasörde de işlemek için konum işlemeniz için bir güncelleme yapmanız gerekir. Bunun her yeni çeviri klasörü için yapılması gerekiyor. Nginx kullanıyorum ve aynısını yapmaya çalışıyorum. Thanks
vbak

location @rewrite { rewrite /(../)? /$1index.php; }
snh_nl

2

Resmi Magento bilgi tabanında tam olarak bunu tanımlayan bir giriş var.

Apache ile çalışıyorsanız, tüm Sanal Ana Bilgisayar girişlerinin (her etki alanı için) Magento kurulumunuzun yer aldığı belge kökünü gösterdiğinden emin olun. Birden çok alan için bu.

Bir sonraki (ve son) şey aynı Magento kurulum klasöründeki .htaccess . .htaccess, her sunucu isteğine göre kural eylemleri ayarlayabileceğiniz güçlü bir dizin düzeyinde yapılandırma dosyasıdır. Bu yüzden oradaki tüm farklı (alt) etki / klasör işlemlerini yerine getirmeniz ve Magento'nun başlangıç ​​aşamasında kullandığı doğru sunucu değişkenlerini ayarlamanız gerekecektir.

Sunucu konfigürasyonunu tamamladıktan sonra, Magento admin'deki (sistem - konfigürasyon - genel - web) mağazaların her biri için farklı taban yolları belirlemeniz gerekecektir.

Bu nedenle, resmi kılavuzu (aynı zamanda tercih edilen yoldur) uyguladığınızdan emin olun ve işler sorunsuz şekilde çalışmalıdır.


1
Soru, birden çok alan hakkında değildi.
Fabian Schmengler

Soru, MULTIPLE DOMAINS İLE çoklu mağaza kurulumuyla ilgiliydi (.org ve .ch farklı etki alanlarıdır). Ancak bunun önemi yoktur, çünkü verilen cevap, mağazalarınızın her biri için birden çok etki alanınız, alt alan adınız veya yalnızca farklı alt klasörleriniz olmasına bakılmaksızın, çoklu mağaza kurulumuna yönelik bir çözümü açıklar.
Jernej Golja

1
Ancak odak, mağaza görünümleri için yoldaydı, alanlar bir sorun gibi görünmüyordu. Neyse, düzenlemenden sonra oyumu değiştirdim.
Fabian Schmengler

1
Aynen sorun, birden çok alanın kullanılması gerektiği değil, birkaç mağazanın URL'ye mağaza kodları eklenmesiyle mümkün olmayan aynı yolu / "alt klasörü" paylaşması gerektiğidir.
Matthias Zeis

-2

Öncelikle Magento yönetici panelinde bazı yapılandırmalar yapmanız, ardından bir alt dizin oluşturmanız ve index.php ve .htaccess'i alt dizine getirmeniz ve index.php üzerinde küçük değişiklikler yapmanız gerekir.

İşte bunun nasıl yapılacağına dair eksiksiz bir örnek.

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.