WordPress’ e geçiş maceram

apostylee.com un eski halini yıllar önce klasik asp ile kodlamıştım. Yıllardır işimi problemsiz görüyordu fakat son zamanlarda ki gelişmelerden dolayı artık yollarımızın ayrılma zamanı geldi ve WordPress e geçtim. Neydi bu gelişmeler ?

  • En önemlisi apostylee.com un ilkel ötesi yönetici panelinden içerik girmek tek kelimeyle eziyetti ve çoğu zaman yazacağım şeyleri yazmıyordum. Açıkcası paneli elden geçirmek de işime gelmiyordu.
  • Tasarımdan kaynaklı ciddi problemlerim vardı, en basitinden friendfeed yada facebook aracının yerleşiminde sıkıntı yaşıyordum. Tasarımımı çok severek yapmıştım ama zamanında bu tarz durumları hesaba katmadığımdan dolayı yerleşimlerde çok ciddi sıkıntılar yaşıyordum. Onu oraya çek bunu buraya çek, zaten zamanım yok iyice bunalmıştım, yeniden tasarlamak da yine işime gelmiyordu :S
  • Arama motoru optimizasyonu ve diğer kolaylıklar için, özellikle eklenti desteği ve tema desteği..
  • Harekette bereket vardır inancımdan dolayı.
  • Yukarıda saydıklarım işin teferruat kısmı olarak nitelendirilebilir, asıl amacım WordPress gibi bir sisemi öğrenebilmek, fırsatını bulmuşken ucundan az da olsa php ile tanışmak.

Madem durum böyle bende tamam apocum geçelim wp ye dedim, fakat ortada ciddi bir sıkıntı vardı. Bu da verilerin taşınmasıydı. Eski sistemde 2 tane tablom vardı ve veriler kendi düzenimde kayıtlıydılar. Koyuldum araştırmaya ama geçişle ilgili hiç bir şey bulamadım. Dedim ki asp.net de bir kod yazayım wp nin istediği xml çıktısını oluşturup, vereyim wp ye olsun bitsin. Koyuldum kod yazmaya baktım ki yazmakla bitecek gibi değil bıraktım :D Aklıma EMS firmasının SQL Manager for MySQL programı geldi, uzun zamandır aynı programın mssql için olanını zaten kullanıyordum. Yeni bir paragraf zamanı :) Okumaya devam et WordPress’ e geçiş maceram

ASP de Querystring ile alınan bilgide Türkçe karakter problemi

Epey zamandır ASP ile uğraşıyorum türlü türlü Türkçe karakter problemleriyle karşılaştım fakat ilk kez böylesine rastladım. Google da ufak bir araştırma yaptıktan sonra sonuca ulaşamadım, hemen kolları sıvayıp bir replace fonksiyonu yazdım. Belki birilerinin işine yarar diye paylaşayım istedim.
[asp]
function tCevir(gelenveri)
gelenveri=Replace(gelenveri,”ı”,”ı”)
gelenveri=Replace(gelenveri,”ÄŸ”,”ğ”)
gelenveri=Replace(gelenveri,”ü”,”ü”)
gelenveri=Replace(gelenveri,”ç”,”ç”)
gelenveri=Replace(gelenveri,”Ä°”,”İ”)
gelenveri=Replace(gelenveri,”Ä”,”Ğ”)
gelenveri=Replace(gelenveri,”Ç”,”Ç”)
gelenveri=Replace(gelenveri,”Ãœ”,”Ü”)
gelenveri=Replace(gelenveri,”ö”,”ö”)
gelenveri=Replace(gelenveri,”Ö”,”Ö”)
tCevir = gelenveri
end Function
[/asp]

ASP ile SEO

Merhabalar efendim, uzun bir zamandan sonra yeni bir makale ile tekrardan karşınızdayım. Bu yazımda ASP ile SEO (Arama motoru optimizasyonu) için gerekli olan en önemli işlemlerden olan linklerin yazı başlığı şeklinde uzantısının .html şeklinde olması olayını (SEF) kendimce anlatmaya çalışacağım. Bu ne için gereklidir dilerseniz önce bunu anlamaya çalışalım. Google bu konu hakkında şunu der; kullanıcı bir arama sonucunda yada bir yerde sitenizin içeriği hakkında bir link gördüğünde, linkten konunun içeriğini anlamalıdır.Olayın özeti budur. Bakınız bu site. Linkler; baslik-deneme-1-2.html şeklindedir. Burdaki .html uzantısı ise sayfanın sabit bir içerik olduğunu temsil eder. PHP ASP.NET gibi dillerde bu işlemi yapmak gayet basitken ASP gibi modası geçmiş bir dilde birazcık zahmetlidir. Birden fazla yolu vardır fakat bence en kolay şu şekilde yapılmaktadır. Sitemde ki yapıda aynen anlatacağım şekildedir.

Öncelikle asp sayfalarımızı yorumlayan programımız olan IIS e ufak bir ayar yapmamız gerekiyor. Bunun nedeni de şu; www.sitemiz.com/deneme.html diye bir istek olduğunda eğer böyle bir sayfa yoksa dizinimizde 404 numaralı hatanın sayfası çıkar ve Aradığınız sayfa bulunamadı gibisinden bir uyarıyla karşılaşırız. Bizim kuracağımız yapıda her başlığa ait bir .html dosyası olmayacağından bu duruma el atıp 404 uyarısı verildiğinde default.asp sayfamıza yönlendirme yapmamız gerekiyor. Sonrasında gerekli kodlarımızı yazıp veritabanı sorgulama işlemimizi sağlıklı bir şekilde yapıp kullanıcının ruhu bile duymadan istediği sayfayı istediğimiz şekilde kendisine sunacağız.

Denetim Masası\Yönetimsel Araçlar \ Internet Information Services (IIS) Yöneticisini çalıştırıyoruz. Şuandaki bilgisayarımda Windows Vista olduğu için IIS 7 üzerinden yönlendirme işlemini göstereceğim. Bu IIS 6 da ve farklı versiyonlarda değişiklik gösterebilir, fakat ufak bir araştırmayla 404 yönlendirmesini basit bir şekilde yapabilirsiniz.

IIS açıldıktan sonra sol taraftaki ağaç menüden Default Web Site yi tıklıyoruz. Sonrasında karşımıza çıkan ekrandan Hata Sayfaları simgesine tıklıyoruz.

Gördüğünüz gibi hata kodlarıyla birlikte hata olduğunda hangi sayfanın görüntüleneceği bir kısım geldi karşımıza. Bu ekrandayken direk sağ taraftaki Özellik Ayarlarını Düzenle linkine tıklıyoruz.

Normalde Ayrıntılı Hatalar seçili durumdadır, biz bunu Özel Hata Sayfaları olarak değiştiriyoruz.

Daha sonra bir önceki sayfada bulunan hata sayfalarından 404 numaralı hatanın üzerine çift tıklayıp Bu sitedeki bir URL’ i yürüt kısmına ister default.asp dosyamızı veya kendinizin belirleyeceği bir yorumlama sayfasının yolunu giriyoruz. Ben örneğimde default.asp kullandım, sizde olayı kavramak açısından bu ismi kullanın ilerde konuyu anladığınızda istediğiniz değişikliği rahatlıkla yapabilirsiniz ;)

Herşey bukadar basit arkadaşlar. Hemen wwwroot klasörümüzün altına deneme amaçlı bir aspUrl klasörü oluşturup içinede default.asp adında bir dosya oluşturuyor ve içine Response.Write “deneme” yazıyoruz. Tarayıcımızın adres satırına localhost/aspUrl yazdığımızda ekrana deneme yazısı çıkıyor. localhost/aspUrl/asdasdasd yazınca ne oluyor peki ? yine deneme yazısı çıkıyor. Nedenide hata olduğunda default.asp sayfamıza yönlen işlemini yapmamış olmamızdır. Buraya kadar sorun yoksa burdan sonrası yaratıcılığımıza kalıyor. Örneklerimize hemen geçelim.

Öncelikle adres satırında yazan yazıyı alıp işlememiz gerekiyor. Bunun için ben Request.QueryString komutunu kullanacağım.

Default.asp sayfamı aşşağıdaki gibi değiştirip olanları gözlüyoruz.

<%
gelenAdres = Request.QueryString
response.write gelenAdres
%>

Adres çubuğuna http://localhost/aspUrl/seo-deneme-linki yazdığımda sayfamızda 404;http://localhost:80/aspUrl/seo-deneme-linki şeklinde bir çıktı göreceğiz. Yaşasın diyoruz çünki herşey istediğimiz gibi ilerliyor. Şimdi biraz kod yazmaya başlıyoruz.

Default.asp sayfamızın içine aşşağıdaki kodları yazıyoruz.

<a href="hakkimda">hakkımda</a> <br />
<a href="seo">seo</a> <br />
<%
gelenAdres = Replace(Request.QueryString,"404;<a href="http://localhost:80/aspUrl/%22,">http://localhost:80/aspUrl/",</a>"")  ' burada baştaki istemediğimiz kısımdan kurtuluyoruz ve elimize sadece  istediğimiz kısım geliyor.
if gelenAdres="hakkimda" Then ' eğer adres satırına hakkimda yazarsak burası
call hakkimda
elseif gelenAdres="seo" Then ' eğer adres satırına seo yazarsak burası  çalışıyor.
call seo
end if
Sub hakkimda
response.write "Burası Hakkımda"
End Sub
Sub seo
Response.Write "Seoooo Seooooo"
End Sub
%> 

Bu kısımdan sonrası yaratıcılığa kalıyor, gelen adresi istediğiniz gibi parçalayıp işleyebilirsiniz. Mesela Kategori/UrunAdı şeklinde olan bir link yapısını nası yapabilirdik bunu inceleyelim.

Default.asp sayfamızın içine aşşağıdaki kodları yazıyoruz. Burda geçen Split fonksiyonunu daha önce şurada anlatmıştım.

<a href="Anakart/Islemci">Kategori / Ürün Adı</a> <br />
<%
gelenAdres = Replace(Request.QueryString,"404;http://localhost:80/aspUrl/","")
if not gelenAdres="" Then ' gelenAdres değişkenimiz boş değilse aşşağıdaki  işlemleri yapıyoruzki, sayfamız hata vermesin.
gelenAdresParcala = Split(gelenAdres,"/") ' / karakterini  split edip isteğimiz olan birinci ve ikinci bölümleri alıyoruz. (Anakart/Islemci)
response.write gelenAdresParcala(0) &amp;"<br />" ' birinci  dizide Anakart
response.Write gelenAdresParcala(1) ' ikinci dizide de  Islemci geliyor.
end if
%>

İşte bu kadar basit arkadaşlar. Korkulacak en ufak bişiy bulunmuyor. Zaman bulursam Veritabanı işlemlerine bir örnekle bukonuyu sonlandıracağım. Anlamadığınız noktaları sorabilirsiniz. Herkese kolaylıklar dilerim.

ASP ile veriyi olduğu yerde düzenleyin (Instantedit)..

Belki başlık biraz alakasız oldu ama aklıma bu olaya verecek Türkçe bir isim gelmedi. Bir veriyi düzenlemek için ya yeni bir pencere açtıyoruz veya olduğu sayfayı yeninden düzenleyip düzenleme formunu kullanıcıya sunuyoruz. Genellikle yorucu bir işlem olan bu olayı gösterecek olduğum şekilde rahatça ve oldukça şık bir şekilde halledebilirsiniz. Bir çok kullanım alanına sahip olan bu scriptin orjinal sayfası Burası fakat herzamanki gibi PHP :D burda ASP versiyonuna çevrilmiş hali var. Çalışır halini ise buradan indirebilirsiniz..

Default.asp

<script type="text/javascript" src="instantedit.js"></script><span id="id degeri" class="editText">icerik icerik icerik</span>

Update.asp

Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
id=Request.QueryString("fieldname")	' gelen id miz..
veri=Request.QueryString("content")	' gelen verimiz..

'-------------------------- verileri veritabanına kayıt edeceksek
'Set Rs = Server.CreateObject("AdoDb.RecordSet")
'Sql = "Select * from Tablo_Adi" 'eğer koşul belirteceksek cümlemizi - Select * from Tablo_Adi where alan_adi = '"&amp;id&amp;"' - şeklinde düzenlememiz yeterli olacaktır.
'rs.open sql,baglantimiz,1,3
'	rs.addnew
'		rs("alanadi")=veri
'	rs.Update
'----------------------------------------------------------------

Response.Write veri

FastFind Menu Script ASP !

Find Fast Menu ASP

Çok güzel bir menü navigasyonu olan bu script, orjinalinde PHP ile yapılmış. Bende ASP ye çevirdim. Kolay ve anşalır bir biçimde sizlerle paylaşmak istedim. Scriptin orjinal sayfası
http://labs.activespotlight.net/jQuery/menu_demo.html

Demo http://www.apostylee.com/scripts/FastFindMenu/
İndir http://www.apostylee.com/scripts/FastFindMenu/ffm.rar

ASP ile sık kullanılan fonksiyonlar ve kullanım şekilleri (Bölüm 1)

Trim: Türkçe karşılığı düzeltmek, kesip budamak vb.. anlamlara geliyor. Verinin başındaki ve sonundaki boşlukları almaya yarıyor. Üç şekilde kullanımı bulunuyor. LTrim: Burdaki “L” Left in yani sol un kısaltılmış hali. RTrim: Burdaki “R” Right in yani sağ ın kısaltılmış hali.

        degisken = " 123456789 "
	Response.Write Trim(degisken) ' Çıktısı (123456789) şeklindedir.
	Response.Write LTrim(degisken) ' Çıktısı (123456789 ) şeklindedir.
	Response.Write RTrim(degisken) ' Çıktısı ( 123456789) şeklindedir.

FormatNumber: Gelen sayısal değeri biçimlendirmek, özelliklede virgüllü sayıların virgülden sonraki basamaklarını tahin etmek için kullanılır.

degisken = "123,5592"
degisken1 = "125"
	Response.Write FormatNumber(degisken,2) 'çıktı 123,56 şeklindedir. Buradaki 2 virgülden sonraki basamak sayısını ifade eder.
	Response.Write FormatNumber(degisken1,2) 'çıktı 125,00 şeklindedir.
	Response.Write FormatNumber(degisken1,3) 'çıktı 125,000 şeklindedir.

Len: Length kelimesinin kısaltılmış halidir. Türkçe karşılığı uzunluktur. Veri içindeki karakter sayısını geri döndürür.

degisken = "apostylee.com"
	Response.Write Len(degisken) ' Çıktı 13 dür.

Left, Right: Türkçe karşılığı sol ve sağ olan bu fonksyionlarla, verinin soldan ve sağdan görünecek karakter sayısını belirleyebiliyoruz. Değişkenimizden sonraki sayı kaç karakterin alınacağını ifade eder.

degisken ="bu bir soldan sağdan kırpma örneğidir."
	Response.Write Left(degisken,6) ' çıktı (bu bir) şeklindedir.
	Response.Write Right(degisken,10) ' çıktı (örneğidir.) şeklindedir.

ASP Fonksiyon (Function) Kullanımı

Fonksiyonlar genellikle tekrarlanan işlemleri bir kerede yapmak için kullanılan, hem kodlamayı hemde hata bulmayı kolaylaştıran vazgeçilmez özelliğimizdir. Hemen bir örnekle fonksiyon kullanımı anlayalım.

Function fonksiyonAdi(veri1,veri2)
   if veri1 = veri2 Then
       fonksiyonAdi = "Veriler Birbirine Eşit."
   Else
       fonksiyonAdi = "Veriler Eşit Değil."
   End if
End Function

  ' deneme = deneme olduğu için ekrana Veriler Birbirine Eşit. yazısı çıkacaktır.
  Response.Write fonksiyonAdi("deneme","deneme")
  ' deneme, asdas ye eşit olmadığı için ekrana Veriler Eşit Değil. yazısı çıkacaktır.
  Response.Write fonksiyonAdi("deneme","asdas")

Belki biraz anlamsız bir örnek oldu ama olayın mantığını anlamak için yeterli olduğuna inanıyorum. Anlaşılmayan yerleri, bu yazının altına yorum olarak eklersiniz, elimden geldiğince cevap vermeye çalışacağımdan emin olabilirsiniz.

ASP Split Kullanımı..

Merhabalar efendim, kabaca split fonksiyonunun kullanımını örneklemeye çalışacağım.. Split kelime anlamı olarak bölünme, parçalama vari bir anlama geliyor. Örneğin; deneme1,kitap,defter gibi bir veriden sadece “deneme1” “kitap” “defter” kelimelerini çekip kullanmak istiyoruz. Burada ihtiyacımız olan fonksiyon split !

gelenveri = "deneme1,kitap,defter"
gelenveriParcala = Split(gelenveri,",")
Response.Write gelenveriParcala(0) &amp;"
" 'deneme1
Response.Write gelenveriParcala(1) &amp;"
" 'kitap
Response.Write gelenveriParcala(2) &amp;"
" 'defter

Genellikle split fonksiyonun yanında Ubound da kullanılır. Ubound split ile parçaladığımız verinin adetini sayar. Örneğin;

>gelenveri = "deneme1,kitap,defter"
gelenveriParcala = Split(gelenveri,",")
gelenveriAdeti = Ubound(gelenveriParcala)
  for i = 0 to gelenveriAdeti
    Response.Write gelenveriParcala(i) &amp;"
"
  next

Split i kullanabileceğimiz oldukça fazla yer var. Örneğin selectbox (açılır menü)  ile veri göndereceğimiz zaman value sine sadece bir değer atayabiliriz. Mesala value=”deneme,dede,börtü,böcek” gibi.. Ben örneklerde , kullandım illa virgül kullanacaksınız diye bir şart yok. a karakteride olur / karakteride olur ne isterseniz onu kullanabilirsiniz. Başka bir yazıda görüşmek üzere hoşçakalın..

ASP İle Gün, Saat, Dakika, Saniye olarak Geri Sayma..

Varilacak zamana Gün, Saat, Dakika, Saniye cinsinden ne kadar zaman kaldigini bulabilirsiniz. Ekrana çiktisi 14 Gün 1789 S. 42 Dk. 46 Sn. Kaldi seklindedir.

tarihsaat = Cdate(”31.10.2008 12:12:12″) ‘ Varilacak zaman..
saniye=DateDiff(”s” ,now,tarihsaat)
kalansaniye=saniye Mod 60
dakika = Int(saniye/60)
kalandakika=dakika Mod 60
saat=Int(dakika/60)&lt;
kalansaat=saat  Mod 24
kalangun=Int(saat/24)
kalanzaman=”"&amp;kalangun&amp;” Gün “&amp;kalansaat&amp;” S. “&amp;kalandakika&amp;” Dk. “&amp;kalansaniye&amp;” Sn.”
Response.Write kalanzaman