Na początek zajmiemy się polem "
wykop". Otóż gdy nie podamy odnośnika (wartości) dla tego pola to przy newsie ma pojawić się odnośnik umożliwiający zgłoszenie wiadomości do wykopu. Gdy odnośnik jest podany to wyświetlamy go ze stosownym komunikatem. W szablonie
show.html (podobnie w innych) wystarczy dać:
{% if news.wykop %}
<a href="{{ news.wykop }}">Głosuj na Wykopie</a>
{% else %}
<a href="http://www.wykop.pl/dodaj?url=http://www.MOJASTRONA.pl/news/{{ news.slug }}/" target="_blank">Dodaj na Wykop.pl</a>
{% endif %}
I gotowe :) Oczywiście "MOJASTRONA" zastępujemy poprawnym odnośnikiem do naszej strony
Django oferuje własny system do generowania kanałów RSS i map Sitemap. Zaczniemy od tego pierwszego tworząc plik
/blog/news/feeds.py o kodzie:
from blog.news.models import *
from django.contrib.syndication.feeds import Feed
class LatestNews(Feed):
title = 'Wiadomości z MOJASTRONA.pl'
link = 'MOJASTRONA.pl'
description = 'Wiadomości z MOJASTRONA.pl'
def items(self):
return News.objects.order_by('-id')[:15]
Standardowy kod bazujący na systemie kanałów RSS. Dodatkowo w
models.py w modelu "News" musimy dodać metodę określającą odnośnik do szczegółowego widoku wiadomości (używany do generowania kanału):
def get_absolute_url(self):
return '/news/' + self.slug + '/'
Następnie edytujemy
urls.py dodajemy:
from blog.news.feeds import *
feeds = {
'news': LatestNews,
}
A do reguł mapowania URLi:
(r'^rss/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}),
Teraz pod
/rss/news/ znajdziemy nasz kanał. Klucz słownika "feeds", czyli
news używany jest do określania konkretnego kanału. Obecnie nasz kanał nie wyświetla danych zbyt poprawnie (brak treści) - musimy podać jakie pola mają być wyświetlane. W katalogu
/templates tworzymy katalog
feeds, a w nim plik
news_title.html o zawartości:
{{ obj.title }}
Oraz
news_description.html o kodzie:
{{ obj.text }}
I gotowe :) Nazwy szablonów w katalogu
feeds mają "składnię" - NAZWA-KANAŁU_NAZWA-POLA.html, a rola szablonów to określenie jakie pola z modelu mają być wyświetlane w danym polu kanału RSS.
By stworzyć mapę Sitemap używaną m.in. przez wyszukiwarkę Google do sprawniejszego indeksowania serwisów wystarczy... w pliku
settings.py do
INSTALLED_APPS dodać:
'django.contrib.sitemaps'
Do
news/feeds.py dodać:
from django.contrib.sitemaps import Sitemap
class NewsMap(Sitemap):
def items( self ):
return News.objects.all()
def lastmod( self, obj ):
return obj.date
def changefreq(self, obj):
return 'monthly'
Do
urls.py dodajemy:
sitemaps = {
'news': NewsMap,
}
A do reguł mapowania:
(r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps})
I gotowe. Pod /sitemap.xml czeka gotowa mapa. Odnośnik podajemy na stronie Google
Narzędzia dla Webmasterów. Otrzymamy system "statystyk" indeksowania naszej strony. Po dodaniu mapy będziemy musieli potwierdzić że nasza strona należy do nas - do sekcji HEAD strony będziemy musieli dodać odpowiedniego taga HTML. Gdy będziemy mieli to za sobą wszystko będzie działać zgodnie z planem. Mapa będzie regularnie sprawdzana przez wyszukiwarkę.
Pobierz źródła
Po rozpakowaniu edytuj ścieżkę w
urls.py i
settings.py a następnie stwórz tabele i superadmina.
- Dodane: 14.07.2008 przez riklaunim