I am looking for a way to display key journal performance metrics directly on our public journal homepage in OJS (we are using version 3.3.x).
Our goal is to achieve a similar look and feel to how major journals, like this one on Elsevier/ScienceDirect, present their statistics (e.g., Submission to first decision, Submission to decision after review, Submission to acceptance, Acceptance to online publication, Acceptance rate): https://www.sciencedirect.com/journal/obesity-research-and-clinical-practice
I also found another OJS journal that has successfully implemented something similar, displaying metrics like “Days to First Decision” and “Acceptance Rate”: https://jmaa.polije.ac.id
Could anyone provide guidance on how to accomplish this? Is there a specific plugin available, or would this require custom theme development to fetch and display these values?
Any help or pointers in the right direction would be fantastic.
For the OJS journal you mentioned, OJS does report on those statistics, but doesn’t display them on the homepage in that manner without customization from the user. it looks like this journal might be taking those internally reported stats, and displaying them using either a custom block manager, or through custom theming. If I had to guess, I would say it would be via a custom theme, with the data being derived from the usage statistics plugin. I don’t think this is dynamic though - they’ve just hard-coded their stats for the year into this section, and may have to update this year-after-year. Not 100% certain, but that would be my guess. Unless you’re familiar with custom theming, you may not wish to go that route, but you could, perhaps more easily put your reported stats on a custom block, using the custom block manager.
Your suggestion to look into custom theming or a custom block is very helpful. Digging deeper into the OJS core, I found the file PKPStatsEditorialService.inc.php, which seems to contain exactly the business logic needed to fetch these metrics, with functions like getOverview() and getAverageDaysToDecisions().
This leads me to a more specific technical question: What is the recommended way to call these service classes from within a theme or a custom block plugin?
For instance, if I were to modify our theme, how would I correctly instantiate the PKPStatsEditorialService within a template file (like indexJournal.tpl or a new custom template) to fetch and display the data? I’m trying to bridge the gap between the backend data service and the frontend presentation layer.
Any examples or guidance on the proper hook or method to fetch data from a service class like this for frontend display would be immensely helpful.
Thanks for response. Given what you’ve told me in the most recent response about what you’re hoping to do, I think these customizations would be more appropriate to theming - and creating a child theme in particular. I’m not a developer, nor a theme expert, so I don’t think I can speak directly to your code-specific problems, but some of the info you are seeking may be found within our theming guide: https://docs.pkp.sfu.ca/pkp-theming-guide/en/
As a first step, I’d encourage you to review that documentation, perhaps do a little experimentation in a sandbox or dev environment if you have access to one, and try out some of your customizations. If you get stuck or have further questions after having done this - @ me on here, and I’ll see if I can get a dev team member to assist you further.