Warning. This is only my way. In fact, I am used with plugin to use local (batch) and global (e_shortcodes) together, so this can be simplified by using just one of them.
Real example:
Plugin name: pnews
Local shortcodes in shortcodes/batch folder
File name: pnews_shortcodes.php
Class name and definition:
class plugin_pnews_pnews_shortcodes extends news_shortcodes {}
Global e_shortcodes:
class pnews_shortcodes extends plugin_pnews_pnews_shortcodes {}
You can override existing shortcodes or add new ones. Plugin global ones you can override via theme shortcodes.
Using:
$sc = e107::getScBatch('pnews');
---
$sc->setVars($row);
$sc->setScVar('news_item', $row);
It really works. I can use in plugin template core news shortcodes, customized core news shortcodes, my local shortcodes and my global shortcodes.
Awesome. I was just looking at result and I couldn't believe.