Skip to content

Canoncial Url #211

Description

@aashutosh396

Description

I would like to request the addition of a canonical URL feature for articles and other content types in the Django Meta library. This feature would allow developers to specify a canonical URL for each article, which helps to avoid duplicate content issues and improve SEO.

Use cases

SEO Optimization: This feature will help websites that produce similar or duplicate content indicate the primary version to search engines, improving their search rankings and visibility.
Content Syndication: When content is shared across multiple platforms or websites, specifying a canonical URL will maintain the original source’s authority and prevent penalties for duplicate content.
Managing Multiple URLs: Websites with dynamic content or multiple ways to access the same resource can benefit from specifying a canonical URL to unify indexing by search engines.

Proposed solution

The proposed solution is to add a canonical_url field to the existing models in the Django Meta library. This field would allow developers to set a specific URL that represents the canonical version of an article or content. Additionally, this could be integrated into the metadata rendering in the template engine, automatically including the canonical URL in the section of the HTML.

Pass canonical_url in the _medata = {}. (As per model support)
and receive this in the head section

## Alternatives Manual Implementation: Currently, developers can manually add canonical tags in their templates, but this requires additional effort and can lead to inconsistencies.

pass in the get_schema and received as a context in the html and passed manually

class Post(ModelMeta, SEO, HitCountMixin):
...
_metadata = {
'title': 'title',
'description': 'description', # Assuming you want to use content for the description
'image': 'get_meta_image',
}

def get_schema(self):
    return {
        '@context': 'https://schema.org',
        '@type': 'Article',
        'url': self.get_absolute_url(),
        'headline': self.title,
        'image': self.get_meta_image(),
        'author': {
            '@type': 'Person',
            'name': self.get_author_name(),  # Call the method
        },
        'datePublished': self.created_at.isoformat(),
        'dateModified': self.updated_at.isoformat(),
        'description': self.description,  # You can adjust this as needed
        'canonical': self.get_absolute_url(),
    }

In base.html
{% if schema.canonical %}

{% endif %}

Additional information

Implementing this feature would align with SEO best practices and enhance the capabilities of the Django Meta library. It would also encourage more developers to adopt the library for effectively managing SEO-related metadata.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions