eray aydoğdu

jQuery and ASP.NET MVC fanatic.

WordPress Son Yazıları Asp.NET MVC ‘de Göstermek

Bir önceki yazımızda Asp.net MVC ile WordPress i nasıl birlikte çalıştırmayı öğrenmiştik. Bu yazımızda da WordPress e eklenen son yazıları Asp.net MVC uygulamasına nasıl çekeceğimizi göreceğiz. Aslında bu birlikte çalışan değil tüm wordpress sitelerden nasıl çekeceğimizi gösteren bir örnek olacak. Çünkü Son Yazılar kısmını ilgili wordpress in Databaseinden değil RSS ‘inden parse ederek çekeceğiz. Dolayısıyla altyapısı wordpress ve RSS yayını yapan her siteden çekebiliriz. Çok fazla uzatmadan kodlara geçelim.

Projemize;

using System.Xml;
using System.ServiceModel.Syndication;

namespacelerini çağıralım.

BlogBox.ascx adında bir ViewUserController oluşturalım ve ardından aşağıdaki Action kodlarını yazalım.

public ViewResult BlogBox()
{
var reader = XmlReader.Create(“http://erayaydogdu.com/feed“);
var feed = SyndicationFeed.Load<SyndicationFeed>(reader);
return View(feed);
}

XML i oluşturup SyndicationFeed.Load() methoduyla feed değişkenine atayıp feed i View in Modeline gönderiyoruz.

Şimdi View i oluşturalım.

<%@ Control Language=”C#” Inherits=”System.Web.Mvc.ViewUserControl<System.ServiceModel.Syndication.SyndicationFeed>” %>
<span>Blog’tan</span>
<ul>
<%foreach (var item in Model.Items.Take(5))
{%>
<li>
<a href=”<%=item.Links.First().Uri.AbsoluteUri%>><%=item.Title.Text %></a>
</li>
<%} %>
</ul>

View de ilk 5 Tanesini <li> lere yazdırdık. Property lerini inceleyerek daha detaylı veriler elde edebiliriz. Biraz araştırarak kendine göre geliştirebilirsiniz.

Asp.Net MVC ile WordPress Birlikte Çalıştırma

Asp.net mvc uygulamasının içerisinde wordpress blogunu entegre ederek çalıştırabiliriz. Dikkat etmemiz gereken bir kaç detay dışında son dönemlerde microsoft’un php’ye gösterdiği ilgilinin artmasıyla windows server lar üzerinde bunu yapmak oldukça kolay.

Aslında Asp.Net ve PHP iis6 ve iis7 üzerinde de birlikte çalışabiliyor. Ben iis6 üzerinde yaşadığım sorunu anlatarak iis7 de neler yapmamız gerektiğini ve en verimli çalışma performansını iis7 de iken aldığım için sizede iis7 üzerinde yayınlamınızı şiddetle öneririm.

IIS6 da php çalıştırabiliyoruz ancak bildiğimiz gibi windows server larda .htaccess dosyası yok ve ihtiyacımız olan google dostu url ler üretebilmemiz için birkaç ayar yapmamız gerekiyor. Dolayısıyla bu ayarları yapamadığımız için iis6 da yayın yapan wordpress uygulamasının url’sinde geçen /index.php den bir türlü kurtulamıyoruz. WordPress yapısını çok seven google için olsun veya çok esnek olan wordpress yapısında sınırlandığımız için ben hiç hoşlanmadım. Performans açısından da bazı sıkıntılar çıkartabiliyor. O yüzden iis6’da macera aramaya gerek görmeyelim derim.

Şimdi bu iki projeyi nasıl birleştireceğimize gelelim.

Hali hazırda bulunan mvc uygulamasının içerisinde blog diye bir klasör açalım.(menü’ye Blog diye bir kategori ekleyeceğimizi varsayıyorum. Eğer farklı bir isim vermek isterseniz elbette yapabilirisiniz.)

Gördüğünüz gibi normal projemin içerisinde blog adında bir klasör açtım ve içerisine wordpress dosyalarımızı attık. Burada WordPress in kurulumunu anlatmayacağım eğer istek olursa onuda farklı bir yazıda anlatabilirim. Ayarlarını yapıldığını varsayalım şimdilik ve bir sonraki adıma geçelim.

Bizim asp.net mvc uygulamasını çalıştırdığımızda içerisinde wordpress uygulamasının da çalışmasını istediğimizden oluşturduğumuz klasör ile aynı isimde menümüze bir bir kategori ekliyoruz.

Oluşturduğumuz menüye blog adında bir kategori ekledik ancak url’sini “/blog” olarak vermeliyiz.

Daha sonra Global.asax dosyasını açıyoruz ve RegisterRoutes methodunun en başına aşağıdaki kodları ekliyoruz.

routes.IgnoreRoute(“blog”);
routes.IgnoreRoute(“blog/*”);

Bu kodlar MVC projemize gelen “blog” isteğini contoller olarak algılamasın diye reddettiğimiz istekler.Yani siteadi.com/blog diye bir istek geldiğinde MVC yapısı gereği bunu ilgili route’a yönlendirmesi yerine bunu yoksaymasını belirtiyoruz. Böylece blog klasörünü MVC RouteCollection dan çıkardığımız için blog klsöründeki Worpress PHP kodları çalışmaya başlıyor. Denemek için blog klasörüne herhangi bir html dosyası atabilirsiniz. İçerisinde Merhaba yazan bir index.html atıp test edebilirsiniz.

Bu işlemler sonucunda Her iki dilde geliştirilmiş olan projeleri aynı proje içerinde entegre olarak çalıştırabilirsiniz. Bir sonraki yazımda Asp.Net MVC uygulamasında bir wordpress sitesinin en son post larını rss reader ile nasıl çekebileceğimize değineceğiz.