Shopify Aralık Ayarı: '101 Adıma Kadar' Hatasını Düzelt
Shopify aralık ayarı 101 adım sınırını uygular. Hatasının nedeni, çözümü ve number türüne ne zaman geçeceğinizi öğrenin.
"Range settings must have at most 101 steps" hatası, min, max ve step kombinasyonunuzun 101'den fazla olası kaydırıcı pozisyonu ürettiği anlamına gelir. step değerini artırarak, max değerini azaltarak veya geniş bir sayısal aralığa gerçekten ihtiyaç duyduğunuzda number giriş türüne geçerek düzeltebilirsiniz. Kök neden her zaman matematik hatasıdır, bir bug değil.
Ana çıkarımlar
- Shopify aralık ayarlarını maksimum 101 adımla sınırlandırır (schema ayrıştırma sırasında uygulanır).
- Adım sayısı
(max - min) / stepolarak hesaplanır; sonuç 100 veya daha az olmalıdır. - Hata Shopify tema editöründe görünür ve bölümün render edilmesini engeller.
step: 1değerini daha yüksek bir tam sayıya değiştirmek genellikle en hızlı çözümdür.- Sınırlandırılmamış bir tam sayı girişine ihtiyaç duyduğunuzda,
rangeyerinenumberkullanın.
101 adım kuralı nedir?
Shopify range giriş türü, tema editöründe bir kaydırıcı render eder. Platform katı bir sınır uygular: kaydırıcı maksimum 101 pozisyon (0'dan 100'e kadarki adımlar, kapsayıcı) içerebilir. Shopify adım sayısını dahili olarak şu şekilde hesaplar:
steps = (max - min) / step
Bu hesaplama 100'den büyük bir değer üretirse, Shopify şemayı reddeder ve şu hatayı atar:
Error: Invalid schema: setting with id="[your_id]" step invalid.
Range settings must have at most 101 steps.
Bu doğrulama, tema editörü bölümü her yükledişinde çalışır, dolayısıyla şema düzeltilene kadar bölüm tamamen işlevsiz hale gelir.
Not: Shopify'ın giriş ayarları belgelerine göre, dört aralık özniteliğinin tümü (min,max,step,default) sayısal değerler olmalı, dizeler değil. Herhangi biri için bir dize iletmek de hata atar.
Üç en yaygın tetikleyici
Bu kalıpları, müşteriler veya junior geliştiriciler bu duvarla karşılaştığında en sık görüyorum:
step: 1ile geniş aralık,min: 0, max: 500, step: 1ayarlamak 500 adım oluşturur. Bu en sık karşılaşılan durumdur.- Var olan max değerini adımı ayarlamadan bumplama, Bir geliştirici logo genişliği kaydırıcısında
maxdeğerini 100'den 300'e değiştirir, adımın 1'de kaldığını unutur. - HTML spec örneğinden aralık kopyalama, Standart HTML herhangi bir adım sayısına izin verir; Shopify vermez.
Gerçek topluluk örnekleri, min: 0, max: 500, step: 1 olarak ayarlanmış free_shipping_threshold kaydırıcısı ve 300px'den 550px'e itilen logo_max_width kaydırıcısını adımı yeniden hesaplamadan içerir.
Aralığınızın geçerli olup olmadığını hesaplama
Tek bir kod satırı yazmadan önce bu kontrol yapın:
(max - min) / step <= 100 → geçerli
(max - min) / step > 100 → 101 adım hatasını atacak
Hızlı örnekler
| min | max | step | Hesaplanan adımlar | Geçerli mi? |
|---|---|---|---|---|
| 0 | 100 | 1 | 100 | Evet |
| 0 | 500 | 1 | 500 | Hayır |
| 0 | 500 | 5 | 100 | Evet |
| 0 | 1000 | 10 | 100 | Evet |
| 10 | 210 | 2 | 100 | Evet |
| 0 | 300 | 1 | 300 | Hayır |
| 0 | 300 | 3 | 100 | Evet |
Sınır tam olarak 100 hesaplanan adımdır (başlangıç noktası dahil 101 kaydırıcı pozisyonu verir). 100'ün üzerindeki herhangi bir değer reddedilir.
Düzeltmenin üç yolu
1. Adım değerini artırın
Bu çoğu durumda doğru çözümdür. 0'dan 200px'e 2'şer adımlarla giden bir padding kaydırıcısı tüccarlar için 101 pozisyon verir ve sınırın içinde kalır.
{
"type": "range",
"id": "section_padding",
"label": "Bölüm dolgusu",
"min": 0,
"max": 200,
"step": 2,
"unit": "px",
"default": 40
}
Ne zaman kullanın: Hemen hemen her zaman. Çoğu tasarım değeri (padding, yazı tipi boyutları, opaklık yüzdeleri) geniş bir aralıkta tek birim kesinliğe ihtiyaç duymaz.
2. Max değerini daraltın
Tek adım kesinliği önemliyse (örneğin 1'den 5'e yıldız değerlendirmesi veya 0'dan 100'e yüzde), step: 1 ile 100 adım içinde kalmak için basitçe max değerini azaltın.
{
"type": "range",
"id": "free_shipping_threshold",
"label": "Ücretsiz kargo eşiği",
"min": 0,
"max": 100,
"step": 1,
"unit": "$",
"default": 50
}
Bu topluluk tarafından doğrulanmış çözüm, Shopify forumlarında yayılan free_shipping_threshold durumu için kabul gören çözümdür.
3. number türüne geçin
Bir tüccar herhangi bir tam sayı girmesi gerektiğinde (milisaniye cinsinden animasyon gecikmesi, 100'ün üzerinde ürün sayısı, 0-9999 olabilecek eşik), range türü tamamen yanlış araçtır. Bunun yerine number kullanın.
{
"type": "number",
"id": "free_shipping_threshold",
"label": "Ücretsiz kargo eşiği ($)",
"default": 50
}
number türü herhangi bir tam sayı kabul eder, kaydırıcı kapağı yoktur ve Liquid'te section.settings.free_shipping_threshold aracılığıyla aynı şekilde erişilir. Takas, bir kaydırıcı yerine metin giriş olmasıdır, bu nedenle tüccarlar aralığın dışında değerler girebilir. Korkuluklar önemliyse, bölüm kodunuza bir Liquid kontrolü ekleyin.
Doğru çözümü seçme: karar tablosu
| Durum | Önerilen çözüm | Neden |
|---|---|---|
| Padding / boşluk kaydırıcısı, geniş aralık | step değerini 2, 4 veya 5 olarak artırın | Kesinlik nadiren tek piksel seviyesinde gereklidir |
| Yüzde veya 0-100 değeri | step: 1 tutun, max: 100 ayarlayın | 100 adım tam olarak uyar |
| Para birimi eşiği (küçük miktarlar) | max değerini gerçekçi üst sınırına ayarlayın | Pratik olmayan yüksek değerleri önler |
| Büyük tam sayı, üst sınır yok | number türüne geçin | Sınırı tamamen kaldırır |
| Opaklık veya ölçek (0.0 ile 1.0) | min: 0, max: 100, step: 1, Liquid'te 100'e bölün | Shopify aralığı yalnızca tam sayıları destekler |
Birçok öğretim atlaması geçen bir şey: aralık yalnızca tam sayıları destekler
Shopify'ın aralık girişi ondalık adım değerlerini desteklemez. Opaklık için 0.1 adımına ihtiyacınız varsa, çözüm değeri tam sayı olarak (0 ile 100) depolamak ve Liquid çıktınızda 100'e bölmektir:
{% assign opacity = section.settings.overlay_opacity | divided_by: 100.0 %}
<div style="opacity: {{ opacity }}">
Bu kalıp göründüğü kadar temiz: tüccar 0-100 kaydırıcısı görür, CSS'niz 0.0-1.0 float alır. Hiçbir hack gerekmez.
Yayınlamadan önce çözümü doğrulama
Shopify'ın resmi linting CLI'si olan Theme Check, bu hatayı yerel geliştirme sırasında yakalar. Herhangi bir şema değişikliğini pushlamadan önce bunu çalıştırın:
shopify theme check
Shopify admin kod editöründe doğrudan çalışıyorsanız (yerel CLI kurulumu olmadan), bölüm dosyasını kaydedin ve tema editörü önizlemesini yeniden yükleyin. Şema hala geçersizse, hata özelleştiricide üst kısımda kırmızı banner olarak görünür.
Theme Check'in şema doğrulaması ve argument hatalarını nasıl işlediğine daha derinlemesine bakmak için Shopify Theme Check: Tek Dosya Yolu Argümanı Neden Çalışmıyor bölümüne bakın.
Herhangi bir aralık ayarı eklemeden önceki pratik kontrol listesi
Her yeni range bloğu yazdığınızda bu listeyi kullanın:
(max - min) / stephesaplayın ve sonucun 100 veya altında olduğunu doğrulayın.- Dört özniteliğin tümünün (
min,max,step,default) dizeler değil, tam sayılar olduğunu doğrulayın. defaultdeğerininminilemaxarasında olduğunu doğrulayın.- Sorun: bu değer gerçekten bir kaydırıcıdan fayda sağlıyor mu? Hayırsa,
number,selectveyatextkullanın. - Üretime pushlamadan önce tema editöründe test edin.
Her şema giriş türü ve her birinin ne zaman kullanılacağına ilişkin tam bir döküm için, Shopify tema geliştirme kılavuzuna bakın.
Özet
"Range parameters must have at most 101 steps" hatası saf matematiktir. (max - min) / step formülü 100 veya daha az üretmelidir. Adımınızı genişletin, max değerinizi sınırlandırın veya number türüne geçin. Bu düzeltmelerin hiçbiri Shopify plan yükseltmesi, tema yeniden yüklemesi veya destek biletine ihtiyaç duymaz. Kısıtlamayı bir kez anlayın ve bir daha asla ona çarpmayacaksınız.
Sıkça sorulan sorular
Shopify'da 'range settings must have at most 101 steps' ne anlama geliyor?
Bu, aralık ayarınızın min, max ve step değerlerinin 100'den fazla hesaplanan adım ürettiği anlamına gelir. Shopify adımları (max - min) / step olarak hesaplar ve sonuç 100 veya daha az olmalıdır. Step değerini artırarak, max değerini azaltarak veya number giriş türüne geçerek düzeltebilirsiniz.
Shopify aralık ayarında ondalık step değerleri kullanabilir miyim?
Hayır. Shopify aralık ayarları yalnızca min, max, step ve default için tam sayı değerlerini destekler. Ondalıklarla çalışmak için (örneğin 0,0'den 1,0'ye opaklık), değeri 0 ile 100 arasında adım 1 olarak depolayın ve Liquid kodunuzda 100,0'ye bölün.
Shopify şemasında range ve number giriş türleri arasındaki fark nedir?
Range türü tanımlı min, max ve step ile bir kaydırıcı render eder ve 101 pozisyon ile sınırlandırılır. Number türü herhangi bir tam sayı kabul eden ve UI seviyesinde üst veya alt sınır uygulamayan düz metin alanı render eder. Görsel kaydırıcı geri bildirimi ile sınırlı değerler için range kullanın, açık uçlu tam sayılar için number kullanın.