A tool to assist with metadata for social media.
Project description
===============
wagtail-metadata
===============
A tool to assist with metadata for social media and search engines.
Compatibility
==========
Wagtail-metadata works with Wagtail v1.12 and upwards.
Installing
==========
First, install using pip::
pip install wagtail-metadata
Then add ``wagtailmetadata`` to your project's ``INSTALLED_APPS``:
.. code-block:: python
INSTALLED_APPS = [
'home',
'search',
# etc...
'wagtail.contrib.settings',
'wagtail.contrib.modeladmin',
# etc...
# Add the following:
'wagtailmetadata',
]
Using
=====
Pages should inherit from ``wagtailmetadata.models.MetadataPageMixin``.
This provides a ``search_image`` field in the Wagtail interface for that page type.
The description for the page will be pulled from the ``search_description`` page.
Metadata for the page will then be built from the page details.
.. code-block:: python
from wagtail.wagtailcore.models import Page
from wagtailmetadata.models import MetadataPageMixin
class ContentPage(MetadataPageMixin, Page):
pass
.. note::
Ensure you put ``MetadataPageMixin`` before ``Page``.
If you want to use this with a non-page model,
or want to use a different implementation for the fields,
you can inherit from ``wagtailmetadata.models.MetadataMixin``.
You will need to implement the following methods:
.. code-block:: python
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(self):
"""A relevant Wagtail Image to show. Optional."""
return self.some_image
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"
Display
=======
Django
------
To use this in a template, first load the template tag library,
and then insert the metadata by placing ``{% meta_tags %}`` into the ``<head>``:
.. code-block:: html+django
{% load wagtailmetadata_tags %}
{% meta_tags %}
By default, this will look for a ``self`` object in the context to pull the metadata from.
You can specify a different object to use if you need to:
.. code-block:: html+django
{% load wagtailmetadata_tags %}
{% meta_tags my_custom_object %}
Jinja2
------
Add ``wagtailmetadata.jinja2tags.WagtailMetadataExtension`` to the template extensions
in your ``settings.py``:
.. code-block:: python
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'OPTIONS': {
'extensions': [
'wagtailmetadata.jinja2tags.WagtailMetadataExtension'
],
},
}
]
Insert the metadata by placing ``{{ meta_tags() }}`` into the ``<head>``:
.. code-block:: html
{{ meta_tags() }}
By default, this will look for a ``page`` object in the context to pull the metadata from.
You can specify a different object to use if you need to:
.. code-block:: html
{{ meta_tags(my_custom_object) }}
Adding extra tags
=================
If you need to add extra meta tags, to add the twitter:site tag for example,
you can extend the Wagtail Metadata template.
First, create any models that you might need to hold the extra data:
.. code-block:: python
from wagtail.contrib.settings.models import BaseSetting, register_setting
@register_setting
class TwitterName(BaseSetting):
handle = models.CharField(max_length=20)
You could also add extra fields to a page model and output them as meta tags:
.. code-block:: python
class MyPage(MetadataPageMixin, Page):
body = RichTextField()
author_twitter_handle = models.CharField(max_length=20)
Then, override the ``wagtailmetadata/parts/tags.html`` template
and add your tags to the relevant blocks:
.. code-block:: html
{% extends "wagtailmetadata/parts/tags.html" %}
{% block twitter %}
{{ block.super }}
<meta name="twitter:site" content="@{{ settings.myapp.TwitterName.twitter_handle }}" />
<meta name="twitter:creator" content="@{{ model.author_twitter_handle }}" />
{% endblock %}
The ``wagtailmetadata/parts/tags.html`` template defines the following blocks
you can override or extend:
``{% block tags %}``
This block surrounds the whole template.
You can override this block to append extra tags before or after the standard tags.
``{% block twitter %}``
This block surrounds the Twitter card tags.
``{% block opengraph %}``
This block surrounds the Open Graph tags
``{% block meta %}``
This block surrounds the standard meta tags defined in HTML.
wagtail-metadata
===============
A tool to assist with metadata for social media and search engines.
Compatibility
==========
Wagtail-metadata works with Wagtail v1.12 and upwards.
Installing
==========
First, install using pip::
pip install wagtail-metadata
Then add ``wagtailmetadata`` to your project's ``INSTALLED_APPS``:
.. code-block:: python
INSTALLED_APPS = [
'home',
'search',
# etc...
'wagtail.contrib.settings',
'wagtail.contrib.modeladmin',
# etc...
# Add the following:
'wagtailmetadata',
]
Using
=====
Pages should inherit from ``wagtailmetadata.models.MetadataPageMixin``.
This provides a ``search_image`` field in the Wagtail interface for that page type.
The description for the page will be pulled from the ``search_description`` page.
Metadata for the page will then be built from the page details.
.. code-block:: python
from wagtail.wagtailcore.models import Page
from wagtailmetadata.models import MetadataPageMixin
class ContentPage(MetadataPageMixin, Page):
pass
.. note::
Ensure you put ``MetadataPageMixin`` before ``Page``.
If you want to use this with a non-page model,
or want to use a different implementation for the fields,
you can inherit from ``wagtailmetadata.models.MetadataMixin``.
You will need to implement the following methods:
.. code-block:: python
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(self):
"""A relevant Wagtail Image to show. Optional."""
return self.some_image
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"
Display
=======
Django
------
To use this in a template, first load the template tag library,
and then insert the metadata by placing ``{% meta_tags %}`` into the ``<head>``:
.. code-block:: html+django
{% load wagtailmetadata_tags %}
{% meta_tags %}
By default, this will look for a ``self`` object in the context to pull the metadata from.
You can specify a different object to use if you need to:
.. code-block:: html+django
{% load wagtailmetadata_tags %}
{% meta_tags my_custom_object %}
Jinja2
------
Add ``wagtailmetadata.jinja2tags.WagtailMetadataExtension`` to the template extensions
in your ``settings.py``:
.. code-block:: python
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'OPTIONS': {
'extensions': [
'wagtailmetadata.jinja2tags.WagtailMetadataExtension'
],
},
}
]
Insert the metadata by placing ``{{ meta_tags() }}`` into the ``<head>``:
.. code-block:: html
{{ meta_tags() }}
By default, this will look for a ``page`` object in the context to pull the metadata from.
You can specify a different object to use if you need to:
.. code-block:: html
{{ meta_tags(my_custom_object) }}
Adding extra tags
=================
If you need to add extra meta tags, to add the twitter:site tag for example,
you can extend the Wagtail Metadata template.
First, create any models that you might need to hold the extra data:
.. code-block:: python
from wagtail.contrib.settings.models import BaseSetting, register_setting
@register_setting
class TwitterName(BaseSetting):
handle = models.CharField(max_length=20)
You could also add extra fields to a page model and output them as meta tags:
.. code-block:: python
class MyPage(MetadataPageMixin, Page):
body = RichTextField()
author_twitter_handle = models.CharField(max_length=20)
Then, override the ``wagtailmetadata/parts/tags.html`` template
and add your tags to the relevant blocks:
.. code-block:: html
{% extends "wagtailmetadata/parts/tags.html" %}
{% block twitter %}
{{ block.super }}
<meta name="twitter:site" content="@{{ settings.myapp.TwitterName.twitter_handle }}" />
<meta name="twitter:creator" content="@{{ model.author_twitter_handle }}" />
{% endblock %}
The ``wagtailmetadata/parts/tags.html`` template defines the following blocks
you can override or extend:
``{% block tags %}``
This block surrounds the whole template.
You can override this block to append extra tags before or after the standard tags.
``{% block twitter %}``
This block surrounds the Twitter card tags.
``{% block opengraph %}``
This block surrounds the Open Graph tags
``{% block meta %}``
This block surrounds the standard meta tags defined in HTML.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file wagtail-metadata-0.4.0.tar.gz
.
File metadata
- Download URL: wagtail-metadata-0.4.0.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a34a82f8a2a65be33bb54c9d601d62e01fd587bc50a025fe6f564ea99da40f37 |
|
MD5 | bd4b7144c071a676fa5697da2e5e4e49 |
|
BLAKE2b-256 | 5c7b56137debf64957808933ac0d482d958cceb6ae08390b5152d6033cedbc90 |
File details
Details for the file wagtail_metadata-0.4.0-py2.py3-none-any.whl
.
File metadata
- Download URL: wagtail_metadata-0.4.0-py2.py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92b421352eac99349323c2e8070296507b0704636068376813b9f476447193ba |
|
MD5 | 4c12d9938e727bcbeba3e6c70a825e45 |
|
BLAKE2b-256 | 6c7366da85ebadc65973c918541a6dd08e03c1127777fc153c018f84107b3724 |