Feature 'Others also read this'

I got this question from a (potential) customer:

…looking for the following solution:

A way to show which other articles / pages on the website also have been read by others when a visitor read an article on their website

Something like “Others also read this...” which shows (a collection) of other articles on that website.

In 'the days of the bots': Is there a way this can be done ?

1 Like

Automatically or redacted?

Latter is easy using relations.

First is more complex. After Elasticsearch is good at finding related text to a given text, I would use our collective.elastic.plone and configure an elastic proxy index or write a viewlet or tile to directly query Elasticsearch.

But there are probably more options.

In general, you would need to track the reading behavior of the others for finding really related articles...not trivial.

Also finding related content through fulltext search is usually a poor approach. Automatic classification of content, term extraction, AI....are the better approaches here.

I excluded this option in my solution. The problem is, once you analyze the reading behavior, you need a starting point, so one can dice or take different pathways, like sketched above. Once you show related articles people start reading them. So you'll amplify your first decision. Older articles get more reads than new ones, so even if you take the number of reads into account it gets biased. So one need to progressively down vote older ones, or takes reads by day or whatever metric may match. It is not complete impossible to get this right, but it is an expensive task for a questionable feature.


Thanks @jensens, I hadn't thought of this. This is slightly off topic but today I received this request: "We want our users to be able to sort the News folder on the date published, alphabetically or popularity". I was thinking of writing an adapter that gets page views from google analytics but you are correct, older items will generally have more views and therefore more "popular". I will need to use view counts for the last day or week.

How would you do that in a 'reliable manner', without counting the bots ?

Use an API of your trusted statistics service. Google or Matomo are good at filtering bots. I bet, other serious services s well.

1 Like


These are some techniques, from SEO related/Analytics to external servers.

1 Like

See https://github.com/castlecms/castle.cms/blob/master/docs/configuration.rst from caste.cms:

bin/content-popularity: if Google Analytics is set up, will get content statistics for popularity to help search ranking.

Many thanks @tmassman

Plone Foundation Code of Conduct