Dalam dunia blogging, sitemap adalah hal yang sangat krusial dan penting untuk strategi marketing, terutama dalam hal SEO (Search Engine Optimization).
Lalu apa itu sitemap?
Sitemap adalah peta situs yang digunakan oleh google bot bernama Google Spider untuk mengindex sebuah halaman situs di internet.
Jika kita seorang blogger, tentunya kita sering mendengar platform dari google yang bernama Google Search Console.
Dari sanalah kita melakukan submit sitemap yang nantikan akan digunakan pengindekan oleh Google Spider.
Django sendiri memiliki default package yang disebut The Sitemap Framework.
Yang pertama adalah, pastikan sitemaps framework telah terinstall di INSTALLED_APPS
project kita. Seperti contoh di bawah ini:
INSTALLED_APPS = [
'django.contrib.sites',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# letakkan the sitemap framework pada installed apps
'django.contrib.sitemaps',
'whitenoise.runserver_nostatic',
]
Langkah selanjutnya adalah membuat file bernama sitemaps.py
di dalam direktori apapun yang kita inginkan. Pada contoh ini kita akan menggunakan direktori project kita yang bernama core
.
.env
- blog
- views.py
- models.py
- forms.py
- core
- settings.py
- asgi.py
- urls.py
- sitemaps.py # nama file yang akan kita kerjakan.
Di dalam file sitemaps.py
tersebut, kita akan mengimport membuat class
yang nantinya akan melakukan generate sitemap otomatis saat kita melakukan update konten/artikel pada blog kita.
"""sitemaps.py"""
# sitemap framework bawaan dari django
from django.contrib.sitemaps import Sitemap
# nama models yang akan kita index
from blog.models import Blog, Category, Tag
class BlogSiteMap(Sitemap):
changefreq = 'daily'
priority = 0.8
def items(self):
x = Blog.objects.filter(action='Publish')
return x
def location(self, obj):
return '/' + str(obj.category.category_url) + '/' + str(obj.url) + '/'
class CategorySiteMap(Sitemap):
changefreq = 'daily'
priority = 0.8
def items(self):
x = Category.objects.all()
return x
def location(self, obj):
return '/category/' + str(obj.category_url)
class TagSiteMap(Sitemap):
changefreq = 'daily'
priority = 0.8
def items(self):
x = Tag.objects.all()
return x
def location(self, obj):
return '/tag/' + str(obj.tag_url)
Maksud dari kode di atas adalah, kita memanggil models
yang ingin kita index dari direktori blog
(nama app kita).
kode di atas akan otomatis melakukan generate sebuah file baru yang bernama /sitemap.xml
.
Untuk selanjutnya kita akan menambahkan url yang nantinya akan menghandle request dari sitemap itu sendiri.
tambahkan baris kode ini pada file core/urls.py
"""urls.py"""
# the sitemap framework
from django.contrib.sitemaps.views import sitemap
# sitemap yang telah kita buat tadi (sitemaps.py)
from blog.sitemaps import BlogSiteMap, CategorySiteMap, TagSiteMap
# mendefinisikan sitemap
sitemaps = {
'article': BlogSiteMap,
'category': CategorySiteMap,
'tag': TagSiteMap
}
urlpatterns = [
# url yang akan meng-handle request sitemaps.xml
path('sitemaps.xml', sitemap, {'sitemaps': sitemaps}, name='my_sitemap'),
...
path('', include('blog.urls')),
...
]
We done!
Kita telah berhasil membuat sitemap untuk blog django kita. Cukup simple bukan?
Selanjutnya, apabila kita arahkan url ke domain.com/sitemaps.xml
, maka di sana kita akan melihat sitemap yang baru saja kita buat. Selanjutkan bisa kita gunakan untuk submit sitemap pada Google Search Console agar blog kita mudah terindex oleh Google tanpa harus melakukan submit url satu per-satu.
Pro Tip
Ping Google setelah sitemap berhasil python3
pada terminal.
Setelah kita berhasil melakukan submit sitemap pada Google Search Console, kita dapat memberitahu Google Spider jika kita melakukan perubahan pada konten dengan cara ping.
$ ./manage.py ping_google https://www.syarat.id/syarat_sitemap.xml
Tunggu beberapa waktu dan viola, konten kita akan lebih mudah terindex oleh google secara terus menerus.
Teman-teman juga bisa mengunjungi project open source yang kemarin sempat penulis develop untuk mengisi waktu senggang. Bisa teman-teman gunakan untuk pembelajaran lebih lanjut tentang Django.