用于社交媒体元数据的辅助工具。
项目描述
此插件为您页面模型添加自定义属性,然后允许您使用包含的模板标签输出元属性标签。这些标签有助于搜索引擎优化并为社交媒体创建可分享的链接,主要是 Facebook 和 Twitter。
兼容性
Wagtail-metadata 与 Wagtail v5.0 及以上版本兼容。有关与较旧版本的 Wagtail 的兼容性,请参阅以前的版本。
安装
首先,使用 pip 进行安装
pip install wagtail-metadata
然后,将 wagtailmetadata 添加到项目的 INSTALLED_APPS
INSTALLED_APPS = [
'home',
'search',
# etc...
'wagtail.contrib.settings',
'wagtail.contrib.modeladmin',
# etc...
# Add the following:
'wagtailmetadata',
]
使用
页面应继承自 wagtailmetadata.models.MetadataPageMixin。这将在Wagtail界面为该页面类型提供一个 search_image 字段。页面的描述将来自 search_description 页面。页面的元数据将基于页面详情构建。
from wagtail.core.models import Page
from wagtailmetadata.models import MetadataPageMixin
class ContentPage(MetadataPageMixin, Page):
pass
如果您想与非页面模型一起使用此功能,或者想为字段使用不同的实现,可以继承自 wagtailmetadata.models.MetadataMixin。您需要实现以下方法
from wagtailmetadata.models import MetadataMixin
class CustomObject(MetadataMixin, object):
def get_meta_title(self):
"""The title of this object"""
return "My custom object"
def get_meta_url(self):
"""The URL of this object, including protocol and domain"""
return "http://example.com/my-custom-object/"
def get_meta_description(self):
"""
A short text description of this object.
This should be plain text, not HTML.
"""
return "This thing is really cool, you should totally check it out"
def get_meta_image_url(self, request):
"""
Return a url for an image to use, see the MetadataPageMixin if using a Wagtail image
"""
return 'https://neonjungle.studio/share.png'
def get_meta_twitter_card_type(self):
"""
What kind of Twitter card to show this as.
Defaults to ``summary_large_photo`` if there is a meta image,
or ``summary`` if there is no image. Optional.
"""
return "summary_large_photo"
如果您的自定义对象使用Wagtail图像,您可能希望使用中间混入类 wagtailmetadata.models.WagtailImageMetadataMixin,这样您就可以使用图像相关元数据的关系
from django.db import models
from wagtailmetadata.models import WagtailImageMetadataMixin
class CustomObject(WagtailImageMetadataMixin, object):
share_image = models.ForeignKey('wagtailimages.Image', ondelete=models.SET_NULL, null=True, related_name='+')
def get_meta_image(self):
return self.share_image
显示
Django
要在模板中使用此功能,首先加载模板标签库,然后在 <head> 中插入元数据,将 {% meta_tags %} 放入其中
{% load wagtailmetadata_tags %}
{% meta_tags %}
默认情况下,这将查找上下文中的 self 对象以提取元数据。如果需要,您可以指定要使用的不同对象
{% load wagtailmetadata_tags %}
{% meta_tags my_custom_object %}
Jinja2
将 wagtailmetadata.jinja2tags.WagtailMetadataExtension 添加到 settings.py 中的模板扩展
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'OPTIONS': {
'extensions': [
'wagtailmetadata.jinja2tags.WagtailMetadataExtension'
],
},
}
]
通过在 <head> 中插入 {{ meta_tags() }} 来插入元数据
{{ meta_tags() }}
默认情况下,这将查找上下文中的 page 对象以提取元数据。如果需要,您可以指定要使用的不同对象
{{ meta_tags(my_custom_object) }}
故障排除
上下文中缺少请求 'meta_tags'
尝试渲染 meta_tags 标签的模板在上下文中没有 request 对象。
'meta_tags' 标签缺少模型或对象
没有将模型传递给模板标签,或当前上下文中找不到 self。
项目详情
哈希值 for wagtail_metadata-5.0.0-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fcc2bbb71e83b353ceef05d69a4cde3f2fbe645c9e5035e46f7829fc234a6405 |
|
MD5 | 7e6492e8dd64661bbf2b2aad173f6283 |
|
BLAKE2b-256 | 6a5c0326104a7606c076a99eb59cb0fb200e22fc54b449a71ed719b92e098c07 |