Theme for multiple installations

How can I use a theme for multiple installations of OJS. I have two installations I would like to share the same theme without having to update both. In other words one change in a theme should be reflected in both installations, on the same server of course. I am using OJS

Thank you for your time.

I do not think that you can do it with OJS, but maybe you could sync the folders in linux somehow? (not an expert here, but linux - How to sync two folders with command line tools? - Unix & Linux Stack Exchange)

I am looking to change the path to the plugins directory from<ojs installation 1>/plugins<ojs installation 2>/plugins<ojs installation 3>/plugins
so that all installations can share the same plugins that I write.
Thank you.

To do that you would most likely need a lot of changes to the OJS core which would make upgrading extremely hard and would, in my opinion, beat the purpose you have: to minimize work.

I am not sure, but probably you could do something similar with Mojo: GitHub - marcbria/mojo: Multiple OJs Operations (aka. mojo) is a bash script to create multiple OJS (Open Journal Systems) installations and "rule them all".
The problem is that it does not support OJS3, or at least I think so. Have not used it myself though.

Okay I see.

I am happy with OJS having just two installations so its not that bad.

Can a Theme Plugin for OJS (3.0.2) be used as a theme for OMP (3.1)?


Hi @dave4math,

We haven’t specifically written OJS and OMP to share theme plugins, but there is enough underlying shared code that I suspect you could do this without much difficulty.

Alec Smecher
Public Knowledge Project Team

Of course you can do it. As @ajnyga explained, mojo is developed entirely over this idea.
(BTW, mojo not yet OJS 3 complient, but I’m working to make it run on 3 and with docker).

I short, you only need to create a symbolic link in your journal’s /plugins/themes/ and your changes will apply in both OJS.

I suggest trying this:

$ mkdir /whaterver/sharedTheme
$ ln -s /whatever/sharedTheme /journalpath1/plugins/themes/sharedTheme

(And the same for journal2)

Then, be sure your OJS recognizes the new plugin with:
$ cd /journalpath1
$ php tools/upgrade.php upgrade
(And the same for journal2)

Then, you only need to login into OJS, enable the new theme and change you journal’s appearance (step 5 in you configuration menu, I think).

Try it and report if you find problems.


If you do this (share plugins folder), you need to be sure you disable journal managers ability to install and remove plugins.

Imagine your journal’s manager deletes a plugin… it means the files are removed and the rest of ojs installations won’t be able to find the files and will crash. I learned this by the hard way. :slight_smile:

I think OJS 3 allows you to block install permissions to your journal’s manager. It was not possible in OJS 2.x and this is why I developed adminLocker.

Any way… I need to recognize that, after lots of years with a “symlinked” architecture (mojo), I’m thinking in moving to isolated journal approach based on docker. You will have much more flexibility and control.