henrik@chuchum.dk Posted November 10, 2017 Share Posted November 10, 2017 Hi All, I have a (very simple) module that hooks into actionGetExtraMailTemplateVars I'd like to be able to get some additional template_vars available dependent on template and other context available. So i created a module, it installs fine, the hook is registered (i can find it in the modules / hooks overview on the action hook: hookActionGetExtraMailTemplateVars) however it seems to be either not called, or not working as expected. (I added a log statement to the method, and i would expect to see that log statement in the logs) this is the code (the entire module.php file): <?php if (!defined('_PS_VERSION_')) { exit; } class ExtraEmailFields extends Module { //constructor public function __construct() { $this->name = 'extraemailfields'; $this->version = '1.0.0'; $this->author = 'Henrik Ohm Eriksen'; $this->need_instance = 0; $this->ps_versions_compliancy = array('min' => '1.5', 'max' => _PS_VERSION_); $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('ExtraEmailFields'); $this->description = $this->l('Extra Email Fields. Adds additional email merge fields based on available content in template and template selected. Developed by Henrik Ohm Eriksen.'); $this->confirmUninstall = $this->l('Are you sure you want to uninstall?'); } //installer public function install() { if (parent::install() == false) { return false; } $this->registerHook('hookActionGetExtraMailTemplateVars'); return true; } //uninstaller public function uninstall() { if (parent::uninstall() == false) { return false; } //Apparantly not neeeded $this->unregisterHook('hookActionGetExtraMailTemplateVars'); return true; } //Actual Hook Code public function hookActionGetExtraMailTemplateVars($params) { PrestaShopLogger::addLog('my_hook', 1); //Extract Context $template = $params['template']; $template_vars = $params['template_vars']; $extra_template_vars = $params['extra_template_vars']; $params['extra_template_vars']['{myVar1}'] = 'FOO_VAR1'; $params['extra_template_vars']['{myVar2}'] = 'FOO_VAR2'; $params['extra_template_vars']['{myVar3}'] = 'FOO_VAR3'; /*more code here temporarily commented out while troubleshooting*/ } } Anybody have an idea what I did wrong ? Regards Henrik Link to comment Share on other sites More sharing options...
bellini13 Posted November 10, 2017 Share Posted November 10, 2017 In PS v1.6, the hook is executed within the Mail class, and it should get executed every time a Mail is sent (there are no conditions). Hook::exec('actionGetExtraMailTemplateVars', array( 'template' => $template, 'template_vars' => $template_vars, 'extra_template_vars' => &$extra_template_vars, 'id_lang' => (int)$id_lang ), null, true); This statement in your module is wrong however. $this->registerHook('hookActionGetExtraMailTemplateVars'); The name of the hook is actionGetExtraMailTemplateVars, so you should register it like this... $this->registerHook('actionGetExtraMailTemplateVars'); After changing your code, use the module reset option in the back office which will uninstall and install your module again. Link to comment Share on other sites More sharing options...
TiaNex Shopping Posted November 15, 2017 Share Posted November 15, 2017 please try $this->registerHook('actionGetExtraMailTemplateVars'); Link to comment Share on other sites More sharing options...
henrik@chuchum.dk Posted November 16, 2017 Author Share Posted November 16, 2017 Thanks bellini13 and vicOffers for the solution.. (dont prefix the hook registration with hook) /OhmegaStar Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now