Preserve file names with sorl for better SEO

Reading Time : ~ .

We use sorl-thumbnail for scaling images by keeping the original one intact. Sorl proven to be a great tool for generating different sized images throughout the website.

I presume that you know how to use sorl-thumbnail. Here we see how to preserve filename.

Search Engines will give importance to image alt tag content but it definitely has some impact on relevant image file name too.

Sorl will generate random names for the thumbnails it will create and as of now, there is no default setting to preserve filename in generating thumbnails. It is possible to have the same name for different sized images as sorl will create thumbnails in random folders, so, there will be no conflict in names.

Here is the way to achieve that.

We must override the thumbnail backend. So provide

  THUMBNAIL_BACKEND=’SEOThumbnailBackend’

Now we should create the class that returns our custom filenames.

  # thumbnailname.py

  from sorl.thumbnail.base import ThumbnailBackend, EXTENSIONS
  from sorl.thumbnail.conf import settings
  from sorl.thumbnail.helpers import tokey, serialize
  import os.path

  class SEOThumbnailBackend(ThumbnailBackend):

      def _get_thumbnail_filename(self, source, geometry_string, options):
          """
          Computes the destination filename.
          """
          key = tokey(source.key, geometry_string, serialize(options))

          filename, _ext = os.path.splitext(os.path.basename(source.name))

          path = '%s/%s' % (key, filename)
          return '%s%s.%s' % (settings.THUMBNAIL_PREFIX, path, EXTENSIONS[options['format']])

It’s important to keep source key or else there will be an issue of different images with same names, so we should create a folder with source key and save the file with our custom name.

Example:

'micropyramid.png' is stored as THUMBNAIL_PREFIX/source_key/micropyramid.png.

    By Posted On
SENIOR DEVELOPER at MICROPYRAMID

Need any Help in your Project?Let's Talk

Latest Comments
Related Articles
Improving page speed score in Google Page Score test- PART2 Chaitanya Kattineni

In our previous blog post we got an idea of what are the things that Google's Page Speed Insights will take into count to give ...

Continue Reading...
Understanding django serializers with examples Vamsi Popuri

Serializers are used for “translating” Django models into other formats like xmi,json,yaml(YAML Ain’t a Markup Language)

from django.core import serializers
data = serializers.serialize("xml", SomeModel.objects.all())

Continue Reading...
Inclusion Tags Ashwin Kumar

Django’s template system comes with a wide variety of built-in tags and filters designed to address the presentation logic needs of your application. You can ...

Continue Reading...

Subscribe To our news letter

Subscribe to our news letter to receive latest blog posts into your inbox. Please fill your email address in the below form.
*We don't provide your email contact details to any third parties