Это именно то, к чему стремится концепция виджета. Виджеты - это расширенная функция, представленная в PS 1.7, которая расширяет функцию хуков.
Из документации :
С помощью виджетов разработчики модулей могут отображать контент везде, где
модуль просят сделать это. Когда модуль реализует виджеты в своем
код, он позволяет:
1 тема для вызова модуля напрямую с {widget name = "module_name"}
2 ядро для отката на него, если вызывается зарегистрированный хук, но его метод hook () не существует.
Перейдя по той же ссылке, вы можете сделать виджеты модуля совместимыми, а затем вызвать виджет в templates/catalog/product.tpl
в нужном вам месте.
В классической теме для 1.7.5.0 вы можете вызвать виджет в строке 98 непосредственно перед <div class="product-actions">
.
Надеюсь, это помогло.
Редактировать
Давайте предположим, что имя вашего модуля - «my_module», а имя настраиваемого хука - «myCustomHook». Вот как должен выглядеть класс модуля:
class MyModule extends Module implements WidgetInterface
{
public function __construct()
{
$this->name = 'my_module';
$this->version = '1.0.0';
$this->author = 'me';
$this->tab = 'front_office_features';
$this->need_instance = 0;
$this->bootstrap = true;
parent::__construct();
$this->description = ...
$this->displayName = ...
$this->confirmUninstall = ...
}
public function install()
{
if(!parent::install())
{
return false;
}
return true;
}
public function uninstall()
{
return(parent::uninstall());
}
public function renderWidget($hookName = null, array $configuration = [])
{
$this->smarty->assign($this->getWidgetVariables($hookName, $configuration));
return $this->display(__FILE__, 'views/templates/widget/my_template.tpl');
}
public function getWidgetVariables($hookName = null, array $configuration = [])
{
if($hookName === 'MyCustomHook')
{
$your_height_value, $your_iframe_value, $your_token_value... // Get the values depending on your logic
return [
'token' => $your_token_value;
'height' => $your_height_value;
'iframe' => $your__iframe_value;
];
}
}
В файле шаблона просто вызовите виджет как:
{widget module='my_module' hook='myCustomHook'}