web-gelistirme-sc.com

Sunucu tarafında ekran genişliğini tespit etmek için en iyi uygulama nedir?

Ben varsayılan olarak 1 öğe çıktı bir modül var, onun help.php dosyasında, gibi bir şey var

$items = 1;
$db->setQuery($query, 0, $items)

Şimdi kullanıcıların ekran genişliğinin belirli bir değerden daha düşük olup olmadığını tespit etmek istiyorum, eğer evetse, sadece 1 öğe alın, aksi takdirde 4 öğe alın. Bunu yapmak için en iyi uygulama nedir?

Ben sadece $ 4 öğeleri ayarlamak ve diğer 3 öğeleri ortadan kaldırmak için javascript kullanabilirsiniz, ama bu aşırı veri indirilecek çünkü bu mükemmel bir çözüm değil. Sorularım şunlardır: 1) PHP tek başına müşterinin ekran genişliğini algılayabilir? 2) Hayır ve ben javascript/ajax kullanmak zorunda kalırsam, eklemek düşünüyorum

<script>
    var w = screen.width;
    href = location.href;
    if (location.search){
       href = href + '&screenWidth=' + w;
    } else
    href = href + '?screenWidth=' + w;
</script>

her sayfaya ekleyin ve $_GET['screenWidth] helper.php dosyasındaki ekran genişliği değerini almak için bu iyi bir uygulama mı? Bu çıktı tamponu ile mi karışacak (eğer varsa)?

2
shenkwen

PHP, sunucuda çalıştığı için ekran boyutunu algılayamıyor. Ayrıca böyle bir şey için ajax kullanmazdım.

Joomla'nın Tarayıcı Algılama Özellikleri ile JApplicationWebClient Sınıflandırın ve farklı ekran boyutları için özel değil, farklı cihazlar için php/sorgularınızı ayarlayın.

Basit kod:

$client = JFactory::getApplication()->client;
$client->browser;
$client->mobile...

Son yorumunuz hakkında bazı düşünceler:

İnsanların neden ekran genişliği yerine cihaz türünü algılama eğiliminde olduklarını anlamıyorum. Çoğu durumda (genellikle yalnızca düzen yaparım) Karşılaştığım cihaz kullanıcılarının ne kullandıkları umurumda değil, sadece ekran genişliği ....

AJAX ile bunu yapmak mümkün değil. Ancak, aşırı verileri kaydetme konusundaki ilk endişenizi göz önünde bulundurarak ... her ekran yeniden boyutlandırıldıktan sonra ne olur - yeniden boyutlandırma biraz daha yerleşik bir gecikme verseniz bile, verileri indirmek için yeni bir isteğiniz olacaktır (hatta bu arka planda olursa ve bunları önbellekten alsanız bile). En azından aynı miktarda veri elde edersiniz. Öyleyse neden CSS ile istemci tarafında baştan başlamıyorsunuz?

Başka bir şey, bir ekran boyutu değişikliğinden sonra (kullanıcının mobil cihazını dikeyden yataya geçirdiğini), veritabanında bir değişiklik olması durumunda verilerin yeniden yüklenmesi farklı öğeler getirebileceğidir. Kullanıcı kafasını karıştırabilir ve daha önce ekranında bulunduğu öğeyi aramak zorunda kalabilir.

Tabii ki, yeni bir veri talebinin ne zaman gerçekleşmesi gerektiği konusunda yol gösterme ve durumları belirleme seçeneği olabilir ... Ama tüm bunlar neden güçlük çekiyor?

4
FFrewin

Eğer ben olsaydım, buna farklı yaklaşırdım.

Her zaman 4 ürün alırım:

$items = 1;
$db->setQuery($query, 0, $items);
$rows = $db->loadObjectList();

Hepsini göster:

foreach ($rows as $row)
{
    echo '<div class="item_"' . $row->id . '>' . $row->item . '</div>';
}

Hangi çıktı:

<div class="item_1">
    // row data
</div>
<div class="item_2">
    // row data
</div>
<div class="item_3">
    // row data
</div>
<div class="item_4">
    // row data
</div>

Ardından 3 tanesini gizlemek için CSS3 medya sorgularını kullanın:

@media (max-width: 767px) {
    .item_2, 
    .item_3,
    .item_4 {
        display: none;
    }
}

Verileri görüntüleme biçimim yalnızca bir örnek ve kavramdır.

Her zaman ekran genişliğini (yapılması gerektiği şekilde) tespit etmek için istemci tarafını kullanmayı tercih ettim ve aynı zamanda daha iyi performans.

Bu yardımcı olur umarım

1
Lodder

En iyi pratik? En iyi uygulama ekran boyutunu belirlemeye çalışmamaktır, çünkü nihayetinde boştur. Örneğin, büyük bir ekran kullanıcısı tarayıcı penceresi boyutunu değiştirdiğinde ne olur?

Bir düzenini değiştirmek istiyorsanız, bir kullanıcı cihazındaki ekran boyutuyla ilgili olarak, duyarlı web tasarımıyla yapın.

Varsayılan olarak yayınladığınız içerik öğelerinin sayısının mobil cihazlar için uygun olmadığından endişe ediyorsanız, varsayılanlarınızı azaltmalı ve her zaman ilk etapta mobil kabul etmelisiniz; mobil ilk geliştirme özellikle böyle sorunları ele alır.

Daha sonra büyük ekran kullanıcılarına daha fazla içerik öğesi vermek istiyorsanız, ekstra (masaüstü boyutu) öğeleri çekmek için duyarlı koşullu yükleme tekniklerine bakmalısınız.

1
Seth Warburton