Preserve file names with sorl for better SEO

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.

Posted On 21 September 2015 By MicroPyramid


Need any Help in your Project?Let's Talk

Latest Comments
Related Articles
How to create Custom User Model or Extend User Model in Django?

Django provides built in authentication which is good for most of the cases, but you may have needs that are being served with the existing ...

Continue Reading...
Querying with Django Q objects

Querying with Django Q objects: Q object encapsulates a SQL expression in a Python object that can be used in database-related operations. Using Q objects ...

Continue Reading...
Django Conditional Expressions in Queries

Reduce database queries in django with Conditional Expressions. By using Conditional Expressions we can use "If...Elif...Else" expressions while querying the database so that we can ...

Continue Reading...
open source packages

Subscribe To our news letter

Subscribe and Stay Updated about our Webinars, news and articles on Django, Python, Machine Learning, Amazon Web Services, DevOps, Salesforce, ReactJS, AngularJS, React Native.
* We don't provide your email contact details to any third parties