Pazar ve dil adresleri: /fr/, /en-ca/ ve ?country=

Shopify uluslararası adresleri nasıl kurar: /fr/ ve /en-ca/ gibi klasörler, alt alan adları ve alan adları, ?country= linkleri ve temada dile duyarlı linkler.

Alt klasör
your-store.com/fr/, /en-ca/
Ülke linki
?country=<ISO kodu>
Nerede
Markets > pazar > Domain / language
SEO
Otomatik hreflang ve kendine işaret eden canonical
Son kontrol

Kısaca

Shopify, yayındaki her dile ve her pazara kendi adresini verir: varsayılan olarak your-store.com/fr/ ya da /en-ca/ gibi bir alt klasör, isterseniz Markets > Domain / language altında ayarladığınız bir alt alan adı veya ayrı bir alan adı. Çok ülkeli bir pazarın içindeki tek bir ülkeye kampanya göndermek için ?country=DE ekleyin. Temalarda linkleri Liquid’de routes.*, JavaScript’te Shopify.routes.root ile kurun ki ziyaretçi dilini ve para birimini korusun.

Nasıl kullanılır

  1. Dili Settings > Languages altında ekleyip yayınlayın; Shopify /<dil>/ yolunu oluşturur.
  2. Markets altında bir pazarı açın ve onun için alt klasör, alt alan adı ya da üst düzey alan adı seçin.
  3. Temada sabit yazılmış /cart, /search ve /collections linklerini routes.cart_url, routes.search_url ve nesnelerin .url değerleriyle değiştirin.
  4. Kendi adresi olmayan tek bir ülkeye yönelik kampanyalarda your-store.com?country=<kod> adresine link verin.

Kod

locale-aware-links.liquid
{%- comment -%}
  Never hardcode /cart or /search: a visitor on /fr/ or /en-ca/ would be sent
  back to the default language and currency. routes.* and object .url values
  include the current locale path.
{%- endcomment -%}
<a href="{{ routes.cart_url }}">Cart</a>
<a href="{{ routes.all_products_collection_url }}">All products</a>
<a href="{{ product.url }}">{{ product.title }}</a>

{%- comment -%} The same rule in JavaScript: build on Shopify.routes.root ("/" or "/fr/"). {%- endcomment -%}
<script>
  fetch(window.Shopify.routes.root + 'cart.js')
    .then((response) => response.json())
    .then((cart) => console.log(cart.currency))
    .catch((error) => console.error(error));
</script>

{%- comment -%}
  A country switcher posts to /localization with country_code, which switches
  the visitor's country and currency. Output it only if there's a choice.
{%- endcomment -%}
{%- if localization.available_countries.size > 1 -%}
  {% form 'localization' %}
    <select name="country_code" onchange="this.form.submit()">
      {%- for country in localization.available_countries -%}
        <option value="{{ country.iso_code }}" {% if country.iso_code == localization.country.iso_code %}selected{% endif %}>
          {{ country.name }} ({{ country.currency.iso_code }})
        </option>
      {%- endfor -%}
    </select>
  {% endform %}
{%- endif -%}
urls.txt
# Subfolder per language: Shopify creates it when you publish a language
https://your-store.com/            primary language
https://your-store.com/fr/         French

# Subfolder per market on the same domain, for example a Canada market
https://your-store.com/en-ca/
https://your-store.com/en-ca/products/example-product

# Other domain strategies set under Markets > (market) > Domain / language
https://fr.your-store.com/         subdomain
https://your-store.fr/             top-level domain

# Deep link to one country inside a multi-country market (ISO 3166 code)
https://your-store.com?country=DE

# Cart permalinks and Ajax calls keep working under the prefix
https://your-store.com/fr/cart/12345678901234:1
https://your-store.com/en-ca/cart.js

Lintel tarafından yazıldı. MIT lisansı: kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.

Sınırlar ve özel durumlar

  • Shopify her alt klasör ve alan adı için hreflang etiketlerini ve kendine işaret eden canonical’ları ekler; bu yüzden /fr/products/shirt, /products/shirt’ün kopyası sayılmaz.
  • AB’deki ziyaretçiler AB ülkeleri arasında otomatik yönlendirilmez; bir ülke seçici sunun.
  • Sabit yazılmış bir /cart linki, /fr/ altındaki ziyaretçiyi varsayılan dile ve para birimine geri gönderir.
  • Uluslararası alan adları için özel bir alan adı gerekir; myshopify.com bu iş için kullanılamaz.

Sık sorulan sorular

Shopify dil adresleri nasıl çalışır?
Her yayındaki dil, Markets altında ona ayrı bir alt alan adı ya da alan adı atamadıysanız, alan adında /fr/ gibi bir yol alır.
Shopify Markets’te belirli bir ülkeye nasıl link verilir?
Pazarın kendi adresi varsa onu kullanın; yoksa linke ?country=DE (herhangi bir ISO ülke kodu) ekleyin.
Shopify pazar alt klasörleri SEO’ya zarar verir mi?
Hayır. Shopify sürümleri birbirine bağlayan hreflang ve canonical etiketlerini ekler; alt klasörler ana alan adının otoritesini paylaşır.
Sepeti açınca para birimi neden değişiyor?
Genellikle temada sabit yazılmış bir /cart linki yüzünden. Pazarın yolu korunsun diye routes.cart_url kullanın.
  • Gösterilen tarihte bir Shopify mağazasında denendi. Shopify yönetim panelini sık değiştirir; bir adım farklı görünüyorsa fikir genellikle hâlâ geçerlidir.
  • Örneklerde yer tutucu ID’ler ve your-store.myshopify.com kullanılır. Kendi değerlerinizle değiştirin.
  • Kod parçaları MIT lisanslıdır.

Mağazanız için kurulmasını, test edilmesini ve bakımını isterseniz: Shopify geliştirme.

Geliştirmek istediğiniz bir şey mi var? Gelin, birlikte konuşalım.

Aynı anda sınırlı sayıda proje alıyoruz.

Gencer KarakayaShopify mühendisi

Proje özetinizi bir mühendis okur; size e-postayla yanıt veririz.