Skip to main content

Auto-share Wagtail Pages on Social Medias

Project description

wagtail-social-share

Auto-share Wagtail Pages on Social Medias.

Supported Social Medias

  • Facebook
  • Twitter

Installation :package:

From PyPi repository:

pip install wagtail-social-share

From source code:

git clone https://github.com/spamz23/wagtail-social-share.git
virtualenv venv
pip install -r requirements.txt

How to use it?

This package is designed to be easily integrable and flexible! :fire:

Here's how you can get started in a few simple steps:

  1. Add wagtail_social_share to your INSTALLED_APPS inside Django settings:
INSTALLED_APPS = (
    # ...
    'wagtail_social_share',
)
  1. Marking a page as sharable:
from wagtail.core.models import Page

from wagtail_social_share.mixins import SocialMediaSharablePageMixin

class BlogPostPage(SocialMediaSharablePageMixin, Page):
    """
    Your custom Wagtail Page model.
    Just inherit the `SocialMediaSharablePageMixin` to
    make it automatically sharable.
    """
  1. Add some configuration settings (inside your Django configs):
# ...

WAGTAIL_SOCIAL_SHARE={
    # The social medias that the pages should be shared on
    "SHARE_ON":["Facebook", "Twitter"],

    # In case you use 'Facebook', you need the following two settings:
    "FACEBOOK_ACCESS_TOKEN": "xxxxxxxxxx", # Replace it with your facebook access token
    "FACEBOOK_APP_ID": "xxxxxxxxxx", # Replace it with your facebook app id

    # In case you use 'Twitter', you need the following four settings:
    "TWITTER_CONSUMER_KEY" : "xxxxxxxxxx", # Replace it with your Twitter Consumer Key
    "TWITTER_CONSUMER_SECRET" : "xxxxxxxxxx", # Replace it with your Twitter Consumer secret
    "TWITTER_TOKEN" : "xxxxxxxxxx", # Replace it with your Twitter Token
    "TWITTER_TOKEN_SECRET" : "xxxxxxxxxx", # Replace it with your Twitter Token Secret

    # Additional Options (Optional):
    "SHARE_IN_DEBUG" : False, # Whether to perform page sharing in DEBUG Mode (defaults to False)
}

That's all the basic configuration needed!

Extra details:

Customizing the shared content

wagtail_social_share provides you the ability to customize the content that will be shared. You just need to override the property share_content inside your Wagtail Page, like so:

from wagtail.core.models import Page

from wagtail_social_share.mixins import SocialMediaSharablePageMixin

class BlogPostPage(SocialMediaSharablePageMixin, Page):
    """
    `SocialMediaSharablePageMixin` uses a property called `share_content`,
    that will by default, return the `search_description` of a Wagtail Page.
    To provide a custom content to share for a page, you can simply override this property.
    """

    @property
    def share_content(self):
        """
        Provide your custom logic for the content.
        In this example we want to share the `title` of a page,
        instead of the `search_description`.
        """
        return self.title

Customizing the share URL

wagtail_social_share provides you the ability to customize the URL that will be shared. This is useful for example if you are using a headless Wagtail, therefore you don't know in advance what the URL will look like in the frontend. How to do this? Easy:

from wagtail.core.models import Page

from wagtail_social_share.mixins import SocialMediaSharablePageMixin

class BlogPostPage(SocialMediaSharablePageMixin, Page):
    """
    `SocialMediaSharablePageMixin` uses a property called `share_url`,
    that will by default, return the property `full_url` of a Wagtail Page.
    To provide a custom URL for a page, you can simply override this property.
    """

    @property
    def share_url(self):
        """
        Provide your custom logic for the URL.
        In this example we assume the URLs for the Blog Posts will be:
        'https://myawesomeblog.com/posts/{blog-post-slug}'
        """
        # Build the URL with the slug
        return "https://myawesomeblog.com/posts/" + self.slug

Exposing the share URL to the Wagtail API

wagtail_social_share provides you the ability to easily expose the share_url property to the Wagtail API. In case you are not familiar with the Wagtail API, please refeer to their documentation.

from wagtail.core.models import Page

from wagtail_social_share.mixins import SocialMediaSharablePageMixin

class BlogPostPage(SocialMediaSharablePageMixin, Page):
    """
    `SocialMediaSharablePageMixin` already provides its own
    `api_fields`. Thefore, you can just simply add them to yours.
    """

    # ... define your page fields

    api_fields = [
        # ... Define your own API Fields
    ] + SocialMediaSharablePageMixin.api_fields

Contributing

All pull requests are welcome! In which ways you can provide your awesome contribution?

Here's some ideas:

  • Adding new social medias;
  • Translating the messages (originally written in Portuguese);
  • Providing new features;
  • Refactor existing code;
  • Writing documentation. For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wagtail-social-share-0.1.4.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

wagtail_social_share-0.1.4-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file wagtail-social-share-0.1.4.tar.gz.

File metadata

  • Download URL: wagtail-social-share-0.1.4.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for wagtail-social-share-0.1.4.tar.gz
Algorithm Hash digest
SHA256 9f96676be47a96c3f0c23b42fc9b5bb3f3629b9feb9436d6c103fb856a65624b
MD5 042d94ec914eade479cc070257d7a600
BLAKE2b-256 916054ab41eef5697c9edb5073a3b4f0ba5b517eeaf003dfe2beb7964500f0da

See more details on using hashes here.

File details

Details for the file wagtail_social_share-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: wagtail_social_share-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for wagtail_social_share-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c5cb92c475fe025fc8aa36480dc13a87bb43f137d35945cab8ed0d2762a2b90e
MD5 269da4493c97a9b524309d62e287255e
BLAKE2b-256 9bcaf7a13b2f054aa7f4e2add488770ab1465e901d0002b165ecb9ee06367303

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page