As the developers of Open Journal Systems, Open Conference Systems, Open Harvester Systems, and Open Monograph Press, the PKP team are experts in helping journal managers and conference organizers make the most of their online publishing projects. PKP Publishing Services offers support for:

As a customer of PKP Publishing Services, you will not only receive direct, personalized support from the PKP Development Team, but will be contributing to the ongoing development of the PKP applications. All funds raised by PKP Publishing Services go directly toward enhancing our free, open source software. For more information, please contact us.

I want to create my own plugin, but I don't understand the OJS's plugin structure, for example I don't know against which Hook must I register my plugin.I have seen the register and callback functions but I need more informaton, can somebody help me?

Hooks are used by plugins as a notification tool and to override behaviors built into OJS and in the OJS technical reference manual there is an example to add an entry to the Journal Manager's list of functions, available by following the “Journal Manager” link from User Home.

is here where I don't know how to proceed, I wanna add a portion of code in the respective search tpl, when the “search” link is clicked, but I don't know against which hook I must register my new plugin. in the above example the HookRegistry class use the method register agains ('Templates::Manager::Index::ManagementPages'), to what correspond Templates and its "methods" (::Manager::Index::ManagementPages for the manager)?

I watched a hook list but I don't find the one that I need for the code to be added when the search link is clicked,how can I know for a "generic plugin" which hook must be called when? thanks

While we appreciate your interest in creating plugins, you also PM'd this question to me, and I'm guessing possibly to other members of the team. Please refrain from sending us unsolicited PM's. We'll get to this thread as soon as we can.

You have to be sure there is a hook being called wherever you want the plugin's code to be loaded. For instance, the Templates::Manager::Index::ManagementPages hook is called in templates/manager/index.tpl (using the 'call_hook' smarty function)--You can add this same call to the search template you're talking about and the relevant code should be loaded.

Thank you so so much, just to be clear, Can I name my plugins like I want?. For instance in my plugin's file ini.php, can I call the hoockregistry funtion like this:...function register($category, $path) { if (parent::register($category, $path)) { HookRegistry::register('mi_plugin', array(&$this, 'callback') );...And call the hook into the tpl which wll be modified, in my case advancedsearch.tpl as follows:....{call_hook name="mi_plugin"}...

Yes, I think so--I believe the way we usually write hook names is just to make it easier to tell what they are. You should be able to name them whatever you want, but you'll have to try it yourself to be sure

works. So I decided to change code line by line I check out when the hook stops working and I found that this happens when I change names of google analytics plugin classes. Interesting is thing that other hooks in other tpl files are still working, but only this one in article.tpl stops working. What is this? Is it magic?