Go dilinde uygulanan SEO dostu Slug üreteci

0:00

Web geliştirmedeSlug, URL’deki kullanıcı dostu bir tanımlayıcıdır ve genellikle bir makalenin, kategorinin veya sayfanın yolunu belirtmek için kullanılır, örneğin:

https://example.com/blog/go-slug-generator

Go dili web projesinde, Slug üretecinin aşağıdaki gereksinimleri karşılaması gerekir:

  1. Çince ve İngilizce desteği : Çince pinyin’e dönüştürülür ve İngilizce değişmeden kalır.
  2. Özel karakterleri kaldırın : yalnızca harfleri, rakamları ve -(tireleri) tutun.
  3. Benzersizliği sağlayın : Aynı slug veritabanında zaten mevcutsa, artımlı bir son ek (örneğin example, example-1) otomatik olarak eklenir.

Bu makale sizi bu fonksiyona adım adım ulaştıracak! 🔥


1. Slug Generator’ın Uygulanması

(1) Kod örneği

package utils

import (
	"dagicms-server/global"
	"fmt"
	"github.com/mozillazg/go-pinyin"
	"regexp"
	"strings"
)


func GenerateSlug(title string, tableName string, id uint) string {

	baseSlug := ConvertToSlug(title)

	reg := regexp.MustCompile(`[^a-zA-Z0-9\s-]`)
	baseSlug = reg.ReplaceAllString(baseSlug, "")

	baseSlug = strings.ReplaceAll(baseSlug, " ", "-")

	baseSlug = cleanHyphens(baseSlug)

	if baseSlug == "" {
		baseSlug = "untitled"
	}

	finalSlug := baseSlug
	counter := 1
	for {
		var exists bool
		query := fmt.Sprintf("SELECT EXISTS(SELECT 1 FROM %s WHERE slug = ? AND id != ?)", tableName)
		global.GVA_DB.Raw(query, finalSlug, id).Scan(&exists)

		if !exists {
			break
		}

		finalSlug = fmt.Sprintf("%s-%d", baseSlug, counter)
		counter++
	}

	return finalSlug
}

2. Kod analizi

(1) SEO dostu olduğundan emin olmak için başlığı işleyin

baseSlug := ConvertToSlug(title)

(2) Özel karakterleri filtrele

reg := regexp.MustCompile(`[^a-zA-Z0-9\s-]`)
baseSlug = reg.ReplaceAllString(baseSlug, "")
  • Bu düzenli ifade yalnızca şunların korunmasını sağlar: büyük ve küçük harfler, sayılar, boşluklar ve tireler- .

(3) URL uyumluluğunu sağlamak için işlem alanları

baseSlug = strings.ReplaceAll(baseSlug, " ", "-")
  • Bu gibi URL kodlama sorunlarından -kaçınmak için tüm boşlukları ile değiştirin .%20

(4) --Tire sorunlarından kaçının

baseSlug = cleanHyphens(baseSlug)
  • --Bu fonksiyon örneğin "hello--world"oluşacak . durumunun oluşmamasını sağlar "hello-world".

(5) Benzersizliğin sağlanması için veritabanı kontrolü

query := fmt.Sprintf("SELECT EXISTS(SELECT 1 FROM %s WHERE slug = ? AND id != ?)", tableName)
global.GVA_DB.Raw(query, finalSlug, id).Scan(&exists)

if exists {
    finalSlug = fmt.Sprintf("%s-%d", baseSlug, counter)
}

Aynı Slug veritabanında zaten mevcutsa, benzersizliği garantilemek için otomatik olarak sayısal bir son ek eklenir:

example → example-1 → example-2

3. Kod Örnekleri

Bu Slug üretecini Go projenizde kullanın :

package main

import (
	"fmt"
	"your_project/utils"
)

func main() {
	title1 := "Go dil programlama"
	title2 := "Hello Global"
	title3 := "Golang URL üreten"

	slug1 := utils.GenerateSlug(title1, "articles", 1)
	slug2 := utils.GenerateSlug(title2, "articles", 2)
	slug3 := utils.GenerateSlug(title3, "articles", 3)

	fmt.Println(slug1) // DIŞ: go-yu-yan-bian-cheng
	fmt.Println(slug2) // DIŞ: hello-shi-jie
	fmt.Println(slug3) // DIŞ: golang-url-sheng-cheng
}

4. Sonuç

✅Türkçe ve İngilizce desteği : Çince pinyin’e dönüştürülür ve İngilizce olduğu gibi kalır
✅Özel karakterleri kaldırın : yalnızca harfleri, sayıları ve -
✅Sorunları önleyin :-- slug standardizasyonunu sağlayın
✅Benzersizlik kontrolü : veritabanı çakışmalarını önleyin

🚀 Bununla birlikte, SEO dostu ve Django/Go web projelerine kolayca entegre edilebilen bir slug üreteci uyguladık !

👉Faydalı bulduysanız lütfen beğenin👍 veya iyileştirme önerilerinizi paylaşın! 🚀

GO

1. Gün. Go Dilinde Ustalaşma Yolu: Dilimler ve Verimli Kullanım İlkeleri

2025-3-18 23:16:51

Yapay zeka

ReasonGraph - LLM'lerin akıl yürütme sürecini görselleştirmek ve analiz etmek için açık kaynaklı yapay zeka aracı

2025-3-25 22:02:45

0 yanıt AMakale Yazarı MÜyeler
    Henüz bir tartışma yok, ne düşündüğünüzü bize bildirin
Kişisel Merkez
Sepet
Kuponlar
Bugünün Girişi
Yeni özel mesaj Özel mesaj listesi
aramak