2010-07-22 40 views
10

Temiz URL'ler üretmek için sümüklü böcek kullanan kişilerden haberdar oldum. Nasıl çalıştığını bilmiyorum. Şu ı url en nasıl yapılırCodeigniter içinde slugs kullanma

www.site.com/index.php/blog/view/once-upon-a-time 

gibi URL'ler elde etmek mümkün olduğu bir sümüklü böcek alanını koruyarak i Anladığım kadarıyla bu

www.site.com/index.php/blog/view/7 

gibi üreten bir CodeIgniter sitesi var? Özellikle codeigniter referansı ile mi?

cevap

42

Sadece bu gibi, o sümüklü böcek ile bir yayın daha, slug adlı bir sütunda, benim veritabanı tablosundaki sümüklü böcek saklamak:

public function view($slug) 
{ 
    $query = $this->db->get_where('posts', array('slug' => $slug), 1); 

    // Fetch the post row, display the post view, etc... 
} 

Ayrıca kolayca sonrası başlığından bir kurşunu türetmek için,

// Use dashes to separate words; 
// third param is true to change all letters to lowercase 
$slug = url_title($title, 'dash', true); 

küçük bir ikramiye: belirsiz değil yani her sonrası benzersiz bir sümüklü böcek bulunmasını sağlar slug sütuna benzersiz bir anahtar kısıtlamasını uygulamak isteyebilirler sonrası CodeIgniter sho sadece URL yardımcısı url_title() kullanmak uld bak. Tabii ki, muhtemelen mesajlarınızı ilk etapta benzersiz başlıklar halinde vermelisiniz, ancak bunu yerine koyarak , kuralı zorlar ve uygulamanızın hata yapmasını engeller.

+2

tam yoludur Bunu yapardım, ancak bu tür URL'lerle performans konusunda biraz endişeliyim. Stackoverflow:/questions/{integer}/{slug} adresindeki URL'ler gibi bir URL’niz olduğunu varsayalım. Bu, URL’nin ilk türüyle, yalnızca kullanabildiğiniz için,/questions/{slug} biçiminden biraz daha verimli değil. Daha hızlı arama için veritabanındaki birincil anahtar. Diğer URL ile, kesinlikle yavaş olan bir dize karşılaştırması yapmak zorunda kalacaksınız. – EsTeGe

+0

@EsTeGe: Doğru. Performans bir endişe ise, sorgulama için hızlı indeksleri/anahtarları kullanmaya devam etmek isteyeceksiniz. Ancak kritik değilse veya veritabanındaki yükü hafifletmek için bazı makul önbelleğe alma işlemlerine sahipseniz, bunun yerine sümüklü böceklerle gidebilirsiniz. – BoltClock

+0

Oh, kod yazıcının yerleşik önbelleğe alma özelliğini düşünmedim. Bu, URL’yi temel alır. Bu, endişelenmeniz gereken bir sorundur. – EsTeGe

0

, Metin Yardımcıdan, bu kullanarak aksanlı karakterleri kaldırın:

$string = 'áéíóú ÁÉÍÓÚ';  
    $slug = url_title(convert_accented_characters($string), 'dash', true)); 
    echo $slug; //aeiou-AEIOU