The context
The project in question went well beyond simple management of an amateur or professional club. The magazine actually covers news about its sport, especially the amateur scene, offers a directory of all the clubs involved in France, their teams, covers Sunday match results in real time for certain games, by evening for others, provides rankings for all the leagues, clubs, top scorers, etc. Currently powered by the SportPress module on WordPress, it experiences numerous malfunctions and significant performance problems.
The publication, which employs about twenty staff members and a volunteer network, aims to become the go-to platform for French amateur football. Funded by advertising, its web project must also include an advanced management feature for advertisers, ads, and their performance.
Before considering migrating content, users, or designing UX and UI, we were consulted to see if the Drupal community offered any scalable or adaptable solutions.
Results management – The SportsLeague module
This was the heart of the project for us!
The module or distribution Sports League, available for Drupal 8 and not yet ported to Drupal 9, was the main focus of our research. It appears to be the only advanced development about this topic in the community. While it was contributed in 2017 and has been barely maintained since, we tried installing and analyzing it.
Maintained and shared by Hernâni Borges de Freitas (hernani), it seems to power a website aimed at supporters and fans of Benfica – https://serbenfiquista.com. The module promises:
- Player management;
- Transfer management;
- Club management;
- Team management;
- Competition management;
- Match management;
- Match summaries (or comments) management.
On paper, the module was a good starting point. In our case, it did too much in some areas, not enough in others. It risked being too focused on "club" use and insufficiently suited to news sites. This is somewhat the same issue as with SportsPress on WordPress, for that matter.
We quickly installed the module so we could test it, both functionally (in a workshop with the project team) and technically. We found that it took a lot of additional advanced configuration to make all the features accessible or understandable with the default deployment.
During our simulation setting up a match, it took us about twenty minutes to enter all the required match data. Without external import, the effort required makes it hard to use the module to administer a significant number of competitions.
The real question is whether:
- We could build on the SportsLeague suite of modules by modifying it, removing unnecessary configurations and features, adding new features needed for the project.
- We would do a custom development reusing some SportsLeague modules that fit (the module is itself split up into matches, competitions, players, etc.).
As we presented in the workshop, technically, what SportsLeague offers would not be very complicated to reproduce, just potentially time-consuming depending on the relationship structure to be modeled between the different entities. For example:

Our decision:
We proposed a dedicated development, as if we were starting from scratch.
Ad management
The site has so far used the Adrotate solution, which allows management of external html/js ads (such as AdSense) and internal ads (via image/link). We looked for a similar solution for Drupal to add management of grouped ads (several ads rotating in the same place). Desired formats:
- megabanner: 728*90;
- medium rectangle: 300*250;
- large rectangle: 300*600;
- skyscraper: 120*600;
- billboard: 970*250;
- desktop skin – resolution above 1200 px.
The SimpleAds solution on the site, while not functional as is during the workshop, is functionally equivalent to the AdRotate solution currently used on the WordPress site. We believe the “free” solution is deliberately harder to set up compared to the premium solution.
Our advice:
Use SimpleAds Premium.
Imports
Recap of the needs:
Migrate the contents of the WordPress site – all news (text + images + videos) and their taxonomies, information from the SportPress module.
We reaffirmed how important it is for the magazine to be able to import as many items as possible (e.g., match calendar) from CSV files.
Drupal is well equipped to bring in standard content from WordPress (posts, pages, users). But importing SportPress data will require special attention and specific development, which we decided to separate out.
Validation workflows
We noted the need for a simple internal validation process (draft → validation → publication). That said, the magazine’s editorial staff plan to eventually allow clubs to directly publish their content (teams, matches, clubs), in two steps:
- A testing phase where what the club submits must be validated;
- A trust phase where the club can publish directly.
This project is also an argument in favor of a custom solution instead of SportsLeague. In fact, Drupal natively allows this type of workflow for all content or a type of content (e.g., all teams)... However, here, it is necessary that each club can only edit its own information. This functionality is possible with a contributed module like Groups, but we are really not sure at this stage that SportsLeague supports it.
Conclusion
The SportsLeague module seems suitable if you have only one club or a limited number of teams to manage. In the case of a magazine handling a large number of competitions, teams, and players, it seems preferable to develop your own module, even if some elements of the contributed module are reusable, as they are well coded and documented.