实现这一点的最佳方法是添加 Smarty 插件。根据你是使用主题还是插件来扩展,有两种方式:
主题:主题/前端/主题名称/_private/smarty/function。example .php
将 example 替换为您要在模板中调用的实际函数名称。
插入:
<?php
namespace PluginName\Components\CompilerPass;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
/**
* Class AddTemplatePluginDirCompilerPass
*/
class AddTemplatePluginDirCompilerPass implements CompilerPassInterface
{
/**
* You can modify the container here before it is dumped to PHP code.
*
* @param ContainerBuilder $container
*/
public function process(ContainerBuilder $container)
{
$template = $container->getDefinition('template');
$template->addMethodCall('addPluginsDir', ['directory/name']);
}
}
在插件 boostrap 类的 build 方法中注册 CompilerPass 类:
/**
* @param ContainerBuilder $container
*/
public function build(ContainerBuilder $container)
{
parent::build($container);
$container->addCompilerPass(new AddTemplatePluginDirCompilerPass());
}
学分并查看 shopware 5 开发人员文档
https://developers.shopware.com/designers-guide/smarty/#register-custom-smarty-plugins