<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Sintony:normal%7CMonda:700%7COpen+Sans:normal">Sepet Ürünlerine SEO - Temalog

Sepet Ürünlerine SEO

Ürün odaklı olarak yapılan arama motoru optimizasyonu çalışmalarında veritabanında  tutulan bu ürün(ler) müşteriye gösterilmeli. O zamana kadar yaptığı alışverişin toplam tutarını görebilmeli. Müşteri bu ürün veya ürünler üzerinde düzenleme yapabilmeli. Bu esnada diğer sayfalan ziyaret edebilmeli, yani alışverişe devam edebilmeli.

Son aşamada siparişi sonlandırarak ödemeyi yapmalı. Her zamanki sistemimize göre bir alışveriş sepeti sınıfı oluşturacağımız açıkça gözüküyor. Bu sınıf yukarıda bahsettiğim işlemleri yapabilecek yordamlardan oluşmalı.

Bu sınıfın yapısını çok iyi tasarlamalıyız. Hataya izin vermemeliyiz. Çünkü müşterimizin alışverişini yönlendiren ve yukarda saydığımız bütün o işlemleri yapacak olan bu sınıftır. Ayrıca bu sınıfta yapacağımız herhangi bir hata müşterinin veya bizim parasal sorunlarına sebep olabilir. Dolayısıyla bu bölümü iyi anlayıp dikkatli takip etmenizi öneririm. Öncelikle bu kodları iyi analiz edelim.

Burada alisveris_sepeti isminde bir sınıf oluşturuyoruz. Bu sınıfın konstriktörüne bakacak olursak, nesne oluşumu sırasında ürünler sınıfının liste şeklinde oluşmasını istiyoruz. Diğer bir ifadeyle alisveris_sepeti nesnesini oluşturduğumuz anda elimizde aynı zamanda ürünleri barındıran bir ürünler nesne listesinin olmasını istiyoruz. Çünkü buraya müşterinin ekleyeceği ürünleri ilave edeceğiz. Bunu oluştururken bu değişkenin boş olduğundan emin oluyoruz ve _siparis_edilen_urunler ile oluşturuyoruz.

Bu yapı, sınıfımızın temel yapısını oluşturmaktadır. Yani alışveriş sepeti oluşturulduğu anda elimizde ürün nesnelerini barındıracak bir nesne listesi olacak. Biz bu listeyi ürünleri ekleyerek veya çıkararak yöneteceğiz. Bu aşamada, ekleme ve çıkarma işlemini yapacak yapıyı da kurmalıyız. Bunun için bir arabirim tasarlayarak atamaları sağlamalıyız.

Aslında burada yapılan işlem, bir özellik tanımlayarak _siparis_edilen_urunler özel değişkenimize sınıf içinde kullanılması için dışarıdan atanacak değerlere arabirim sağlamak. Tersi de geçerli sınıf içersinde _siparis edilen_urunler arabiriminde oluşan değerleri bu özellik sayesinde dışarı aktarabiliriz. Böylece _siparis_edilen_urunler değişkenini korumuş oluyoruz.

Daha da somutlaştıracak olursak, kodların ilerleyen kısmında göreceğiz ki ürünler bu liste değişkenlerine atanarak hafıza da bir liste gibi tutuluyor. Dahili kullanım için _siparis_edilen_urunler değişkeni, harici iletişim için Siparişler değişkeni kullanılıyor. Elimizde ürün nesnelerinden oluşan bir sınıfımız olduğuna göre şimdi sıra geldi bu ürünlerle yapılacak diğer operasyonlara.

Müşteri bir butona tıkladığında sepete ürün ekleyecek yordam olacaktır. Burada düşünecek olursak temel iki parametreye ihtiyacımız var. Birincisi ürün id’si yani hangi ürünün ekleneceği, ikincisi bu üründen kaç adet ekleneceği. Şimdi sorunumuz şu: programatik olarak bir ürün ekleme sınıfı geliştireceğiz ve bütün parametreler bu sınıf içinde tanımlanmış olmalı. Daha açık bir ifadeyle sepet nesnemizi bir sınıf listesinde tutuğumuza göre bu ürünleri bu sepete yine bir metot vasıtasıyla ekleyeceğiz.

Burada karşımıza çıkan temel sorun sepet içine müşterinin eklemek istediği ürün zaten daha önceden yüklenmiş olabilir. Öncelikle bunun tespitini yapmalıyız. Yani kullanıcı acaba sepetteki mevcut bir ürünü tekrar mı ekliyor? Bunu tespit etmeliyiz. Eğer aksi durumsa yeni eklenen ürünü veritabanından getirip sipariş edilenlere belirtilen adette eklemeliyiz.

Bunu da ürün id’lerinden yapıyor. Birazdan sorgulayacağımız id’yi göndereceğimiz yordamı oluşturacağız. Eğer bu listede sorgulanan id varsa indeks numarası döndürülüyor. Eğer yoksa indeks değeri eksi bir döndürülüyor.

Burada eğer id_ye_gore_urun_indeks(urun_id); sorgulamasından 1 indeks dönüyorsa, demek ki ürün listeye ilk defa eklenecek. Eğer 1 dönmüyorsa ürün halihazırda listede mevcut dernektir. Böyle bir yordam hazırlayarak aynı ürünün birden fazla farklı defalar eklenmesi hatasını engellemiş olduk. Böylece listemizdeki ürünün (sitemizde gezinirken kullanıcı tarafından butona basıp) tekrar eklenince sadece adedi artacaktır.

Ürün verilerinin tutulduğu urun tablomuzdan ürünleri getiren bir SQL prosedürdür. Devam eden satırlarda buradan veriler okunup bir ürün nesnesine atanıyor. Bu ürün nesnesi de alisveris_sepeti.cs’ deki biraz önceki veritabani_islemleri.UrunGetir ifadesiyle elde ediliyor. Alışveriş sitelerindeki en kritik nokta; sepete ürün ekleme ve çıkarmadır. Bunun değişik yaklaşımları olabilir. Biz bu yöntemde nesne listeleri oluşturduk. Ancak bunun tek bir yöntemi yoktur. Farklı metotlarla, farklı kodlarla daha değişik ekleme çıkarma veya alışveriş sepeti yapılabilir.

Sepetle yapılacak diğer işlemler, sepete eklenen ürün adetlerinin güncellenebilmesi veya eklenen ürünlerin çıkartılabilmesidir. Müşteri sipariş son aşamasında veya herhangi bir zamanda sepete eklediği ürün veya ürünlerin adetinde değişiklik yapmak isteyebilir veya eklediği ürünü sepetten çıkartmak isteyebilir. Şimdi bunun nasıl yapılacağını inceleyeceğiz. Yalnız daha öncesinde sepetimizin sunum katmanıyla ilgili çalışma yapmalıyız. Potansiyel müşterimiz sepetine kolayca ulaşabilmeli ve orada yukarıda bahsettiğimiz güncellemeleri yapabilmeli.

Yani yukarıdaki gibi bir arabirim tasarlamalıyız. Bunun için değişik veri sunum kontrolleri kullanabiliriz. Ben bu uygulama için, GridView kontrolünü kullanacağım. Ancak bunu sepete_bak.ascx isimli bir user control’de oluşturacağım. Daha sonra bunu sepet. aspx sayfasına ekleyeceğiz. sepete_bak.aspx’ deki bildirimlerin tamamına kodlar dan bakabilirsiniz. Burada sadece önemli bölümleri alacağım.

Sepetteki adet değişikliği, ürün silme gibi yordamlar yönet sınıfı içinde tanımlanmış ve buraya eklenmiştir. Aslında burada yönet sınıfı yine iş katmanını oluşturan bir arabirimdir. Asıl işlemler alisveris_sepeti.cs içinde yapılıyor. Örneğin güncelleme işlemine bakarsak yönet sınıfında Sepetteki ürunu güncelle isminde bir metot tanımlanmış.


Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Optimized with PageSpeed Ninja