2011-01-29 17 views
18

Tal vez no entendí el propósito de Sitemaps o tal vez no entendí cómo usar sitemaps. En este momento, mi mapa del sitio incluye todas las páginas creadas "dinámicamente", como las publicaciones del blog. ¿Pero cómo agrego páginas "estáticas" como mi índice y página de contacto? ¿O no deberían estas vistas estar en el mapa del sitio? Pensé que todas las páginas deberían estar en el mapa del sitio. Por ejemplo, ¿cómo iba a incluir dicha vistaDjango Sitemaps y vistas "normales"

(r'^contact/', include('contact-recaptcha.urls')), 

si no hay un conjunto de consultas?

Como referencia: http://docs.djangoproject.com/en/dev/ref/contrib/sitemaps/

Gracias de antemano!

Respuesta

40

Otra alternativa más simple:

from django.core.urlresolvers import reverse 
from django.contrib.sitemaps import Sitemap 


class ViewSitemap(Sitemap): 
    """Reverse 'static' views for XML sitemap.""" 

    def items(self): 
     # Return list of url names for views to include in sitemap 
     return ['homepage', 'news_article_list', 'contact_page'] 

    def location(self, item): 
     return reverse(item) 


sitemaps = {'views': ViewSitemap} 

He omitido deliberadamente lastmod y changefreq, ya que especificar datos incorrectos/asumidos es peor que no incluirlo.

+2

enfoque limpio, ejecutándose ahora en mi sitio;) gracias! – danihp

+1

¿Podría elaborar (agregar enlace) en la parte "especificar datos incorrectos es peor"? ¿Es compatible con alguna declaración de Google? – tutuDajuju

14

que tratar con él de esta manera:

Una clase abstracta para definir los atributos de página estática.

class AbstractSitemapClass(): 
    changefreq = 'daily' 
    url = None 
    def get_absolute_url(self): 
     return self.url 

La clase de mapa de sitio para páginas estáticas:

class StaticSitemap(Sitemap): 
    pages = { 
      'home':'/', #Add more static pages here like this 'example':'url_of_example', 
      'contact':'/contact/', 
      } 
    main_sitemaps = [] 
    for page in pages.keys(): 
     sitemap_class = AbstractSitemapClass() 
     sitemap_class.url = pages[page]   
     main_sitemaps.append(sitemap_class) 

    def items(self): 
     return self.main_sitemaps  
    lastmod = datetime.datetime(2010, 8, 31) #Enter the year,month, date you want in yout static page sitemap. 
    priority = 1 
    changefreq = "yearly" 

Utilice esta en el diccionario mapas de sitio para ser utilizado en urls.py:

sitemaps = { 
     'main':StaticSitemap, 
     'flatpages':MyFlatPageSitemap, 
     'model':PostSitemap, 
     } 
Cuestiones relacionadas