Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Canoncial Url #211

Open
aashutosh396 opened this issue Oct 6, 2024 · 0 comments
Open

Canoncial Url #211

aashutosh396 opened this issue Oct 6, 2024 · 0 comments

Comments

@aashutosh396
Copy link

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.

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

No branches or pull requests

1 participant