- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 Django + Wagtail 项目生成 sitemap.xml
。
我通过重写 get_sitemap_urls
方法实现了文章的 xml
生成。但问题是 Wagtail 站点地图生成器 无法“看到”博客标签网址(不会将它们添加到站点地图中)。
...
from taggit.models import TaggedItemBase
class BlogPageTag(TaggedItemBase):
content_object = ParentalKey(
'BlogInnerPage',
related_name='tagged_items',
on_delete=models.CASCADE,
)
class BlogInnerPage(Page):
icon = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=False,
on_delete=models.SET_NULL,
related_name='+'
)
...
post_date = models.DateTimeField(auto_now_add=True, null=True)
tags = ClusterTaggableManager(through=BlogPageTag, blank=False)
@property
def sidebar_tags(self):
blogs = BlogInnerPage.objects.live().all()
tags = {}
for post in blogs:
for tag in post.tags.all():
if tag.slug in tags:
tags[tag.slug]['count'] += 1
else:
tags[tag.slug] = {
'name': tag.name,
'count': 1
}
return sorted(tags.items())
...
def get_sitemap_urls(self):
return [
{
'location': self.full_url,
'lastmod': self.last_published_at,
'changefreq': 'weekly',
'priority': .8
}
]
我期望看到以下标签结果:
<url>
<loc>https://example.com/?tag=design</loc>
<lastmod>2019-01-31T12:24:01+00:00</lastmod>
<priority>0.80</priority>
</url>
以下是我的博客文章:
<url>
<loc>
http://example.com/trends-booming-todays-it-industry/
</loc>
<lastmod>2018-10-04</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
最佳答案
使用get_sitemap_urls
,您的方向是正确的。默认实现仅返回页面本身的条目,因为它不可能知道您可能过滤的所有查询参数。因此,您可以将这些条目添加到列表中。
假设您有 2 个页面类,即 HomePage
和 BlogInnerPage
,您需要保留 BlogInnerPage
实现。并更新HomePage
以返回其自己的站点地图条目并添加标签条目。
from urllib.parse import urlencode
from django.db.models import Max
from taggit.models import Tag
from wagtail.core.models import Page
class HomePage(Page):
# Note that the method signature should accept an optional request parameter as of Wagtail 2.2
def get_sitemap_urls(self, request=None):
urls = super().get_sitemap_urls(request)
# Get the page's URL, we will use that later.
base_url = self.get_full_url(request)
# Get the IDs of all the tags used on your `BlogPage`s.
tag_ids = BlogPageTag.objects.values_list('tag_id', flat=True).distinct()
# 1. Filter all the tags with the IDs fetched above.
# 2. Annotate the query with the latest `last_published_at` of the associated pages.
# Note the `home_` part in the string, this needs to be replaced by the name of the Django app your `BlogPageTag` model lives in.
# 3. Only fetch the slug and lastmod (we don't need the full object).
tags = Tag.objects\
.filter(pk__in=tag_ids)\
.annotate(lastmod=Max('home_blogpagetag_items__content_object__last_published_at'))\
.values('slug', 'lastmod')
# Add sitemap entries for each tag.
for tag in tags:
urls.append({
'location': '{}?{}'.format(base_url, urlencode({'tag': tag.slug})),
'lastmod': tag.lastmod,
})
# Return the results.
return urls
关于django - 如何将标签网址添加到 sitemap.xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54644965/
我有一个网站,该网站的目录包含100多个html文件。 我希望搜寻器搜寻该目录下的所有html文件。 我已经在robots.txt中添加了以下句子: Allow /DirName/*.html$ 有什
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 24 天前关闭。 Improve this
我已在 Google Sitemap 上提交了站点地图。当我检查“已提交”和“已索引”时,它显示出很大的差异。 然后我检查了一个文件中的错误。如下。 General HTTP error: 404 n
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我正在开发一个网络应用程序。我想使用站点地图文件将站点提交给网络爬虫。 有很多方法可以做到这一点 使用站点地图.xml 使用 sitemap.html 使用 urllist.txt 使用压缩站点地图文
我可以把两个都放上吗?和 我的索引 ?我有一个站点 example.com,我的主要站点地图存储在这里 example.com/sitemap.xml 并包含以下内容:
我可以像这样在我的 robots.txt 文件和 sitemap.xml 中使用非拉丁字符吗? robots.txt User-agent: * Disallow: /somefolder/ Site
下面是我当前的 .htaccess 文件。我想添加另一个条件/规则,如果发出对 sitemap.xml 的请求,则改为提供 sitemap.php。请帮助:) Options +FollowSymLi
在 SEO 中 html 站点地图和 xml 站点地图有什么区别? 最佳答案 XML 站点地图是搜索引擎用来抓取您的站点的一种工具。理论上并不总是需要它,但 Google 建议您始终拥有一个。 HTM
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 5 年前。
作为 SEO 的一部分,我需要向 Google 提交网站的站点地图。但谷歌拒绝了它,说它是一个 HTML 文件,它需要一个 XML 文件。如何将 HTML 转换为 XML?我在 Google 网站管理
设置: 我正在使用 ASP.NET MVC 4 和 mvcSiteMapProvider 来管理我的菜单。 我有一个自定义菜单生成器,用于评估节点是否位于当前分支上(即,如果 SiteMap.Curr
我遇到了这个错误 The prefix '' cannot be redefined from '' to 'http://www.sitemaps.org/schemas/sitemap/0.9'
我的 Google 站点地图在 元素中没有 xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"时可以很好地通过 XSLT 呈现,但是当包含时,我的
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 1年前关闭。 Improve this qu
如果一个不断生成新页面的高度动态网站使用sitemap ?如果是这样,像 stackoverflow.com 这样的网站如何重新生成站点地图?如果每次有人添加问题时都不断地重新生成站点地图,那么似乎会
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我有一些包含特殊字符的 URL。例如: http://www.example.com/bléèàû.html 如果您在浏览器中键入此 URL,我的 Web 服务器将显示正确的页面(它可以处理特殊字符)
我有一个网站,有人要求我为其创建层次结构图。这真是一团糟,我懒得生成一个。 是否有可以完成这项工作的快速在线网站?或者,如果有人对如何快速完成有任何想法。一个要求是它需要采用分层样式。 最佳答案 Ap
如果一个不断生成新页面的高度动态网站使用sitemap ?如果是这样,像 stackoverflow.com 这样的网站如何重新生成站点地图?如果每次有人添加问题时都不断地重新生成站点地图,那么似乎会
我是一名优秀的程序员,十分优秀!